Home / LinuxUser / 2013 / 02 / Einbrüche erkennen mit dem IDS Tripwire

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Debian leicht gemacht
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Stiller Wächter

Einbrüche erkennen mit dem IDS Tripwire

Stolperdrähte spannen

Sind die Keys vorhanden und die Konfigurationsdatei im Klartext angepasst, dann geht es daran, die Stolperdrähte in Form von Policies auf dem Server aufzuspannen. In Tripwires Konfigurationsverzeichnis /etc/tripwire/ befindet sich mit hoher Wahrscheinlichkeit bereits eine kommentierte Datei twpol.txt mit Standard-Richtlinien: die Policy-Datei ("Polfile"). Da jedes System anders ist, können Sie nicht davon ausgehen, dass diese den Schutz bietet, den der individuelle Server benötigt. Die Datei dient vielmehr als gute Ausgangsbasis für eigene Anpassungen.

Die Policy-Datei ist recht übersichtlich aufgebaut. Es gibt einige Schlüsselwörter, sogenannte Direktiven, denen jeweils ein @@ vorangeht (siehe Tabelle "Direktiven"). Mit diesen Direktiven unterteilen Sie die Richtlinien in Bereiche mit spezifischen Bedingungen und individuellen Meldungen.

Direktiven

Direktive Beschreibung
@@section leitet Bereich im Polfile ein, OS-abhängig
@@ifhost Fallunterscheidungen, falls ein Polfile auf verschiedenen Hosts eingesetzt wird
@@else dito
@@endif dito
@@print gibt folgenden String auf der Standardausgabe aus
@@error gibt folgenden String auf der Fehlerausgabe aus
@@end Ende Polfile, alle folgenden Einträge werden ignoriert

Regeln im Polfile beginnen mit dem zu überwachendem Objekt (einer Datei oder einem Verzeichnis), gefolgt von ->, den zu überwachenden Eigenschaften ("Properties") und optionalen, in Klammern gesetzten Regelattributen. Häufig benötigte Properties haben die Entwickler bereits in einigen Variablen zusammengefasst. Daneben dürfen Sie eigene Variablen definieren, die Sie innerhalb der Datei mit $(Variable) aufrufen. Eine Regel erstreckt sich meist über eine Zeile und endet mit einem Semikolon. Regeln lassen sich zudem zu Gruppen zusammenfassen, wodurch sie sich später leichter verwalten lassen.

Tripwire kann zahlreiche Kriterien einer Datei im Blick behalten. Dazu gehören unter anderem Atime und Mtime, die von einem Objekt belegten Blöcke, die ID der Festplatte, die Inode-Nummer, die Dateigröße, UID und GID sowie die Rechte. Ferner lässt sich über die Properties das Hash-Verfahren auswählen. Einen Überblick über die wichtigsten Properties und die oben erwähnten vordefinierten Variablen gibt die Tabelle "Eigenschaften".

Eigenschaften

Property Beschreibung
a Atime
b vom Objekt belegte Blöcke
c Erstellungs- oder Modifizierungszeit des Inodes
d Device-ID
f Flags (betriebssystemabhängig)
g Group-ID des Besitzers
i Inode-Nummer
l wachsende Datei
m Mtime
n Anzahl der Links
p Dateirechte
s Dateigröße
u User-ID des Besitzers
A ACL-Einstellungen
C CRC-32-Prüfsumme
G Inode-Generation-Number
H HAVAL-Hash
M MD5-Hash
S SHA-Hash
Vordefinierte Variablen
ReadOnly entspricht +pinugsmdbfCMAG
Dynamic entspricht +pinugdfAG
Growing entspricht +pinugdlfAG
IgnoreAll prüft nur, ob ein Objekt existiert
IgnoreNone prüft alle Properties
Device entspricht +pugsdrfA

Die Regelattribute erlauben, die Regeln mit berichtsfreundlichen Namen zu versehen, die Schärfe einer Regel einzustellen, eine E-Mail-Adresse und ein auszuführendes Kommando für den Fall eines Angriffs anzugeben oder Wildcard-Muster für zu berücksichtigende Dateitypen festzulegen. Darüber hinaus können Sie die Tiefe der Rekursion anzugeben, mit der Tripwire die Inhalte eines Verzeichnisses berücksichtigt (siehe Tabelle "Regelattribute").

