Mittwoch, 8. Oktober 2008

entwickler.com Magazine Konferenzen Entwickler Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag

Snort für Webentwickler

Das typische Einsatzgebiet für Snort liegt im Bereich der Netzwerk-Sicherheit. Dennoch eignet sich das Tool hervorragend für andere Zwecke. Beispielsweise können Webentwickler von Snort profitieren: wenn Sie nämlich das Tool mit der Option -C aufrufen, sehen Sie sämtliche Daten im Klartext.
Holen Sie Snort unter [1] ab, es ist für die private Nutzung kostenlos. Entweder besorgen Sie sich den Tarball, oder Sie verwenden die RPM-Variante (die Installation mit RPM: rpm -i snort-VerXXX.rpm). Haben Sie den Tarball gewählt, gehen Sie folgendermaßen vor:


ich@meinrechner:~> tar xvzf snort-VerXXX.tar.gz

Danach wechselt man in das neu angelegte Verzeichnis und führt dort die Installation durch (für make install sind wahrscheinlich root-Rechte erforderlich):

./configure
make
make install

Danach kann Snort gestartet werden (auch für diesen Vorgang sind in der Regel root-Rechte erforderlich):

ich@meinrechner:~> ./snort -vdC

oder

ich@meinrechner:~> sudo ./snort -vdC

Der Effekt von -C wurde bereits erläutert. Der Schalter -v sorgt für eine „geschwätzige“ Ausgabe (-v steht für verbose; bezieht sich auf die Ausgabe der Paket-Header für IP, TCP, UDP und ICMP). Mit -d werden die übertragenen Daten eigentlich in hexadezimaler Form ausgegeben (dank -C aber im Klartext).
Folgendes Szenario: Wenn Rechner 192.168.1.101 eine Anfrage an 192.168.1.102 absetzt (GET-Request, Port 80), sehen Sie etwas in dieser Art (auszugsweise):

05/03-23:49:30.315055 192.168.1.101:1369 -> 192.168.1.102:80
TCP TTL:64 TOS:0x0 ID:7838 IpLen:20 DgmLen:474 DF
...
TCP Options (3) => NOP NOP TS: 175139 0
GET / HTTP/1.1..Host: meinhost..User-Agent: Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8..Accept: t
ext/xml,application/xml,application/xhtml+xml,text/html;q=0.9,te
...

Und die Antwort des Servers (ebenfalls auszugsweise):

05/03-23:49:30.365382 192.168.1.102:80 -> 192.168.1.101:1369
...
TCP Options (3) => NOP NOP TS: 62725 175139
HTTP/1.1 200 OK..Date: Tue, 03 May 2005 21:49:30 GMT..Server: Ap
ache..Content-Length: 638..Keep-Alive: timeout=15, max=100..Conn
ection: Keep-Alive..Content-Type: text/html;charset=utf-8....OCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">.. ad>. Index of /. .
...

Der Server sendet den passenden Statuscode (HTTP/1.1 200 OK) und signalisiert, dass der Request erfolgreich war. Unter anderem sind auch die HTTP-Header (Connection: Keep-Alive etc.) zu sehen. Dieselben werden unter „normalen Umständen“ (ohne -C) von Snort nicht angezeigt. Das kann während der Entwicklungsphase für eine Web-Anwendung von großem Nutzen sein. Anschließend erfolgt die Übertragung der HTML-Seite. Auch diese Daten geben Auskunft über etwaige Fehler.

Links
[1] Snort im Netz: http://www.snort.org/

Buchtipps:
Snort Cookbook (OReilly-Verlag April 2005, 400 Seiten, ISBN 0-596-00791-4)







Software & Support Verlag GmbH