Snort und Base - Linux-Stammtisch Zentralschweiz

Werbung
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.
Herunterladen