Linux Intrusion Detection System (LIDS)

Das Linux Intrusion Detection System (http://www.lids.org) wurde am 15. Oktober 1999 von Xie Hua Gang auf der Linux Kernel Mailinglist vorgestellt (http://lkml.org/lkml/1999/10/15/197). Nachdem es mehrere Jahre still um das Projekt geworden war, existiert seit dem 09. Mai 2007 eine neue Version für den Kernel 2.6.21.

LIDS besteht aus einem Kernel-Patch und Userspace-Werkzeugen (lidsadm und lidsconf). Mit dem Befehl lidsconf definiert der Administrator die Zugriffsrechte. Am einfachsten erklärt sich die Verwendung an einem einfachen Beispiel:

/sbin/lidsconf -A -R -o /sbin -j READONLY
/sbin/lidsconf -A -R -o /boot -j READONLY
/sbin/lidsconf -A -R -o /bin -j READONLY
/sbin/lidsconf -A -R -o /lib -j READONLY
/sbin/lidsconf -A -R -o /usr -j READONLY
/sbin/lidsconf -A -R -o /etc -j READONLY
/sbin/lidsconf -A -R -o /etc/lids -j DENY
/sbin/lidsconf -A -R -o /etc/shadow -j DENY
/sbin/lidsconf -A -o /var/log/wtmp -j WRITE
/sbin/lidsconf -A -s /bin/login -o /etc/shadow -j READONLY
/sbin/lidsconf -A -s /bin/su    -o /etc/shadow -j READONLY
/sbin/lidsconf -A -s /bin/login -o CAP_SETUID -j GRANT
Hiermit wird allen Benutzern (auch root) nur lesender Zugriff auf die Dateien in den Verzeichnissen /sbin, /boot, /bin, /lib, /usr und /etc gegeben. Die Datei /etc/shadow und sämtliche Dateien in /etc/lids dürfen von keinem Benutzer (auch nicht von root) gelesen werden. Lediglich die Befehle su und login erhalten Leserechte an der Datei /etc/shadow.

LIDS kennt kein Default-Deny bei dem Zugriff auf die Dateien. Sie müssen den Zugriff auf jede einzelne Datei mit dem Befehl lidsconf definieren. Da Sie hier aber auch ganze Verzeichnisbäume angeben können, hält sich die Anzahl der Regeln in Grenzen. Häufig werden nicht mehr als 100 Regeln für ein kleines Linux-System benötigt.

Mit dem Befehl lidsadm erfolgt die Administration. Zunächst können Sie hiermit LIDS aktivieren. Dies erfolgt normalerweise nach dem Start sämtlicher Dienste als letzter Schritt. Dadurch müssen die Regeln nicht alle Vorgänge berücksichtigen, die bei dem Boot erfolgen. Hier ist LIDS noch nicht aktiv. Dies reduziert die Anzahl der Regeln erheblich. Natürlich können Sie LIDS auch wieder deaktivieren. Hier bietet LIDS aber einige ganz interessante Funktionen. Sie können LIDS zum Beispiel nur für die Konsole deaktivieren, an der Sie gerade angemeldet sind. Das restliche System und alle Prozesse werden dann noch überwacht. Dies können Sie zusätzlich einschränken und die Deaktivierung über das Netzwerk verbieten.

Um die Erzeugung der Regeln zu vereinfachen, können Sie mit dem Befehl lidsadm auch einen Lernmodus (ACL Discovery Mode) aktivieren. LIDS protokolliert dann jeden Zugriff. Für die Analyse der Protokolle und die Erzeugung der benötigten Regeln steht ein Perl-Skript (lids_acl_discovery.pl) zur Verfügung.

Mit einem zusätzlichen Patch kann LIDS mit iptables auch die Netzwerkpakete analysieren und überwachen.

Ralf Spenneberg 2007-11-13