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.
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).
|
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.
|
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.
|
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.
|
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.
|
|