SelfLinux Sicherheit Samhain Abschnitt 6 | SelfLinux-0.13.0

| Samhain | Autor Formatierung GFDL

#### 6 Logging zu einem Log-Server (Yule)

Die meisten Programme zur Überwachung der Systemintegrität sind nur für einen einzelnen Rechner gedacht, und bieten von sich aus keine Unterstützung für die zentralisierte Überwachung mehrerer Rechner.

Samhain hingegen unterstützt (optional) sowohl zentralisiertes Logging als auch die zentrale Verwaltung. Konkret bedeutet dies:

- Samhain kann so konfiguriert werden, dass Log-Nachrichten an einen Log-Server geschickt werden. Der Log-Server wird Yule genannt. Dabei werden Log-Nachrichten in verschlüsselter und signierter Form über TCP übertragen. Alle Log-Möglichkeiten von Samhain (mit Ausnahme des Weiterschickens an einen weiteren Log-Server) stehen auch für den Log-Server zur Verfügung.
- Die Konfigurationsdatei von Samhain kann auf dem Log-Rechner liegen, und Samhain kann diese beim Start herunterladen.
- Die Datenbank mit den gespeicherten Eigenschaften von Dateien kann auf dem Log-Rechner liegen, und Samhain kann diese beim Start herunterladen.

Da die Log-Nachrichten von Samhain alle nötigen Informationen enthalten, um die Samhain-Datenbank zu aktualisieren, ist es möglich, die Pflege der Datenbank auf dem Server durchzuführen. Hierzu gibt es eine separate Anwendung namens Beltane.

#### 6.1 Übersetzen des Log-Servers (Yule)

Yule wird aus den gleichen Quellen übersetzt wie Samhain. Das configure-Skript muss hierbei jedoch mit der Option --enable-network=server aufgerufen werden; ansonsten erfolgt das Übersetzen und Installieren analog zu Samhain. Als Name des installierten Programmes wird standardmäßig Yule gesetzt.

Um Missverständnissen vorzubeugen: auch wenn Yule aus den gleichen Quellen übersetzt wird, ist es dennoch ein von Samhain verschiedenes Programm. Genausowenig wie Samhain als Log-Server dienen kann, kann Yule die Integrität des Systems überprüfen.

Alle Konfigurations-Optionen, die die Überprüfung des Systems betreffen, sind also irrelevant für Yule; Konfigurations-Optionen bezüglich des Loggings sind dagegen auch für Yule gültig (siehe aber auch den Abschnitt Besonderheiten beim Logging).

#### 6.2 Übersetzen von Samhain

Samhain kann nur Log-Nachrichten an Yule schicken, wenn es mit der hierfür nötigen Unterstützung übersetzt wurde. Dazu ist es notwendig, das configure-Skript mit der Option --enable-network=client aufzurufen.

Möchte man außerdem auch die Konfigurationsdatei und die Samhain-Datenbank vom Log-Server herunterladen, so sind die folgenden weiteren Optionen für configure notwendig:

- --with-logserver=a.b.c.d (wobei a.b.c.d die Adresse oder der Name des Log-Rechners ist),
- --with-config-file=REQ_FROM_SERVER/etc/samhainrc (das REQ_FROM_SERVER sagt Samhain, dass die Datei vom Server geholt werden soll), und
- --with-data-file=REQ_FROM_SERVER/var/lib/samhain/samhain_file.

Dabei ist folgendes zu beachten:

- Wird ein Pfad nach REQ_FROM_SERVER angegeben, so spielt dieser nur lokal eine Rolle. Samhain kann Yule nicht sagen, unter welchem Pfad die betreffende Datei auf dem Log-Server liegt.
- Bei --with-config-file ist der lokale Pfad optional. Er wird nur beim Initialisieren der Samhain-Datenbank genutzt, und auch dann nur, wenn das Herunterladen vom Server fehlschlägt (d. h. man kann die Datenbank initialisieren, auch wenn Yule noch nicht bereit ist).
- Bei --with-data-file ist der lokale Pfad zwingend notwendig, da beim Initialisieren der Datenbank diese in eine lokale Datei geschrieben wird. Es obliegt dem Benutzer, sie dann auf den Log-Rechner zu kopieren.

#### 6.3 Authentifizierung gegenüber Yule

