Open Source im professionellen Einsatz
Linux-Magazin 11/2005

IPtables-Firewall mit Userspace Logging Daemon ausstatten

Log-Hilfe

Normalerweise senden IPtables-Firewalls ihre Protokolle an den Syslog-Daemon. Doch bei größeren Datenmengen wird der Dienst zum Engpass für System und Admin. Dann helfen der Log-Daemon Ulogd und das Analysetool Nulog, beide verwenden eine MySQL-Datenbank für die Protokolle.

543

Spätestens seit Kernel 2.4 sind Linux-Firewalls [1] mindestens gleichwertig zu kommerziellen Produkten. Sie loggen vergleichbar ausführlich und exakt, oft sogar besser. Nur ist der einfache Syslog mit dieser Aufgabe schnell überfordert und manuell die »/var/log/messages« durchsuchen verschwendet Zeit (siehe den Artikel zur Log-Auswertung in diesem Heft). Netfilter-Projektleiter Harald Welte hat mit seinem Ulogd [2] daher einen leistungsfähigen und flexiblen, datenbankgestützten Syslog-Ersatz geschaffen, mit dem Linux auch beim Logging zur Spitzengruppe aufschließt.

Neues IPtables-Target

Statt Meldungen an das »LOG«-Target zu senden (Syslog) setzt der Admin in seinen »iptables«-Aufrufen »-j ULOG« ein. Der Kernel sendet die Logs dann über Netlink-Multicast-Sockets an das Userspace-Gegenstück namens Ulogd. Dieser flotte Daemon schreibt die Einträge zum Beispiel in Syslog-ähnliche Protokolldateien oder in eine Datenbank. Letzteres ist vor allem bei größeren Log-Mengen zu empfehlen. Außerdem ist das ULOG-Target mit Parametern einstellbar, um das Datenvolumen an die Leistung der Hardware anzupassen. Die Anleitung in [3] beschreibt diese Parameter.

Doch das Gespann funktioniert nur, wenn im Kernel der »ULOG target support« aktiviert ist. Die Option heißt in der Konfigurationsdatei »IP_NF_TARGET_ULOG«, in der grafischen »make xconfig«-Konfiguration versteckt sie sich recht gut im IPtables-Support (Abbildung 1). Zudem ist der Userspace-Daemon Ulogd [2] nötig. Er lässt sich schnell installieren:

./configure --with-mysql=/usr/lib/mysql
make
make install


Treten Probleme beim Übersetzen auf, fehlt meist das MySQL-Devel-Paket (also Header und Bibliotheken).

Nach der Installation liegt die Konfigurationsdatei in »/usr/local/etc/ulogd.conf« (Listing 1). Die meisten Einstellungen sind sinnvoll vorbelegt. Wichtig ist, die Plugins für die gewünschten Speichermethoden zu aktivieren. Das Beispiel schreibt Syslog-ähnliche Protokolldateien (»LOGEMU«, Zeile 2), Datenbankeinträge (»MYSQL«, Zeile 3) und Traceroute-ähnliche Dumps (»PCAP«, Zeile 4).

Jedes Plugin erhält eine eigene Konfigurationssektion. Während »[LOGEMU]« und »[PCAP]« nur einen Dateinamen brauchen sowie die Angabe, ob jeder Eintrag ohne Zwischenspeichern auf der Platte landen soll (»sync=1«), verlangt der Datenbank-Connect mehr Informationen (Zeilen 10 bis 15).

Für den ersten Start mit »/usr/local/sbin/ulogd -c /usr/local/etc/ulogd.conf« empfiehlt es sich, das MySQL-Plugin (Zeile 3) auszukommentieren, da Ulogd schnell mit einem Speicherzugriffsfehler abstürzt, wenn die MySQL-Konfiguration nicht passt. Folgender IPtables-Eintrag sendet erste Daten an Ulogd:

iptables --dst www.linux-magazin.de -A OUTPUT -j ULOG


Als Test genügt ein Ping-Aufruf: »ping -c3 www.linux-magazin.de«. Im Log sollten unverzüglich die ersten Einträge landen. Listing 2 zeigt, wie das beim Syslog-Emulationsmodus von Ulogd aussieht: Die Einträge in »/var/log/ulogd.syslogemu« protokollieren mit Datum, Uhrzeit und Hostnamen alle erforderlichen Infos. Zu sehen ist dort, dass der Host mit der IP-Adresse 10.1.1.2 das Ziel 62.245.157.216 über das Interface »wlan0« mittels ICMP-Typ 8 erreicht hat. Eleganter als diese Syslog-Nachahmung ist es allerdings, die Meldungen in einer MySQL-Datenbank zu protokollieren.

Integration mit MySQL

Um die Ulogd-Einträge aufzunehmen, braucht der MySQL-Server eine separate Datenbank und einen separaten User. Die Datenbank heißt laut Zeile 14 von Listing 1 »ulogd« und der User »ulog« (Zeile 13), das Passwort lautet »geheim« (Zeile 12). Die erforderlichen Tabellen erzeugt ein Skript, das dem Ulog-Analysetool Nulog [4] beiliegt. Es erzeugt nebenbei ein paar zusätzliche Tabellen und Indizes, um performanter zu arbeiten.

Abbildung 1: Im Kernel (hier 2.6.13) muss das ULOG-Target aktiviert sein. Die Option versteckt sich unter »Networking | Network Options | Network packet filtering | IP: Netfilter Configuration | IP tables support | ULOG target support«.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Nur fürs Protokoll

    Netfilter-Firewalls erzeugen sehr detaillierte Protokolle, die kaum jemand manuell auswerten will. Logfile- Analysetools wie IPtables Log Analyzer, Wallfire WFlogs und FWlogwatch helfen dem Admin dabei, den Überblick zu behalten und die relevanten Meldungen auszufiltern.

  • Aufmerksamer Wächter

    Aus Frankreich kommt mit NuFW ein Netfilter-Modul, das mit herkömmlichen Firewall-Prinzipien bricht: Statt einzelnen Rechnern Zugriffe zu erlauben sind NuFW-Regeln identitätsgesteuert. Vom Erfinder dieser Technik kommt die Firewall-Appliance Edenwall, die sich hier einem Test stellt.

  • Pedros Erdmöbel

    Einen Proxy, der viel zu tun hat, sollte kein Admin links liegen lassen. Der Squid-Logfile-Analysator mit dem endgültigen Namen Sarg verschafft hier den schnellen Durchblick.

  • Webfwlog erreicht Version 1.00

    Webfwlog ist Log-Analyzer und Reporting Tool für Firewalls in einem. Version 1.00 bringt einige Neuerungen mit.

comments powered by Disqus

Ausgabe 01/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.