SelfLinux Sicherheit Grundlagen Sicherheit Abschnitt 11 | SelfLinux-0.13.0

| Grundlagen Sicherheit | Autoren Formatierung GFDL

#### 11 Einbruchserkennung (Intrusion Detection)

#### 11.1 Einführung Einbruchserkennung

Nachdem die bisher behandelten Schutzmaßnahmen getroffen wurden, gilt es nun, deren Effizienz kontinuierlich zu verbessern und Schwachstellen, Angriffsversuche oder gar erfolgreiche Einbrüche frühzeitig zu erkennen. Dabei helfen Einbruchserkennungssysteme (IDS), die entweder einzelne Rechner (Hostbasierte IDS) oder den Netzverkehr (Netzwerkbasierte IDS) überwachen. Das Ziel von IDS-Systemen besteht also im Aufdecken von unerlaubten Aktionen gegen ein Netzwerk oder einen Rechner. Normalerweise sind dazu die folgenden drei Schritte notwendig:

- Datensammlung
- Datenanalyse
- Ergebnisdarstellung

#### 11.2 Hostbasierte IDS (HIDS)

HIDS überwachen Daten und Prozesse auf einem einzelnen Rechner. Sie beobachten Logfiles, offene Netzwerkschnittstellen und Netzwerkverbindungen des Computers.

Eine Möglichkeit der Einbruchserkennung stellen die sogenannten System Integrity Verifier (SIV) dar, welche Dateien und Verzeichnisse anhand von Hashwerten auf deren Echtheit und Originalität prüfen. Damit können Trojaner, Viren und Root-Kits gefunden werden. Eine ganz einfachen SIV kann man mit dem ls-Kommando folgendermaßen selbst entwickeln:

Das Ausführen von

root@linux # ls -ailR /etc >/root/etc.orginal

erzeugt eine Datei, welche neben Dateigröße und Dateirechten auch die Nummer der Inode enthält. Diese Datei wird auf einem Medium mit Schreibschutzmöglichkeit (Diskette, CD-ROM) abgelegt.

Über Veränderungen informiert das folgende Kommando:

root@linux # ls -ailR /etc | diff /root/etc.original

wobei hier natürlich der Ablageort der Datei angepasst werden muss. Wichtig sind neben dem /etc Verzeichnis auch die mit dem t-Bit (Sticky-Attribut) versehen Dateien, die mit

root@linux # find / -type f -perm -6000 -exec /bin/ls -ail{} \; >/root/original

gesichert werden. Die Auswertung der Log-Files gehört ebenfalls zu den Maßnahmen, die man ohne Weiteres realisieren kann. Zur Übertragung dieser Protokollinformationen sollte man den sichereren ssyslog in Betracht ziehen. Da ein Angreifer natürlich auch eine Datei modifizieren kann ohne die Dateigröße zu ändern, sollten bessere Mechanismen wie beispielsweise Hashwerte zum Einsatz kommen. Diesen Ansatz verfolgen beispielsweise die md5-tools und debsums sowie das mittlerweile auch in einer freien Version (GPL) verfügbare Tripwire. Letztgenanntes bietet sehr feingranulare Zugriffsmechanismen. So kann man mit mehr als 15 Dateiattributen detaillierte Richtlinien festlegen, z.B. schützt man mit
/sbin/iptables -> $(SEC_KRIT);
/tmp -> $(SEC_INVARIANT)
den Paketfilter iptables vor jeglicher Manipulation und das temporäre Verzeichnis /tmp vor Änderung des Besitzers und der Zugriffsrechte. Solche Regeln sind bereits vordefiniert und müssen nur noch angepasst werden. Eine sehr gute Dokumentation findet man auf den Internet-Seiten des Linux Magazins.

Weiterhin sei an dieser Stelle auf LIDS (Linux Intrusion Detection System) verwiesen. LIDS versucht die Schwächen von Linux insbesondere die Allmacht des Superusers "root" zu beseitigen. Ein Kernel-Patch erweitert den Kernel um differenzierte Sicherheitseinstellungen, sodass Dateien, Prozesse und Teile der Systemverwaltung (Firewall-Regeln, Routing) besser geschützt werden können. Weitere Zugriffssteuerungsmodelle wurden in SELinux (Security Enhanced Linux) umgesetzt.

#### 11.3 Netzwerkbasierte IDS (NIDS)

NIDS erkennen Angriffe im Netzwerk indem sie den Netzwerkverkehr analysieren. Damit sind diese nicht nur auf den Rechner beschränkt, auf dem sie installiert wurden.

Einen Überblick über das schützende Netzwerk erlangt man durch den Einsatz von Netzwerkmonitoren und Paketsniffern, zu denen ntop und ethereal gehören. Als Vertreter für ein netzwerkbasiertes Einbruchserkennungssystem soll im Folgenden das freie snort kurz vorgestellt werden.

Snort sucht im Netzwerk nach bekannten Angriffsmerkmalen und -mustern. Diese Merkmale werden in Form von paketbeschreibenden Regellisten (Signaturen) angegeben und können von der snort Webseite heruntergeladen werden. Mit Modulen, den sogenannten Präprozessoren, kann man snort jederzeit erweitern. Eines dieser Module ist frag2, das Paketfragmente zusammensetzt und somit die Grundlage einer erfolgreichen Mustererkennung für zerstückelte Angriffsmuster bietet. Ein weiteres wichtiges Modul ist portscan, durch das Ausspähungsversuche sichtbar werden. Der Präprozessor spade (Statistical Packet Anomaly Detection Engine) ist ein selbstlernendes Modul, das nach einer Lernphase anormalen Netzwerkverkehr feststellen kann.

Ein entscheidendes Kriterium für den Erfolg eines NIDS ist die Platzierung des Sensors (z.B. des snort Systems). Dazu sollte man sich erst einmal ein Bild von der Topologie des Netzes machen. (Stern, Bus, Ring, ...) und die Stellen im Netz markieren, die überwacht werden sollen. Bei dem Einsatz eines Switch (Stern) ergeben sich unweigerlich Probleme bei der Überwachung, da der Verkehr nicht zwangsläufig über den Sensor geleitet wird. Abhilfe schaffen hier Monitor-Ports, die allerdings nur an teuren Geräten zu finden sind. Eine billigere Variante wäre ein HUB, an dem die zu überwachenden Rechner und das NIDS-System (snort-Rechner) angeschlossen werden.

#### 11.4 identd

Der identd Server beobachtet TCP-Verbindungen und ermittelt die Benutzerkennung des Prozesses, der die Verbindung benutzt. (Nähere Informationen RFC 1.1)

Mit diesen Informationen lassen sich Angriffe besser nachvollziehen und ausgenutzte Sicherheitslöcher besser lokalisieren. Allerdings dienen solche Informationen auch einem Angreifer, der damit z.B. die UID des Webservers abfragt. Läuft dieser Server mit root-Rechten, so ist er ein "lohnendes Ziel". Der Einsatz des identd sollte also immer genauestens abgewogen werden.