Intrusion Detection am Beispiel von Snort (Teil 3)
6.2.2 Output-Modules
Damit die erkannten Angriffe auch nach persönlichen Vorstellungen und Vorlieben mitgeteilt werden, stellt Snort sogenannte output modules bereit. So können quasi eigene actions definiert werden.
ruletype myAction { type alert output alert_smb: workstation.list output log_tcpdump: myAction.log }
ruletype <MyAction>
- bindet den Namen MyAction an die neudefinierte action.
type <Action>
- kategorisiert die neue action grob nach den uns schon bekannten actions (siehe 6.1.1).
output <Module>: <Options>
- Für jede eigene action lassen sich beliebig viele output modules angeben. Sie beschreiben, wie die jeweiligen Daten für die action wo abgelegt werden sollen21. Einen kleinen Überblick der verschiedenen Module und ihrer Optionen verschafft die folgende Tabelle.
Tabelle 2: Die Output-Module von Snort
Module | Optionen | Beschreibung |
---|---|---|
alert_fast | Filename | Schreibt einen kurzen 'Einzeiler' in Filename. |
alert_full | Filename | Schreibt den vollständigen Paketheader in Filename. Da das Modul einige Umformatierungen der Daten vornimmt, ist es eher langsam. |
alert_smb | Filename | Schickt eine kurze Nachricht an alle in Filename (pro Zeile ein NetBIOS-Name) angegebenen Rechner. Es ist zu beachten, dass dieses Modul den smbclient benutzt, um die Nachricht zu versenden. |
alert_unixsock | - | Kreiert einen Unix domain socket, den andere Programme abhören können, um die Ausgaben von Snort in Echtzeit zu analysieren. |
alert_syslog | FacilityPriorityOptions | Dieses Modul erlaubt das Logging über syslog. Die Facility gibt an, welche Art des Programms in das Systemlog schreibt, die Priority, wie kritisch die Meldung für den Betrieb des Systems ist. Genauere Erläuterungen finden sich in der manpage zu syslog. |
log_tcpdump | Filename | Schreibt Snorts Meldungen in die Datei Filename im tcpdump-Format, dies ist vor allem für die nachträgliche Analyse der Daten sehr hilfreich. |
xml | log | alert, Parameter List | Ermöglicht Snort, seine Daten in der Simple Network Markup Language (XML-formatiert) zu schreiben. Die Optionen der Parameter-Liste werden in Tabelle 3 erklärt. log oder alert assoziieren das output module mit der jeweiligen Action. |
database | log | alert, Database, Parameter List | Erlaubt Snort Einträge in die Datenbank Database, so dass diese dann der Datenpräsentation dienlich ist (siehe 3.3). Die Unterstützung für das jeweilige Datenbankformat muss in Snort mit einkompiliert werden (siehe Abschnitt 5). Eine detaillierte Erklärung der Parameter-Liste findet sich in Tabelle 4. log oder alert s.o. |
Die Parameter-Listen des Database- und XML-Moduls bestehen aus Space-separierten ( )
keyword=value-Paaren, mit denen die beiden Module konfiguriert werden. Die folgenden Tabellen geben Aufschluss über die bestehenden Möglichkeiten.
Tabelle 3: XML Parameter-Liste
Keyword | Value | Beschreibung |
---|---|---|
file | Filename | Wenn dies der einzige Parameter ist, so wird in dieses File geschrieben, andernfalls wenn im protocol http[s] angegeben ist, dient das File als Skript, welches auf dem entfernten Rechner ausgeführt wird. |
protocol | Legt das Protokoll für die Übertragung der Daten fest. | |
http | Sendet einen POST -Request an den Server. Der file -Parameter ist Voraussetzung. | |
https | Sendet den POST-Request via SSL. Der OpenSSL-Support muss allerdings mit einkompiliert worden sein. Voraussetzung sind hier die Parameter: file, cert, key. | |
tcp | Es wird eine einfache TCP-Verbindung hergestellt, port wird benötigt. | |
iap | Leider ist die Implementierung des Intrusion Alert Protocols noch nicht abgeschlossen, doch ist eine Unterstützung von Seiten Snort bereits vorgesehen. | |
host | IP-Address | Bestimmt die IP oder den Hostnamen des zu kontaktierenden Servers. |
port | 1-65535 | Definiert die Portnummer für die Verbindung. |
cert | Filename | Gibt die Datei, in der das Zertifikat des zu kontaktierenden Servers steht, an (PEM-formatiert). |
key | Filename | Gibt die Datei, in der der Private Key des Client-Rechners steht, an (PEM-formatiert). |
ca | Filename | Gibt die Datei, in der das Certification Authority Zertifikat zur Authentifizierung des Servers steht, an (PEM formatiert). |
server | Filename | Gibt die Datei, in der eine Liste der von Snort anerkannten Server steht. Dies dient der Authentifizierung der Server. |
sanitize | Network / Netmask | Verschleiert die IP-Adressen, um die Privatsphäre zu bewahren. |
encoding | Definiert die zu speichernde Datenrepräsentation. | |
hex | Schreibt die Daten als Hex-Strings, gut durchsuchbar, schlecht lesbar, doppelte Dateigröße. | |
base64 | Schreibt die Daten als base64-String, ohne Nachbearbeitung nicht durchsuch- oder lesbar, aber lediglich 1,3-fache Dateigröße. | |
ascii | Leider gehen bei dieser Repräsentation einige Informationen verloren, da der ASCII-Zeichensatz nicht alle Daten darstellen kann, dennoch ist bei guter Les- und Durchsuchbarkeit eine geringfügig größere Dateigröße zu base64 zu erwarten. | |
detail | Gibt die Menge der zu loggenden Informationen an. | |
full | Schreibt alle Headerinformationen (TCP, IP) und das Datensegment in den angegebenen Pfad. | |
fast | Es werden lediglich die wichtigsten Informationen, wie z.B Protokoll, IP-Adressen und Ports, Flags, Signatur und Zeitstempel protokolliert. |
Tabelle 4: Database Parameter-Liste
host | String | Der Host, auf dem der Datenbankserver läuft. |
port | Number | Der Port, unter dem der Datenbankserver auf dem Host erreichbar ist. |
dbname | String | Name der Datenbank, in die geschrieben werden soll. |
user | String | Name des Datenbankbenutzers, mit dem Snort seine Daten in die Datenbank eintragen soll. |
password | String | Passwort des oben erwähnten Datenbankbenutzers. |
sensor_name | String | Ein Name für dieses output module. Falls dieser Parameter ausgelassen wird, generiert Snort selbst einen. |
encoding | siehe Tabelle 3 XML Parameter Liste | |
detail | siehe Tabelle 3 XML Parameter Liste |