Regelattribute

Attribut Beschreibung
rulename Vergibt einen Namen für eine Regel, in der Vorgabe das letzte Element des Objektnamens.
severity Schärfe als Wert von 0 bis 1 000 000. Geben Sie die Severity bei der Integritätscheck an, prüft Tripwire nur Regeln ab diesem Level.
emailto E-Mail-Adresse des Administrators.
recurse Rekursionstiefe für Verzeichnisse. Mögliche Werte: True, False und Zahlen von -1 bis 1 000 000.
onviolation Führt bei Unstimmigkeiten das angegebene Kommando aus.
match Wildcard-Muster für Dateitypen, welche die Integritätsprüfung berücksichtigt.

anhand der E-Mail-Adressen informiert Tripwire bei einem Angriff gegebenenfalls verschiedene Verantwortliche, beispielsweise Webmaster bei geänderten PHP-Dateien und den Systemadministrator bei Auffälligkeiten in Verzeichnissen wie /etc oder /sbin. Dabei dürfen Sie mehrere Adressen durch Kommas getrennt angeben. Mit dem ausführenden Kommando (onviolation) lassen sich beispielsweise Dienste sicherheitshalber stoppen. Bei der Rekursion wirken -1 und True identisch: In beiden Fällen berücksichtigt Tripwire den gesamten Inhalt eines Verzeichnisses. Bei 0 oder False dagegen prüft es nur den Inode des Verzeichnisses. Eine 1 würde bedeuten, dass Tripwire auch die in einem Verzeichnis enthaltenen Dateien auf ihre Integrität prüft, aber die Inhalte in Unterverzeichnissen fallen bereits hinten runter.

Um eine besondere Art von Regeln handelt es sich bei den Stop-Points, die Sie in der Form !Objekt; definieren. Dabei handelt es sich um Verzeichnisse oder Dateien, die Tripwire nicht prüfen soll. Mit Stop-Points lassen sich auch innerhalb eines zu prüfenden Verzeichnisses Ausnahmen festlegen.

Jeder Server bedarf individueller Schutzmaßnahmen, sodass Sie das Policy-File für jeden Rechner entsprechend anpassen müssen. Die Default-Policy-Datei bietet immerhin bereits einen Mindestschutz, der sich auf die Verzeichnisse /boot, /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /usr/lib, /usr/local/lib und /etc erstreckt.

Listing 2 zeigt eine Erweiterung mit Regeln, die den Schutz auf 64-Bit-Bibliotheken und eine Nginx-Installation im Verzeichnis /opt ausweiten. Die Regel für die 64-Bit-Libraries zeigt auch, wie sich mehrere Objekte gruppieren lassen. Über die hinterlegten E-Mail-Adressen erhalten die Verantwortlichen mehr oder weniger erfreuliche Mails.

Listing 2

(
  rulename = "64 Bit Libs",
  severity = 100,
  emailto = "falko@mail.de";"chef@mail.de"
)
{
  /lib64 -> $(ReadOnly) ;
  /usr/lib64 -> $(ReadOnly) ;
}
/opt/nginx -> $(ReadOnly) (rulename = "Nginx", severity = 100, emailto = "falko@mail.de") ;

Haben Sie die Konfigurations- und Policy-Dateien erstellt, gilt es diese zu verschlüsseln, bevor Sie die Tripwire-Datenbank initialisieren können. Das erledigen Sie auf der Kommandozeile mit den Befehlen aus Listing 3. Anschließend liegen beide Dateien in einer Form vor, in der sie nicht mehr ohne weiteres lesbar sind. Die Klartext-Dateien sollten Sie entfernen, nachdem Sie die Tripwire-Datenbank erfolgreich angelegt haben. Falls Sie später einmal einen Blick darauf werfen möchten, genügt dazu der Befehl twadmin --print-polfile beziehungsweise twadmin --print-cfg-file.

Listing 3

