Hallo zusammen!
Heute habe ich eine etwas komplexere Frage und dazu noch in einer Materie in die ich mich gerade erst einarbeite. Also etwas Geduld bitte :-)
Bisher verwende ich Snort 2.9.03 (source compiled) mit ET Regeln auf meinem Ubuntu 10.04 Rootserver als IDS (Intrusion Detection System) mit pcap oder seit neustem mit afpacket wegen der besseren Performance. Soweit so gut.
Nun spiele ich mit dem Gedanken, snort auch als IPS (Intrusion Prevention System) zu verwenden. Das ganze möchte ich zuerst auf meinem heimischen Linuxsystem ausführlich testen und kennen lernen um die verbundenen Risiken wirklich selber abschätzen zu können.
Seit der Version 2.9 verwendet snort die DAQ API, auch für den bisherigen Inline Mode, den ich verwenden will. Als DAQ-Typ will ich nfq verwenden. Auf dem Testsystem funktioniert snort mit nfq passiv wunderbar. Alerts werden erkannt und er sieht was er sehen soll. Der Kernel und die Module sind also richtig konfiguriert (denke ich).
Nun zu dem was ich nicht verstehe. Wenn ich Snort-NFQ inline verwenden will ("snort -Q"), ist das überhaupt ohne eine zweite Netzwerkkarte (NC) und einer Bridge dazwischen möglich?
Alle bisherigen Versuche mit einer NC endeten darin, das snort zwar die Packete erkennt (zu sehen mit dem "-v" switch), sie also aus der NFQUEUE entnimmt, dann aber offenbar nicht weiter routed. 100% des Traffics wird geblockt. Versucht habe ich das so:
1. Snort starten mit "snort -c configfile -l logfile -D -Q -v -d 192.168.0.1 --daq nfq --daq-var queue=0"
2. "iptables -I INPUT -j NFQUEUE -d 192.168.0.1" & selbiges mit OUTPUT/FORWARD
Snort erkennt ab jetzt alle Packets, lässt aber kein einziges durch.
Also was mache ich falsch? Brauche ich echt eine zweite (virtuelle?) NC und muss die bridgen oder geht das auch einfacher? Leider haben mich 2 volle Tage probieren und HOWTO's studieren nicht wirklich weiter gebracht.
Bin für jede Hilfe dankbar!
Snort 2.9 als IPS auf einem Rootie?
Re: Snort 2.9 als IPS auf einem Rootie?
Dann will ich auf meine eigenen Fragen antworten, für den Fall das noch mal jemand vor dem selben Problem steht.
1. Ja, Snort-Inline IPS-Modus geht auch mit DAQ 0.5 und Snort 2.9 mit nur einer NIC und ohne bridges. Sowohl mit dem alten ip_queue wie auch mit dem aktuellen nfnetlink_queue (NFQ).
2. Aus dem Snort-Readme:
Sonstiges:
- Zumindest bei Ubuntu 10.04 und 10.10 braucht man zwingend eine selbst-compilierte libdnet.
- Wenn Snort-Inline mit Userspace-Queueing beendet wird oder crashed, wird auch kein Paket weiter geleitet. Man sollte also Vorsicht bei automatischen Regelupdates walten lassen (ggf. per Script "snort -T" Output prüfen). Ein Snort-Inline freier SSH-Port ist sicher auch kein Fehler. Die Option "--enable-reload" hilft in diesem Zusammenhang auch.
1. Ja, Snort-Inline IPS-Modus geht auch mit DAQ 0.5 und Snort 2.9 mit nur einer NIC und ohne bridges. Sowohl mit dem alten ip_queue wie auch mit dem aktuellen nfnetlink_queue (NFQ).
2. Aus dem Snort-Readme:
Mit anderen Worten, will man die Kontrolle auf bestimmte IP's oder Ports beschränken um beispielsweise einen Managment-Zugang frei zu halten, müssen in den Userspace alle Informationen gequeued werden, welche Snort braucht um einen Session aus Sicht des Server zu identifizieren:By default, when running in inline mode, snort will silently drop any packets that were picked up in midstream and would have caused an alert to be generated, if not for the 'flow: established' option.
Code: Select all
iptables -I INPUT -j NFQUEUE -d 192.168.0.1
iptables -I INPUT -j NFQUEUE -s 192.168.0.1- Zumindest bei Ubuntu 10.04 und 10.10 braucht man zwingend eine selbst-compilierte libdnet.
- Wenn Snort-Inline mit Userspace-Queueing beendet wird oder crashed, wird auch kein Paket weiter geleitet. Man sollte also Vorsicht bei automatischen Regelupdates walten lassen (ggf. per Script "snort -T" Output prüfen). Ein Snort-Inline freier SSH-Port ist sicher auch kein Fehler. Die Option "--enable-reload" hilft in diesem Zusammenhang auch.
Last edited by Tomm on 2011-01-25 16:52, edited 1 time in total.