Samhain verfügt über viele verschiedene Log-Möglichkeiten, die teilweise erst durch entsprechende Optionen beim Übersetzten der Quellen verfügbar werden.
Jede unterstützte Log-Option lässt sich über die Konfigurationsdatei gesondert konfigurieren und ein- oder ausschalten.
Samhain unterstützt standardmäßig Email, Syslog, eine Logdatei (/var/log/samhain_log), und die Konsole (bzw. stderr, wenn Samhain nicht als Daemon läuft). Weiterhin ist es möglich, Log-Nachrichten an ein externes Skript oder ein Programm zu übergeben, und auf diese Weise beliebige weitere Log-Möglichkeiten zu realisieren.
Weitere Möglichkeiten sind:
- Logging zu einem Log-Server. Dies wird weiter unten in einem
eigenen Abschnitt näher beschrieben.
- Logging zu einem Prelude IDS-System. Hierzu muss die libprelude-Bibliothek installiert sein, und die Option --with-prelude muss bei ./configure angegeben werden, wenn die Quellen übersetzt werden. Der Sensor-Name, der beim Ausführen des Prelude-Programmes sensor-adduser (zum Anmelden eines Sensors) angegeben werden muss, lautet Samhain.
- Logging zu einer relationalen Datenbank (MySQL, PostgreSQL, Oracle). Hierzu muss die entsprechende Client-Bibliothek der Datenbank installiert sein, und die Option --with-database=mysql (oder postgresql, oracle) muss bei ./configure angegeben werden, wenn die Quellen übersetzt werden.
|
Jede der unterstützten Log-Möglichkeiten lässt sich individuell einstellen. Einerseits ist es möglich, eine Untergrenze anzugeben für die Dringlichkeitsstufe / den Level der Nachrichten, die man erhalten möchte. Je niedriger man diese Untergrenze angibt, desto ausführlicher ist das Logging. Andererseits ist es möglich, das Logging auf bestimmte Klassen von Ereignissen zu beschränken.
Die Reihenfolge der Levels ist:
debug |
nur zur Fehlersuche |
info |
detaillierte Informationen |
notice |
Informationen |
warn |
Warnungen |
mark |
Zeitmarken |
err |
Fehler |
crit |
kritische Probleme |
alert |
Start/Stopp des Programmes; Fehler, die zum Programmabbruch führen |
Der gewünschte Level wird eingestellt in der [Log]-Sektion der Konfigurationsdatei mit den Optionen der Form xxxSeverity = level:
/etc/samhainrc |
[Log]
# E-Mail
MailSeverity = crit
# Konsole
PrintSeverity = info
# Syslog
SyslogSeverity = err
# Logdatei
LogSeverity = err
#
# Log Server (optional)
# ExportSeverity = err
#
# Datenbank
# DatabaseSeverity = err
#
# Prelude
# PreludeSeverity = crit
|
|
Der Level einer Nachricht ist im Allgemeinen festgelegt. Die folgenden Nachrichten haben konfigurierbare Levels: Änderungen bei überwachten Dateien, Zugriffsfehler bei Dateien und Directories, Dateien mit ungültigen UIDs/GIDs oder seltsamen Dateinamen (nicht-druckbare Zeichen). Diese Levels werden konfiguriert in der [EventSeverity]-Sektion der Konfigurationsdatei:
/etc/samhainrc |
[EventSeverity]
#
# Überwachte Dateien (für die Bedeutung von 'ReadOnly',
# 'LogFiles', usw. siehe Abschnitt Konfiguration der Integritätseigenschaften
# innerhalb des Dateisystems).
#
SeverityReadOnly=crit
SeverityLogFiles=crit
SeverityGrowingLogs=warn
SeverityIgnoreNone=crit
SeverityIgnoreAll=info
#
# Zugriffsfehler für Dateien (Files) und Directories (Dirs)
#
SeverityFiles=err
SeverityDirs=err
#
# Dateinamen, ungültige UIDS/GIDs
#
SeverityNames=info
|
|
Die folgenden Ereignisklassen sind definiert:
EVENT |
Überwachte Ereignisse (z.B. Änderungen einer Datei) |
START |
Start/Stopp-Meldungen |
STAMP |
Zeitmarken |
LOGKEY |
Der Schlüssel zur Verifikation der Log-Datei (siehe Abschnitt Verifikation der lokalen Log-Datei) |
ERROR |
Fehlermeldungen |
OTHER |
Alles andere (z.B. detaillierte Informationen) |
AUD |
System-Aufrufe (für Fehlersuche) |
Standardmäßig sind alle Ereignisklassen für alle Log-Möglichkeiten zugelassen. Will man dies ändern, so geschieht dies in der [Log]-Sektion der Konfigurationsdatei mit Optionen der Form xxxClass = Liste der zugelassen Ereignisklassen, wobei in der Liste Leerzeichen zur Separation benutzt werden sollten, z. B.:
/etc/samhainrc |
[Log]
# E-Mail
MailClass = EVENTS ERROR LOGKEY
# Konsole
PrintClass = EVENTS ERROR STAMP
# Syslog
SyslogClass = START
# Logdatei
LogClass = EVENTS START STAMP ERROR OTHER
|
|
|
Möchte man eine unterstützte Log-Möglichkeit nicht benutzen, so kann man sie ausschalten, indem man den Level auf den speziellen Wert none (nichts) setzt, z. B. MailSeverity = none.
|
Einige Log-Möglichkeiten erfordern spezielle Optionen, die im Folgenden beschrieben werden.
Spezielle Optionen für Email werden in der [Misc]-Sektion der Konfigurationsdatei gesetzt:
/etc/samhainrc |
[Misc]
#
# Für Email ist die Angabe der Empfängeradresse notwendig mit:
SetMailAddress = xyz@example.com
#
# Ferner kann es notwendig sein, ein Relay anzugeben:
SetMailRelay = relay.example.com
#
# Nachrichten werden i.A. zunächst in eine Warteschlange gestellt, und
# dann in einer Email versendet. Die maximale Anzahl von Nachrichten
# in der Warteschlage ist konfigurierbar (Obergrenze: 128):
SetMailNum = 10
#
# Auch die maximale Zeitspanne (in Sekunden) bis zum Versenden der
# Nachrichten in der Warteschlange ist konfigurierbar:
SetMailTime = 86400
#
# Schließlich ist es möglich, die Subjekt-Zeile der Email zu bestimmen:
MailSubject = xyz
|
|
Für den Zugriff auf eine Datenbank ist es notwendig, die relevanten Informationen anzugeben. Dies geschieht in der [Database]-Sektion der Konfigurationsdatei:
/etc/samhainrc |
[Database]
#
# Zunächst wird der Name der Datenbank benötigt (standardmäßig 'samhain')
SetDBName = samhain
#
# Außerdem ist der Name der Log-Tabelle anzugeben:
SetDBTable = log
#
# Auf welchem Rechner läuft der Datenbank-Server ?
SetDBHost = localhost
#
# Für den Zugriff auf die Datenbank sind Benutzername und Passwort notwendig:
#
# Benutzername
SetDBUser = samhain
#
# Passwort (kein voreingestellter Standardwert)
SetDBPassword = ...
#
# Soll der Log-Server eigene Zeitstempel für erhaltene Nachrichten loggen ?
SetDBServerTstamp = True
#
# Soll eine ständige Verbindung zur Datenbank aufrecht erhalten werden ?
UsePersistent = True
|
|
|
|