Firewall - Teil 4
6.4.2 Logcheck
Auch Logcheck ist ein Programm aus dem Abacus-Sicherheitsprojekt.9
Logcheck überprüft die Systemlogs auf ungewöhnliche Aktivitäten. Es durchsucht die verschiedenen Logdateien unter dem Verzeichnis /var/log und informiert den Systemadministrator per Mail, wenn verdächtige Einträge gefunden wurden.
Logcheck bedient sich dazu mehrerer Konfigurationsdateien, die Schlüsselwörter enthalten. Dadurch unterscheidet Logcheck, was als harmloser Eintrag gilt und ignoriert werden kann, und welche Einträge auf einen Angriff oder einen verdächtigen Vorgang hinweisen und gemeldet werden müssen.
Logcheck besteht aus den folgenden Dateien:10
- Logcheck.sh
Dies ist das eigentliche Programm. Es kontrolliert die Logdateien mit einfachen grep-Kommandos auf die in den Konfigurationsdateien enthaltenen Schlüsselbegriffe.11 Das Programm wird in regelmäßigen Abständen von cron ausgeführt.12
- Logtail
Logtail merkt sich die zuletzt erreichten Positionen innerhalb der Logdateien. Dadurch wird vermieden, daß bereits überprüfte, ältere Einträge der Logs erneut untersucht werden. Sollte Logtail gelöscht werden, wird Logcheck sämtliche überwachte Dateien nochmals von Beginn an überprüfen.
- Logcheck.hacking
Diese Datei enthält Schlüsselbegriffe, die mit ziemlicher Sicherheit auf Angriffe auf das System hindeuten. Standardmäßig ist z.B. folgende Zeile enthalten:
tftpd.*: refused connect from .*
Hier wurde versucht, mit TFTP, Trivial File Transfer Protocol, auf den Computer zuzugreifen. Der Name von TFTP ist Programm: Es handelt sich um einen sehr unsicheren Netzwerkdienst. Ein blinder Versuch, mit diesem auf die Firewall zu verbinden, kann als eindeutiger Angriff gerechnet werden.13
Wird in den zu überprüfenden Logs eines dieser Schlüsselworte gefunden, erhält der Administrator eine Mail mit dem Header "ACTIVE SYSTEM ATTACK". Die Mail enthält die von Logcheck beanstandeten Logeinträge.
Logcheck.hacking sollten nur dann eigene Schlüsselbegriffe hinzugefügt werden, wenn bekannt ist, wie sich ein Angriff in den Logfiles niederschlägt. So führt z.B. ein Jolt Angriff14 zu folgendem Logeintrag:
kernel: Oversized packet received from <IP Adresse>
Ein kleiner Auszug aus logcheck.hacking:
LOGIN root REFUSED rlogind.*: Connection from .* on illegal port rshd.*: Connection from .* on illegal port sendmail.*: user .* attempted to run daemon uucico.*: refused connect from .* tftpd.*: refused connect from .* login.*: .*LOGIN FAILURE.* FROM .*root login.*: .*LOGIN FAILURE.* FROM .*guest login.*: .*LOGIN FAILURE.* FROM .*bin login.*: .*LOGIN FAILURE.* FROM .*uucp login.*: .*LOGIN FAILURE.* FROM .*adm login.*: .*LOGIN FAILURE.* FROM .*bbs login.*: .*LOGIN FAILURE.* FROM .*games login.*: .*LOGIN FAILURE.* FROM .*sync login.*: .*LOGIN FAILURE.* FROM .*oracle login.*: .*LOGIN FAILURE.* FROM .*sybase kernel: Oversized packet received from attackalert
- Logcheck.violation
In dieser Datei stehen Schlüsselbegriffe, die auf ungewöhnliche, nicht gern gesehene Vorgänge hinweisen, z.B. eine mißlungene Anmeldung eines Benutzers am System.
Ein Auszug aus logcheck.violations:
LOGIN FAILURE LOGIN REFUSED PERMITTED REFUSED RETR group RETR passwd RETR pwd.db ROOT LOGIN SITE EXEC VRFY "WIZ" admin alias database debug denied deny deny host expn failed
Logeinträge, die mit Schlüsselbegriffen dieser Datei übereinstimmen, werden mit dem Header "Security Violation" an den Administrator gesandt.
- Logcheck.violations.ignored
Die hier enthaltenen Wörter heben eine Alarmmeldung durch die Begriffe in logcheck.violations wieder auf.
Es ist beispielsweise möglich, daß in einem Logeintrag der Suchbegriff "refused" gefunden wurde. Logcheck meldet dem Administrator den Vorfall als Security Violation. Beim nährern Betrachten der Mail und der Logs stellt sich nun heraus, daß der Eintrag vollkommen harmlos ist, obwohl er das Wort "refused" enthält. Durch Eintrag dieses Logabschnitts in die Datei logcheck.violations.ignore wird das System angewiesen, entsprechende Logeinträge zukünftig nicht mehr als bedrohliche Vorfälle zu melden. Auf andere Einträge mit dem Inhalt "refused" hat es keine Auswirkungen.
- Logcheck.ignore
Dies ist das Sammelbecken für alle unbedenklichen Logeinträge, die nicht gemeldet werden sollen.
Auszug aus der Datei:
authsrv.*AUTHENTICATE cron.*CMD cron.*RELOAD cron.*STARTUP ftp-gw.*: exit host ftp-gw.*: permit host ftpd.*ANONYMOUS FTP LOGIN ftpd.*FTP LOGIN FROM ftpd.*retrieved ftpd.*stored http-gw.*: exit host http-gw.*: permit host mail.local named.*Lame delegation named.*Response from named.*answer queries named.*points to a Cname named.*reloading
Logcheck-Installation:
Die Installation von Logcheck gestaltet sich einfach. Die wichtigen Daten sollten in ein eigenes Verzeichnis kopiert werden, z.B. /usr/local/logcheck. Ein neuer Eintrag in /etc/crontab startet das Programm zu den eingestellten Zeiten.
00,15,30,45 * * * * /usr/local/logcheck/logcheck.sh
Logcheck wird alle 15 Minuten durch den cron-Daemon ausgeführt.