snort-inline und FreeBSD

Herrmann

Well-Known Member
Abend zusammen,

dass Snort auf FreeBSD "ohne Problem" läuft habe ich schon auf einigen Seiten gelesen. Wie sieht es jedoch mit snort-inline aus. Ich suche halt eine Möglichkeit Angriffe zu blocken, die mein Paketfilter durchlässt (z.B. Angriffe auf Port 80 usw). Snort meldet zwar alles wunderbar, nur verhindern kann es die Angriffe auch nicht. Daher habe ich snort-inline ins Auge gefasst.

Wäre für jede Hilfe von euch sehr dankbar.
Bis denn Herrmann.
 
hallo,

ich beschäftige mich gerade auch mit dem selben thema, denn das wäre ein geiles addon zu einem alg.
also derzeit benutze ich als referenz den bericht "einbruchsschutz im eigenbau" aus der ct 22/04.
durch weitere recherchen, bin ich aber zu der erkenntis gekommen,
dat det dingen nur für die linux-kernel (2.4 ...) funktioniert, da alles über die ip_queue des kernels läuft . "ich versuch noch dieses modul oder ähnliches für bsd zu finden."

also leider kann ich dir keine spezielle hilfe geben. aber ich werde mal posten, wenn ich was gefindet habe, da noch sehr viel mehr leute diesen realtime-scan gebrauchen könnten.
ich wälze ebenfalls die mailinglisten unter www.snort.org/lists.html
unter clamav oder http://www.honeynet.org/ könnte vieleicht auch was zu finden sein, da hab ich noch nicht gesucht.
bei honeynet wird wohl auch ein bsd system benutzt.

nich aufgeben. für fbsd wird es irgendwo etwas geben.
 
Zuletzt bearbeitet:
Herrmann schrieb:
Abend zusammen,

dass Snort auf FreeBSD "ohne Problem" läuft habe ich schon auf einigen Seiten gelesen.
snort verwendet die libpcap (wie zB auch tcpdump), die es auf BSD Systemen gibt.
Wie sieht es jedoch mit snort-inline aus.
Snort-Inline bekommt seine Pakete nicht über libpcap, sondern von iptables, überprüft sie, und erzeugt dann gegebenenfalls dynamische Regeln im iptables Paketfilter um diese abzuweisen.

Um das zum laufen zu bekommen, braucht man also entweder nach BSD portierte iptables oder aber man muss Snort-Inline auf ipfw[12], ipf oder pf umschreiben (und evtl den Paketfiltern noch die entsprechenden Hooks einbauen).
 
Elessar schrieb:
snort verwendet die libpcap (wie zB auch tcpdump), die es auf BSD Systemen gibt.Snort-Inline bekommt seine Pakete nicht über libpcap, sondern von iptables, überprüft sie, und erzeugt dann gegebenenfalls dynamische Regeln im iptables Paketfilter um diese abzuweisen.

Also mein Ansatz für FreeBSD mit ipfw2 waere folgender:

Snort ist dahingehend zu aendern, dass es die Pakete nicht mehr via pcap, sondern ueber einen divert socket von ipfw liest (analog natd).

Wenn das Paket keine Regel matcht, wird es zurueckgeschrieben. Wenn das Paket einen Alarm ausloest, wird es nicht zurueckgeschrieben. Das Setzen dynamischer IPFW Regeln koennte hier lediglich noch der Optimierung dienen, um bei wiederkehrenden Angriffen nicht immer wieder das Paket pruefen zu muessen. Wirklich notwendig ist es nicht mehr, da der daemon an einem divert socket das Paket schlichtweg dadurch blockieren kann, dass er es nicht zurueckschreibt.

Ganz nebenbei loest divert auch noch das Problem von fragmentierten Paketen.

Snort liest die Pakete in snort.c in der Funktion InterfaceThread(). Diese muss modifiziert werden. Code faende sich hierzu quasi mundgerecht bei natd.

Ein Problem was ich sehe, ist die Rueckmeldung. Im Idealfall muesste ProcessPacket einen Wert zurueckliefern, der ueber das Ergebnis der Detektion Aufschluss gibt und anhand dessen man dann entscheiden kann, ob das Paket zurueckgeschrieben oder gedropt wird. Dort muesste man mal weiter suchen, wie schwierig es da ist, sowas zu implementieren.

Weiterhin muessten, wenn die Geschichte sauber sein soll, auch noch allerhand Aenderungen am UI von Snort vorgenommen werden. Eine ganze Reihe Features passen dann ja nicht mehr, so dass man die deaktiveren müsste.

Ueber die Performance wage ich nicht wirklich nachzudenken.

Evtl. ist es sogar einfacher, lediglich die Detection Engine aus Snort zu extrahieren und damit sauber eine Scanfunktion mit einem boolean Rueckgabewert zu implementieren.

Wer sich die Arbeit machen will, sollte evtl. auch noch bedenken, dass Snort unter GPL steht.

PS: Obiger Text hat den Anspruch "Brainstorming". Ich bitte das beim Zerpfluecken zu bedenken ;-). Danke.
 
Zurück
Oben