Vorsorge ist besser
Den Rechner gegen Angriffe absichern
Firewall-Meldungen analysiert
Nur die Firewall-Meldungen analysiert FWLogwatch [13]. Das Programm kann von seiner Homepage als RPM-Paket heruntergeladen werden, einige Distributionen liefern es von Haus aus mit.
FWLogwatch kennt drei verschiedene Modi (Zusammenfassung, Bericht und Echtzeitantwort), die der Anwender in der Konfigurationsdatei auswählt. Der Zusammenfassungsmodus erzeugt aus mehreren tausend Firewall-Protokolleinträgen in wenigen Sekunden eine Übersicht. So erhält der Anwender einen Überblick über die Situation seiner Firewall in den letzten Stunden und darüber, welche IP-Adressen die Firewall-Regeln am häufigsten verletzen.
Im Berichtsmodus generiert FWLogwatch für jeden Angriff automatisch eine E-Mail, die das Tool an den Administrator des "angreifenden" Rechners sendet, um ihn über das Unwesen zu informieren, das von seinem Computer bzw. seinem Netzwerk ausgeht. Häufig ist er selbst für den Angriff nicht verantwortlich, sondern selbst Opfer eines dritten Angreifers. Allerdings sollte man diesen Modus mit Vorsicht einsetzen.
Am interessantesten ist der Echtzeitmodus. Hier beobachtet FWLogwatch die Protokolle in Echtzeit und kann bei einem Angriff direkt eine E-Mail versenden. Zu diesem Zweck definiert der Administrator einen Schwellwert, bei dessen Überschreiten ein Skript aufgerufen wird. Eine Beispielkonfiguration in der Datei /etc/fwlogwatch.config zeigt Listing 5.
Listing 5
Konfiguration von FWLogwatch
realtime_response = yes parser = n run_as = fwloguser alert_threshold = 5 notify = yes notification_script = /usr/sbin/fwlw_notify server_status = yes bind_to = 192.168.0.1 listen_port = 8888 status_user = ralf status_password = gieOlzYkkk9sQ refresh = 10
Dabei aktiviert realtime_response = yes den Echtzeitmodus. Da FWLogwatch die Meldungen vieler verschiedener Firewall-Werkzeuge auswerten kann, wählt man den Netfilter/IPTables-Modus für die Linux-Kernel-Firewall mit parser = n aus.
Dank run_as = fwloguser läuft FWLogwatch mit den Rechten des weniger privilegierten Benutzers fwloguser. Dieser User muss natürlich existieren (also bei der Installation angelegt werden) und Leserechte für die Protokolldatei /var/log/messages besitzen.
alert_threshold definiert die Anzahl der Ereignisse, die eine Benachrichtigung auslösen. notify = yes und notification_script = ... veranlassen mit Hilfe des angegebenen Skripts (im Beispiel /usr/sbin/fwlw_notify) eine Nachricht an den Administrator.
Zusätzlich startet FWLogwatch im Echtzeitmodus einen Webserver (server_status = yes), der den Zugriff auf die aktuelle Situation der Firewall über die IP-Adresse 192.168.0.1 (bind_to) und den Port 8888 (listen_port) erlaubt (Abbildung 2). Dazu verbindet sich der Anwender mit einem Webbrowser mit http://192.168.0.1:8888 und meldet sich als Benutzer ralf (status_user) mit seinem Kennwort (status_password) an. Das Passwort kann mit dem Befehl htpasswd -n ralf erzeugt werden.
FWLogwatch sollte nun nach jedem Rechnerneustart zu Diensten stehen. Bei der Red-Hat-Distribution aktiviert man das Programm zum Beispiel mit dem Befehl
chkconfig fwlogwatch on
Manuell lässt sich FWLogwatch mit dem Befehl /etc/init.d/fwlogwatch start aufrufen.
Alle diese Vorsichtsmaßnahmen schützen jedoch nur vor aktiven Angriffen von außen. Häufig erfolgen Attacken aber über Trojaner und Viren, die der Angreifer mit Hilfe des Anwenders einschleust. So lockt der Angreifer arglose Benutzer auf eine bestimmte Webseite, auf der er ein neues Programm anbietet. Diese Software installiert gleichzeitig einen Trojaner, der anschließend die Verbindung zum Angreifer aufbaut.
Unter Linux ist das Einspielen derartiger Software zum Glück nur mit root-Privilegien möglich. Wenn der Linux-Administrator darauf achtet, nur Software aus vertrauenswürdigen Quellen zu installieren und nicht mit dem root-Konto im Internet zu kommunizieren, ist die Gefahr recht gering.
Allerdings schützt auch ein allzeit aktuell gehaltenes System nicht vor Attacken, die bislang nicht bekannte Sicherheitslücken ausnutzen. Daher kann es trotzdem immer noch zu Angriffen und erfolgreichen Einbrüchen kommen. In einer der nächsten Ausgaben zeigen wir, wie man Einbrechern auf die Schliche kommt und was im Falle eines Angriffs zu tun ist.
Der Autor
Ralf Spenneberg arbeitet als freier Unix/Linux-Trainer und Autor. Er veröffentlichte die Bücher "Intrusion Detection für Linux-Server" und "VPN mit Linux", entwickelte Kursunterlagen und bietet Inhouse-Schulungen an.
Glossar
Debian
Eine komplett von Freiwilligen erstellte, nichtkommerzielle und freie Linux-Distribution (http://www.debian.org/). Sie ist besonders bei erfahrenen Linuxern und solchen, die es werden wollen, beliebt.
Patch
Da es sich bei Linux und seinen Anwendungen in den meisten Fällen um freie Software handelt, die im Quelltext vorliegt, lassen sich Änderungen in Form von Patches verbreiten. Hierbei handelt es sich lediglich um die im Quelltext geänderten Code-Zeilen. Einen derartigen Patch (auch Diff-Datei genannt) erzeugt der diff-Befehl, der die alte und die geänderte Quelltextversion miteinander vergleicht und die Unterschiede anzeigt. Der Endanwender kann diesen Patch mit dem patch-Befehl auf seinen Quelltext anwenden und die Änderungen so einpflegen. Anschließend muss die Software meist neu kompiliert werden.
Cron-Daemon
Ein Service-Programm, das (so gestartet) im Hintergrund jede Minute nachschaut, ob es zum aktuellen Zeitpunkt Aufträge ausführen soll. Diese legt der Anwender oder root in sogenannten Cron-Tabellen ab [4].
TCP-Dienste
Netzwerkdienste, die zum Transport ihrer Informationen das TCP-Transportprotokoll einsetzen [15]. Das sind die meisten Internet-Dienste, da es die vollständige Übertragung aller Informationen in der richtigen Reihenfolge garantiert. Der Dienst muss sich nicht selbst darum kümmern. Dadurch entsteht natürlich ein größerer Verwaltungsaufwand auf Seiten des Netzwerkprotokolls. Zu den Diensten, die das TCP-Protokoll verwenden, zählen Webserver, Mailserver, FTP-Server, Telnet-Server etc.
UDP-Dienste
Netzwerkdienste, die zum Transport ihrer Informationen das UDP-Transportprotokoll einsetzen. Dieses garantiert weder die Übertragung der Informationen, noch deren richtige Reihenfolge. Daher wird UDP häufig von Diensten verwendet, die alle Informationen in einem einzigen Paket übertragen können, so dass die Reihenfolge unerheblich ist. Erhält eine Anwendung innerhalb einer bestimmten Zeit keine Antwort, so fordert sie sie einfach erneut an. Da sich das UDP-Protokoll nicht um diese Aufgaben kümmern muss, ist es relativ schlank und schnell. Typische Anwendungen, die das UDP-Protokoll verwenden, sind DNS-, Zeit- oder Streaming-Server.
Port
Da auf einem Linux-Rechner meist mehrere TCP- oder UDP-Dienste gleichzeitig laufen, muss das Betriebssystem bei der Weiterleitung der Daten zwischen ihnen unterscheiden können. Hierzu dient der Port. Jede Anwendung (Client oder Server) verwendet einen eindeutigen Port bei ihrer Kommunikation. Damit ein Zugriff auf einen Dienst möglich wird, sind die Portnummern vieler Dienste standardisiert und in der Datei /etc/services abgelegt. Dort lässt sich zum Beispiel nachlesen, dass ssh den Port 22 verwendet.
Infos
[1] Einbruch auf den Debian-Servern: http://www.debian.org/News/2003/20031121
[2] Bugtraq-Mailingliste: http://www.securityfocus.com/archive/1
[3] Full-Disclosure-Mailingliste: http://lists.netsys.com/mailman/listinfo/full-disclosure
[4] Cron: Jürgen Jentsch, "Pünktlich ausgeführt", LinuxUser 06/2002, S. 81 f., http://www.linux-user.de/ausgabe/2002/06/081-cron/cron-at-3.html
[5] Dienste beim Booten starten: Marc André Selig, "Wie Linux sich die Stiefel anzieht", LinuxUser 12/2002, S. 26 ff., http://www.linux-user.de/ausgabe/2002/12/026-init/
[6] Unnötige Systemdienste abschalten: Anthony Stone, "Abgehärtet", LinuxUser 07/2003, S. 28 ff.
[7] Firewall mit IPTables: Marc André Selig, "Private Feuerwände", LinuxUser 05/2002, S. 30 ff., https://www.linux-user.de/ausgabe/2002/05/030-firewall/firewall-4.html
[8] Netfilter/IPTables: http://www.netfilter.org/
[9] Firestarter u. a. Frontends für IPTables: Nico Lumma, "Grafische Firewall-Tools", LinuxUser 07/2003, S. 46 ff.
[10] Firestarter: http://firestarter.sf.net/
[11] Logwatch: http://www.logwatch.org/
[12] Logsurfer: http://www.cert.dfn.de/eng/logsurf/
[13] FWLogwatch: http://cert.uni-stuttgart.de/projects/fwlogwatch/
[14] Buch zum Thema: Ralf Spenneberg, "Intrusion Detection für Linux-Server", Markt+Technik 2002
[15] Netzwerkprotokolle und -Tools: Nico Lumma, "Der kleine Netzwerker", LinuxUser 04/2004, S. 36 ff.



