Für LUGS, von Igor Krummenacher Snort und Base Referenzsystem ist ein Debian sarge mit 2.6er Kernel. Snort wird in der Version 2.3.2 und Base in der Version 1.1.2 installiert. Als Datenbank wird MySQL 4.0.24 verwendet. Snort installieren Snort benötigt die libpcap Bibliothek, um Pakete direkt von der Netzwerkkarte holen zu können. Wenn die Programme Ethereal oder Tcpdump auf dem Rechner installiert sind, so ist auch libpcap bereits installiert. Die letzte stabile Version ist libpcap0.8.3 und kann von der Seite www.tcpdump.org heruntergeladen werden. Wer Die Installation gestaltet sich sehr einfach (als root durchführen): # # # # # wget http://www.tcpdump.org/release/libpcap-0.8.3.tar.gz tar xzvf libpcap-0.8.3.tar.gz cd libpcap-0.8.3 make make install Die aktuellste Version von Snort ist unter www.snort.org zu finden. Zum Zeitpunkt der Entstehung dieses Dokuments ist Snort in der Version 2.3.2 aktuell. Base liest die Logs aus einer Datenbank aus (MySQL, PostreSQL, Oracle und MSSQL) und deshalb muss Snort in der Lage sein, in eine dieser Datenbank zu loggen. Da wir Snort selber kompilieren, müssen nebst der Datenbank auch die Development-Dateien installiert werden. Mit Debian Linux gestaltet sich das sehr einfach: # apt-get install mysql-server Die folgenden NEUEN Pakete werden installiert: gawk libdbd-mysql-perl libmysqlclient12 mysql-client mysql-common mysql-server 0 aktualisiert, 6 neu installiert, 0 zu entfernen und 131 nicht aktualisiert. # apt-get install libsqlplus-dev Die folgenden NEUEN Pakete werden installiert: libmysqlclient12-dev libsqlplus-dev libsqlplus1 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 131 nicht aktualisiert. Nun kann Snort mit MySQL Unterstützung kompiliert und installiert werden: # # # # # # wget http://www.snort.org/dl/current/snort-2.3.2.tar.gz tar xzvf snort-2.3.2.tar.gz cd snort-2.3.2/ ./configure --with-mysql make make install Snort kann jetzt bereits als Sniffer verwendet werden: # snort -v -i eth0 Um Snort als IDS einzusetzen müssen zuerst die Regeln und das Config-File besorgt werden. Ein IDS ohne die entsprechenden Regeln, vor allem ohne aktuelle Regeln, ist so gut wie nutzlos. Auf der Homepage von Snort stehen Regeln zum Download bereit. Allerdings hat sich Anfangs 2005 das Lizenzierungsmodell geändert. Es gibt nun verschiedene Arten von Regelsätzen: Art Community Rules Eigenschaften - von der Community entwickelt - stehen unter GPL - Basistests durch Sourcefire VRT Certified Rules - Kostenlos Registered user release - VRT-Lizenz - Registration notwendig - Regeln mit 5 Tagen Verspätung - Von Sourcefire getestet & erprobt VRT Certified Rules - 1795 $ pro Jahr - Regeln in Echtzeit Subscriber release - VRT-Lizenz - Von Sourcefire getestet & erprobt Snort Release Mit jedem Release von Snort werden die aktuellen VRT Rules mitgeliefert Zusätzliche freie Regeln sind auf der Seite www.bleedingsnort.com zu finden. Im Verzeichnis rules/ des Snort-Tarballs finden sich die zum Release gehörigen VRT Rules. Das Snort Config-File findet sich im etc/ Verzeichnis des Tarballs. Will man diese nicht verwenden, so kann man die aktuelleren Regeln über www.snort.org beziehen. Für das Logging wird das Verzeichnis /var/log/snort erstellt. Wir wollen die Regeln und die Config zentral ablegen. Deshalb wird das Verzeichnis /etc/snort erstellt. In dieses Verzeichnis wird der Rules-Ordner kopiert. Das Configfile snort.conf und die Datei unicode.map werden im Rules-Ordner abgelegt. Wir befinden uns noch immer im Snort Verzeichnis. # # # # # # # mkdir /var/log/snort mkdir /etc/snort cp -r rules/ /etc/snort cp etc/snort.conf /etc/snort/rules cp etc/unicode.map /etc/snort/rules cp etc/reference.config /etc/snort/rules cp etc/classification.config /etc/snort/rules Nun kann Snort bereits als NIDS verwendet werden, indem man es mit der Angabe des Configfiles startet. Die Konfiguration ist allerdings noch nicht an die eigene Infrastruktur angepasst und das Logging erfolgt noch ohne Datenbank. Die Aufzeichnungen sind im vorher angelegten Log-Verzeichnis zu finden. # snort -i eth0 -c /etc/snort/rules/snort.conf In der Standardkonfiguration des Configfiles sind die Variablen HOME_NET und EXTERNAL_NET auf any und die Dienste auf ihre Standardports gesetzt. Es wird also noch zu viel Verkehr analysiert. Wenn man Snort zusammn mit graphischen Auswertungswerkzeugen benutzen will, kommt man in den meisten Fällen nicht um eine Datenbank herum. Als nächstes wird deshalb die Datenbank für Snort vorbereitet. Dazu wird die Datenbank erst einmal gestartet: # /etc/init.d/mysql start Wichtig ist, dass als erstes das Passwort gesetzt wird, da bis anhin keines existiert. # mysql -u root # mysql> set password for 'root'@'localhost' = password('password'); Eine Datenbank für Snort wird erstellt. mysql> create database snort; mysql> exit; Die Tabellen müssen nicht umständlich von Hand erstellt werden. Im Verzeichnis schemas/ findet sich das Skript create_mysql, welches sämtliche Tabellen automatisch erstellt. Dieses ist wie folgt auszuführen: # # # # # cd schemas mysql -u root -p snort <create_mysql mysql -u root -p mysql> use snort; mysql> grant INSERT, SELECT, DELETE, UPDATE on snort.* to root@localhost; Die Tabellen können anschliessend mit folgendem Befehl angezeigt werden: # mysql> show tables; +---------------------+ | Tables_in_snort | +---------------------+ | data | | detail | | encoding | | event | | icmphdr | | iphdr | | opt | | reference | | reference_system | | schema | | sensor | | sig_class | | sig_reference | | signature | | tcphdr | | udphdr | +---------------------+ 16 rows in set (0.00 sec) Nun muss das Configfile noch angepasst werden, damit Snort auf die Datenbank zugreifen kann. Die erste (auskommentierte) Zeile dient dabei als Ausgangspunkt, damit die richtige Stelle im Configfile schneller gefunden werden kann: # output database: log, mysql, user=root password=test dbname=db host=localhost output database: log, mysql, user=root password=password dbname=snort host=localhost Wenn sich der Datenbankserver nicht auf dem selben Rechner befindet wie Snort, so muss dementsprechend der Parameter „host“ mit der IP der Datenbank angepasst werden. Installation von BASE BASE benötigt folgende Komponenten, um korrekt zu funktionieren: • Eine Datenbank (MySQL, PostgreSQL, Oracle oder MS SQL Server 2000) • Ein Programm, das in die DB schreibt (Snort oder Logsnorter) • Apache mit PHP, PEAR und Unterstützung für GD und MySQL (als Extensions in php.ini) • GD (Bildmanipulationsbibliothek), benötigt libpng, libjpeg62 und zlib • ADODB (PHP Datenbankabstraktionsschichts-Bibliothek) Wir gehen davon aus, dass diese Bedingungen erfüllt sind. BASE wird http://sourceforge.net/projects/secureideas/ heruntergeladen und entpackt. # tar zxvf base-1.1.2.tar.gz Die README Datei ist im Verzeichnis doc zu finden. Als nächstes müssen die PHP Einstellungen verifiziert werden. In der Datei /etc/php/apache/php.ini müssen folgende Zeilen vorhanden sein und andernfalls hinzugefügt werden: ---snip php.ini--extension=mysql.so extension=gd.so -------sip------- Als nächstes müssen einige PHP Bibliotheken mittels PEAR installiert werden: # # # # # pear pear pear pear pear install install install install install Image_Color Log Numbers_Roman http://pear.php.net/get/Numbers_Words-0.13.1.tgz http://pear.php.net/get/Image_Graph-0.3.0dev4.tgz Nun muss BASE in ein vom Webserver zugreifbares Verzeichnis kopiert werden. Unter Debian ist das Standard Verzeicnis des Webservers /var/www/. Wir kopieren BASE in dieses Verzeichnis: # cp -r base-1.1.2 /var/www/base Nun muss BASE selbst noch konfiguriert werden. Die Konfiguration ist in der Datei /var/www/base/base_conf.php zu tätigen. Folgende Parameter sollten gesetzt werden: $BASE_urlpath = "/base"; (relativer Pfad innerhalb Apache Directory) $DBlib_path = "/usr/share/adodb"; (oder wo auch immer Adodb installiert ist) $DBtype = "mysql"; $alert_dbname $alert_host $alert_port $alert_user $alert_password = = = = = "snort"; "localhost"; ""; "root"; "password"; Damit ist BASE fertig installiert. BASE kann über folgende Adresse erreicht werden: http://your.ip.Adress/base/ BASE wird sich mit der Nachricht melden, dass die Datenbankstruktur nicht konform ist und bietet eine Korrektur an. Dieses Angebot sollte man ergreifen. Danach kann BASE verwendet werden, um die Meldungen von Snort zu analysieren. BASE bietet keine Möglichkeit, die Snort Konfiguration zu änderen oder z.B. Ein Regelupdate durchzuführen. Es ist ein reines Auswertungstool. Alternativen mit mehr Features gibt es einige. Die besten sind wohl OSSIM, Midas und Prelude.