Tripwire 2.3 Installation und Konfiguration
Bei Tripwire handelt es sich um ein klassisches Host-based Intrusion Detection System (IDS). Es überwacht die Eigenschaften von Dateien und Verzeichnissen, wodurch Änderungen an diesen sehr schnell erkannt werden. Der Einsatz mach also nur Sinn, wenn Datei selten geändert werden, da ansonsten ständig Fehlalarme verursacht werden. Da sich Konfigurationsdateien selten ändern, ist das Tool für die grundlegende Überwachung der Integrität eines Linuxsystems sehr gut geeignet.
Der Hersteller Tripware Inc. bietet neben dem Source Code für Linux (Version 2.3.47) auch eine kommerzielle Variante für alle Betriebssysteme mit einem erweiterten Funktionsumfang an.
Im folgenden wird die Installation und Konfiguration von Tripwire unter Linux beschrieben.
Installation
Denkbar einfach ist die Installation von Tripwire: als root die heruntergeladene Datei entpacken, install.cfg anpassen und install.sh ausführen. Während der Installation werden die wichtigen Key-Files automatisch erzeugt. Der Anwender hat nur die Wahl des Ablageortes - es sollte in jedem Fall ein read-only Medium sein.
An dieser Stelle sei auf die Wichtigkeit der Keyfiles (local- und site-key) hingewiesen:
Es ist von großer Wichtigkeit, daß die Konfigurationsdateien von Tripware vor unberechtigtem Zugriff geschützt werden. Gelingt es einem Angreifer dieses Dateien zu manipulieren, so kann er die Überwachung unterlaufen. Aus diesem Grund sind alle Konfigurationsdateien mit Hilfe der Public-Key Verschlüsselung signiert. Dazu werden zwei unterschiedliche Schlüssel verwendet um kritische Dateien zu schützen - einer oder gar beide werden zu Durchführung fast jeder Konfigurationsänderung in Tripware benötigt.
Der "site key" schützt Dateien, die auf verschiedenen Systemen genutzt werden können. Dazu gehören zum Beispiel die Policy- und die Konfigurationsdateien. Der "local key" schützt Dateien, die zu jeweiligen Maschine gehören, wie zum Beispiel die Tripware Datenbank.
Weitere Informationen zu den Schlüsseln sind in der twadmin (8) man page zu finden.
Konfiguration
Für die Konfiguration werden folgende beiden Dateien verwendet und mit einem Texteditor bearbeitet:
- twcfg.txt - Konfigurationsdatei von Tripwire
- twpol.txt - Datei enthält Definition der Überwachungsfunktionen
Beispielkonfiguration der Datei twcfg.txt
# Tripwire Executable
ROOT =/usr/local/sbin
POLFILE =/etc/tripwire/tw.pol
# Name der Datenbank
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
# Name des Reportfiles
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/Zentral58-local.key
EDITOR =/bin/vi
# verlange Key-Phrase so spät wie möglich (increase security)
LATEPROMPTING =true
# Änderungen an Dateien ziehen Veränderungen an Verzeichnissen nach sich
# diese "Doppel-Meldungen" vermeiden
LOOSEDIRECTORYCHECKING =true
# Mail auch bei keiner File-Verletzungen senden
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SMTP
SMTPHOST =emailserver.domain.com
SYSLOGREPORTING =false
Policy-Beispiele in Datei twpol.txt
# folgende Dateien/Verzeichnisse werden überwacht
# / wir rekursiv überprüft
/ -> $(ReadOnly);
# für /etc werden einige Ausnahmen gemacht
/etc -> +pinugtsdbCM-rlacSH;
# folgende Verzeichnisse/Dateien werden nicht überwacht
!/boot;
!/proc;
!/var;
!/root;
!/dev;
!/tmp;
!/etc/mtab;
!/etc/ntp.drift;
!/etc/ld.so.cache;
!/etc/snmpd.agentinfo;
!/etc/ssh_random_seed;
!/etc/mail/sendmail.st;
!/etc/named.conf;
Aktivierung von Tripwire
Um die zuvor gemachte Konfiguration zu aktivieren, muss das Config-File einmalig verschlüsselt werden:
~$: /usr/local/sbin/twadmin -m F -v -c /etc/tripwire/tw.cfg -S \
/etc/tripwire/site.key /etc/tripwire/twcfg.txt
Tripwire(R) 2.3.0.47 for Linux
Using plaintext config file: /etc/tripwire/twcfg.txt
Opening key file: /etc/tripwire/site.key
Opening key file: /etc/tripwire/site.key
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg
Als nächstes wird auch die Policy-Dateien mit dem "site key" verschlüsselt":
~$: /usr/local/sbin/twadmin -m P -v -c /etc/tripwire/tw.cfg -S \
/etc/tripwire/site.key /etc/tripwire/twpol.txt
Tripwire(R) 2.3.0.47 for Linux
Opening configuration file: /etc/tripwire/tw.cfg
This file is encrypted.
Opening key file: /etc/tripwire/site.key
Using plaintext policy file: /etc/tripwire/twpol.txt
Opening key file: /etc/tripwire/site.key
Please enter your site passphrase:
Wrote policy file: /etc/tripwire/tw.pol
Nun muß noch die Datenbank angelegt bzw. initialisiert werden:
~$: /usr/local/sbin/tripwire -m i -v -c /etc/tripwire/tw.cfg -S \
/etc/tripwire/site.key -p /etc/tripwire/tw.pol -L /etc/tripwire/hostname-local.key
Gerating Information for ....
Please enter your local passphrase:
Wrote database file: /var/lib/tripwire/tripwire.twd
The database was successfully generated.
Um zu überprüfen, ob sie auch erstellt wurde, kann im Verzeichnis /var/etc/tripware geschaut werden, ob es eine Datei namens hostname.twd gibt. Der Hostname wird als Synonym für den Namen des lokalen Computers verwendet.
/var/lib/tripwire # ls -al
insgesamt 994
drwxr-xr-x 3 root root 104 Sep 25 11:39 ./
drwxr-xr-x 36 root root 904 Sep 25 10:30 ../
-rw-r--r-- 1 root root 1015524 Sep 25 11:39 hostname.twd
drwxr-x--- 2 root root 48 Sep 25 10:30 report/
Als letzter Schritt wird ein Cronjob angelegt, der dafür sorgt, daß die Datenbank regelmäßig überprüft wird.
~$: cat /etc/crontab
# jede Nacht 1:00 FS auf Veränderungen überprüfen
0 1 * * * root /root/bin/chktwdb.sh
Veränderungen am Filesystem akzeptieren und Datenbank updaten
/usr/local/sbin/tripwire/report -m u -a -r latest_reportfile.twr
Please enter your local passphrase:
Wrote database file: /var/lib/tripwire/hostname.twd
Dabei haben die Schalter des "report" Befehls folgende Bedeutung:
m u update database
a update all, no promting (Achtung, Änderungen werden einfach übernommen!)
r specify reportfile
Zur Prüfung wird ein Shellscript namens "chktwdb.sh" verwendet. Der Aufbau und die Funktionen werden nachfolgend erläutert:
#!/bin/bash
# alte Reports löschen
/bin/rm /var/lib/tripwire/report/*
# Variablen deklarieren
NAME=$(hostname)
DATE=`/bin/date +%F` # aktuelles datum speichern
RECIPIENT="emergency@domain.com" # empfänger der mail
# anzahl der file-verletzungen
VIOLATIONS=`tripwire -m c -s|grep "Total violations found"|awk -F" " '{print $4}'`
# aktueller report-file (variable fuer mail-text benötigt)
LAST_REP=`ls /var/lib/tripwire/report|tail -n 1`
# wenn verletzungen groesser 0, mail senden
if [ $VIOLATIONS -gt 0 ]; then
/bin/cat </tmp/tw_report
Dies ist ein automatischer Tripwire Report. Die ueberwachten Daten auf $NAME
haben sich geaendert.
Um die Aenderungen in die Datenbank aufzunehmen, fuehren Sie als Root folgenden
Befehl aus:
~/# tripwire -m u -a -r /var/lib/tripwire/report/$LAST_REP
Dabei werden ALLE Änderungen, die im folgenden Report-File stehen, in die
Datenbank übernommen.
Die Report-Files befinden sich in /var/lib/tripwire/report
Um diese Meldung nach einer Aenderung am System zu vermeiden, führen Sie
folgende Befehle aus:
~/# tripwire -m c -s
~/# tripwire -m u -a -r /var/lib/tripwire/report/
Folgende Aenderungen im Dateisystem wurden am $DATE in Report $LAST_REP
festgestellt:
EOF
`twprint -m r -r /var/lib/tripwire/report/$LAST_REP >> /tmp/tw_report`
mail -s "TRIPWIRE ALERT: $NAME" -a /tmp/tw_report $RECIPIENT <
|