Yule nimmt keine beliebigen Anfragen zum Herunterladen von Konfigurationsdateien oder Datenbanken entgegen. Ebenso nimmt Yule keine beliebigen Log-Nachrichten entgegen. Samhain muss sich zunächst authentifizieren, woraufhin Yule und Samhain einen Schlüssel vereinbaren, der für die weitere Kommunikation benutzt wird. Die Authentifizierung erfolgt über das Secure Remote Password (SRP) Protokoll.

Hierzu sind zwei Zutaten notwendig: Samhain muss ein gültiges Passwort kennen, und Yule muss das Passwort (das für jeden Rechner verschieden sein kann) verifizieren können.

Ein zufälliges Passwort lässt sich erzeugen mit:

root@linux # yule -G 5B5CDF18CE8D66A3

Dieses Passwort kann man nun in Samhain einbetten mit:

root@linux # ./samhain_setpwd samhain new 5B5CDF18CE8D66A3 INFO old password found INFO replaced: f7c312aaaa12c3f7 by: 5b5cdf18ce8d66a3 INFO finished

Das Hilfsprogramm samhain_setpwd wird erzeugt, wenn man Yule übersetzt. Es liest ein ausführbares Samhain-Programm (erstes Argument, also samhain), und schreibt eine Kopie mit dem gewünschten Suffix (zweites Argument, also new), in die das Passwort (drittes Argument) eingebettet ist.

Um das Passwort verifizieren zu können, braucht Yule in seiner Konfigurationsdatei (standardmäßig /etc/yulerc) einen entsprechenden Eintrag in der [Clients]-Sektion. Falls diese Sektion die letzte in der Konfigurationsdatei ist, kann dies einfach folgendermaßen geschehen:

root@linux # yule -P 5B5CDF18CE8D66A3 | sed s%HOSTNAME%client.example.com% >> /etc/yulerc tail -2 /etc/yulerc
[Clients]
Client=client.example.com@8A542F99C3514499@744C3A3EE8323470D9DAD42E2485BD0
B138F6B4116E964A9991A0B0D221E1AADE5800968804B99B494C39E7B9DD5710D18F1E6703
D1DB6D6393295E05DF6A6AA8D10BB4A21D7D9DC4901D444500D4EA358C1B44A3E3D44ACEC6
45F938F790A11AB0D03586143977E2BCE3A2D689445AC89134B409E68F34B0DE8BD8242ADD
7C0

Der Befehl yule -P passwort erzeugt eine einzige, sehr lange Zeile mit der notwendigen Verifikations-Information. Diese Zeile enthält die Zeichenkette HOSTNAME, die ersetzt werden muss durch den Namen des Rechners, auf dem Samhain läuft (dies geschieht hier mit dem sed-Befehl). Schließlich muss diese Zeile in die [Clients]-Sektion der Konfigurationsdatei von Yule eingetragen werden.

Für jeden Rechner, auf dem Samhain laufen soll, muss eine solcher Eintrag gemacht werden. Das jeweilige Passwort kann, muss aber nicht verschieden sein.

Ist Yule bereits gestartet, so muss mit kill das Signal SIGHUP an Yule geschickt werden, damit Änderungen der Konfigurationsdatei wirksam werden.

#### 6.4 Datenbank- und Konfigurationsdatei auf dem Log-Server

Wenn Samhain beim Start eine Anfrage an Yule macht, um die Datenbank- oder Konfigurationsdatei herunterzuladen, so sucht Yule die entsprechende Datei in seinem Datenverzeichnis (standardmäßig /var/lib/yule/). Wenn client.example.com der Name des Rechners ist, auf dem Samhain läuft, so muss

- die Konfigurationsdatei rc.client.example.com heißen, und
- die Datenbank file.client.example.com.

#### 6.5 Besonderheiten beim Logging

Standardmäßig loggt Yule alle Nachrichten von Samhain nur zu Log-Möglichkeiten, die für große Mengen von Daten geeignet sind (Konsole, Logdatei, aber nicht Email oder Syslog), wobei die gewählten Filter-Einstellungen ignoriert werden (d. h. wenn Samhain konfiguriert ist, eine bestimmte Nachricht an Yule zu schicken, wird Yule diese Nachricht auch tatsächlich loggen).

Um Nachrichten von Samhain durch Yule (nochmals) zu filtern und/oder Log-Möglichkeiten zu benutzen, die für große Datenmengen eher wenig geeignet sind, muss Yule so eingestellt werden, dass auch Nachrichten von Samhain den Filter-Einstellungen von Yule unterliegen.

Hierzu muss man in der [Misc]-Sektion die Optionen UseClientSeverity = yes und UseClientClass = yes setzen.