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: 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: Ä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: 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.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...