Wie werden Verbindungen im Zusammenhang mit anderen getrennten Verbindungen getrennt?

Wie werden Verbindungen im Zusammenhang mit anderen getrennten Verbindungen getrennt?

Szenario:Ich habe Regeln für einen Host geschrieben , bei dem eine DPI-Engine Netfilter-Warteschlangen überwacht: Firewall-Regeln reihen den bei diesem Host eingehenden Datenverkehr in unterschiedliche Netfilter-Warteschlangen ein, je nachdem, ob der Datenverkehr von einem bestimmten meiner Hosts iptableskommt oder nicht .ipset

In der FORWARDKette werden alle Verbindungen in unterschiedliche Warteschlangen eingereiht NFQUEUES: Die DPI-Engine beobachtet in den Warteschlangen des Benutzerbereichs die von iptables gesendeten Pakete. Wenn eine verbotene Verbindung erkannt wird, markiert sie das Paket mit einem speziellen Wert. Die DPI-Engine fügt verbotene Pakete erneut in den Stapel ein. In der POSTROUTINGKette überprüfe ich, ob Verbindungen mit diesem speziellen Wert markiert sind und wenn ja, lösche ich DROPsie.

Es funktioniert alles gut, aber ...

Problem: die DPI-Engine ist gut, aber nicht perfekt: manchmal,

  1. Datenverkehr, der als verboten gekennzeichnet sein sollte, wird nicht als solcher gekennzeichnet und daher nicht blockiert.
  2. Verbotener Datenverkehr wird blockiert, aber nicht sofort, und eine verbotene Verbindung kann in der Zwischenzeit eine andere Verbindung öffnen ( RELATED, laut Conntrack-Maschine), die nicht als verboten markiert ist, aber ich möchte die entsprechende Verbindung ebenfalls blockieren.

Im zweiten Fall möchte ich Maßnahmen ergreifen: Stellen Sie sich als Beispiel für Fall 2 vor, dass die DPI-Engine YouTube blockieren möchte, dies aber nicht schnell genug schafft. Sie lässt die YouTube-Verbindung eine andere Verbindung öffnen, die von der DPI-Engine als SSL gekennzeichnet wird. Die DPI-Engine blockiert YouTube schließlich, aber die SSL-Verbindung ist frei und kann genutzt werden. Ich kann der DPI-Engine nicht sagen, dass sie SSL-Verbindungen blockieren soll, unabhängig davon, welche Verbindungen sie geöffnet haben.

Überlegungen: wie erklärt inSzenario, Pakete, die in POSTROUTINGder Kette eingehen, können mit 0 (das ist der Standardwert, also hat die DPI-Engine keine Aktion ausgeführt) oder mit diesem speziellen Wert (die DPI-Engine hat eine verbotene Verbindung gesehen und markiert) markiert werden: eine einfache

iptables -t mangle -A POSTROUTING -m mark --mark DROPVALUE -j DROP

ist fast immer genug, aber inProblemAbschnitt habe ich geschrieben, dass Verbindungen mit den verbotenen Verbindungen VERBUNDEN sind, aber von der DPI-Engine nicht als solche erkannt werden, weilselbst wenn sie von einer verbotenen Verbindung erstellt wurden, steht deren Protokoll nicht auf der schwarzen Liste und deshalb werden sie nicht als verboten angesehen. Das ist richtig, weil ich keine schwarze Liste erstellen kann SSLund HTTPS.

Ich muss Verbindungen RELATEDzu verbotenen Verbindungen blockieren: RELATEDund ESTABLISHED(wenn ich das richtig verstanden habe) beziehe ich mich nicht auf bestimmte Verbindungen, sondern auf verbotene Verbindungen.

Frage: ist es möglich, Verbindungen zu trennen, RELATEDdie getrennt werden sollen (oder bereits getrennt wurden) iptables? Oder ist dazu ein Hack conntrackerforderlich?

Vielen Dank im Voraus für alle Vorschläge.

Antwort1

Sie verstehen das falsch RELATED. Dies wird nicht für jede Verbindung verwendet, die eine einzelne Adresse herstellen könnte. Es wird nur für tatsächlich verwandte Daten verwendet, wie etwa den FTP-Datenstrom, der mit einer FTP-Steuerverbindung verknüpft ist, oder ICMP-Fehlermeldungen, die mit einer offenen Verbindung verknüpft sind. Es gibt nur sehr wenige solcher Verbindungen, die tatsächlich übereinstimmen RELATED.

verwandte Informationen