twadmin --create-cfgfile --cfgfile tw.cfg --site-keyfile site.key twcfg.txt
twadmin --create-polfile --polfile tw.pol --cfgfile tw.cfg --site-keyfile site.key twpol.txt

Die Tripwire-Datenbank legen Sie mit dem Befehl tripwire --init. Sie findet sich anschließend standardmäßig als Datei mit der Endung .twd im Verzeichnis /var/lib/tripwire/ wieder. Eventuell meldet Tripwire beim Anlegen ein paar Fehler, weil die Policy-Datei ungültige Einträge enthält, wie etwa nicht vorhandene Dateien. In dem Fall passen Sie die Policy-Datei an und generiert sie neu, bis Tripwire die Datenbank ohne Gemecker erstellt.

Prüfen und berichten

Bevor Sie Tripwire jetzt munter in einen Cronjob verpacken und auf möglichst wenig unangenehme Post vom IDS hoffen, sollten Sie erst einmal testen, ob Tripwire anstandslos E-Mails versendet. Dazu rufen Sie es folgendermaßen auf:

# tripwire --test --email adresse@tld.de

Passt alles, fahren Sie anschließend mit tripwire --check den ersten richtigen Integrationscheck (Abbildung 2). Tripwire gibt die Berichte in Kurzform auf der Konsole aus und schreibt sie parallel dazu etwas ausführlicher in die Datei Hostname-Zeitstempel.twr im Verzeichnis /var/lib/tripwire/report/ . Soll es diese auch gleich per E-Mail versenden, gilt es zusätzlich den Schalter --email-report anzugeben. Die Berichte landen dann bei den in den jeweiligen Regeln im Policy-File hinterlegten Empfängern.

Abbildung 2

Abbildung 2: Tripwire gibt beim Integritätscheck eine kurze Zusammenfassung auf der Standardausgabe aus. Die zugehörigen Berichte fallen meist detaillierter aus.

Hin und wieder soll es vorkommen, dass ein Admin die ein oder andere Kleinigkeit am System ändert. Da Tripwire nicht weiß, dass es sich um erlaubte Modifikationen handelt, führt das unter Umständen dazu, dass die Berichte vor Regelverletzungen nur so strotzen. Damit das nicht so bleibt, passen Sie die Tripwire-Datenbank schnell auf Basis des Berichts an. Dazu öffnet das Kommando

# tripwire --update -twrfile /var/lib/tripwire/report/${HOSTNAME}-Zeitstempel.twr<C>

einen Editor, der alle Regelverstöße auflistet (Abbildung 3). Alternativ kann Tripwire mit tripwire --check --interactive Änderungen auch sofort übernehmen.

Abbildung 3

Abbildung 3: Änderungen, die nachvollziehbar und erlaubt sind, lassen sich fix in die Tripwire-Datenbank übernehmen.

Tut der Admin sein Einverständnis durch Nichtstun kund, passt Tripwire die Datenbank entsprechend an, die Meldungen treten bei zukünftigen Prüfungen nicht mehr auf. Bei nicht genehmigten Regelverletzungen, die Tripwirebei jeder Prüfung wieder vorlegen soll, entfernen Sie lediglich das Kreuzchen in der zugehörigen Checkbox.

Möchten Sie einen Blick in die Tripwire-Datenbank werfen, klappt das mit dem Befehl twprint --print-dbfile. Ähnlich funktioniert das für eine binäre Berichtsdatei (Abbildung 4) mit dem Kommando

# twprint --print-report --twrfile /var/lib/tripwire/report/${HOSTNAME}-Zeitstempel.twr<C>
Abbildung 4

Abbildung 4: Der Tripwire-Report zeigt recht ausführlich, wo es Unstimmigkeiten gibt.

Laufen alle manuellen Checks zufriedenstellend, delegieren Sie die Integritätsprüfung an einen Cronjob. Dazu öffnen Sie als Root mit crontab -e die Crontabelle geöffnet und fügen beispielsweise folgende Zeile ein:

00 5 * * * /usr/sbin/tripwire --check --email-report

Damit weiß das System, dass es künftig täglich um 5:00 Uhr einen Check vornehmen und per Mail berichten soll.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...