it-swarm.com.de

Umgeht tcpdump iptables?

Ich habe fälschlicherweise einen DNS-Server mit offenem Resolver eingerichtet, der bald für eine Reihe von DDoS-Angriffen aus Russland verwendet wurde. Aus diesem Grund habe ich Port 53 auf beiden DNS-Servern für alle außer für vertrauenswürdige IP-Adressen vollständig blockiert. Es funktioniert, ich kann keine Verbindung mehr herstellen, aber was mir komisch vorkommt, ist, dass ich beim Ausführen von tcpdump auf eth1 (der Schnittstelle zwischen Server und öffentlichem Internet) viele eingehende Pakete vom Angreifer zum Port 53 sehe.

Ist es normal, dass tcpdump diese Pakete anzeigt, auch wenn iptables sie fallen lässt? Oder habe ich iptables falsch konfiguriert?

Andererseits sehe ich keine ausgehenden Pakete von meinem Server, wie ich es zuvor getan habe, also denke ich, dass die Firewall funktioniert. Es überrascht mich nur, dass der Kernel Pakete nicht vollständig fallen lässt? Oder ist tcpdump so mit dem Kernel verbunden, dass er die Pakete sieht, noch bevor sie zu iptables gelangen?

43
Petr

Das ist eine nette Frage.

Tatsächlich ist tcpdump die erste Software, die auf dem Weg IN nach dem Draht (und, wenn Sie so wollen, der Netzwerkkarte) gefunden wird. und der letzte auf dem Weg RAUS.

Wire -> NIC -> tcpdump -> netfilter/iptables

iptables -> tcpdump -> NIC -> Wire

Auf diese Weise werden alle Pakete angezeigt, die Ihre Schnittstelle erreichen, und alle Pakete, die Ihre Schnittstelle verlassen. Da Pakete an Port 53, wie von tcpdump angezeigt, keine Antwort erhalten, haben Sie erfolgreich überprüft, ob Ihre iptables-Regeln korrekt konfiguriert wurden.

EDIT

Vielleicht sollte ich ein paar Details hinzufügen. tcpdump basiert auf libpcap , einer Bibliothek, die einen Paketsocket erstellt. Wenn ein reguläres Paket im Netzwerkstapel empfangen wird, prüft der Kernel zuerst , ob ein Paket-Socket vorhanden ist, der an dem neu eingetroffenen Paket interessiert ist, und wenn ja Gibt es einen, leitet er das Paket an diesen Paket-Socket weiter. Wenn die Option ETH_P_ALL ausgewählt ist, werden alle Protokolle durch den Paketsocket geleitet.

libpcap implementiert einen solchen Paketsocket mit aktivierter Option, speichert eine Kopie für den eigenen Gebrauch und dupliziert das Paket zurück auf den Netzwerkstapel, wo es vom Kernel auf die übliche Weise verarbeitet wird einschließlich der ersten Übergabe an netfilter , das Kernel-Space-Gegenstück von iptables . Das Gleiche gilt in umgekehrter Reihenfolge (, d. H. , zuerst Netzfilter, dann letzter Durchgang durch den Paketsockel) auf dem Weg nach draußen.

Ist dies anfällig für Hacking? Aber natürlich. Es gibt zweifellos Proof-of-Concept-Rootkits, die libpcap verwenden, um die Kommunikation mit dem Rootkit abzufangen, bevor die Firewall darauf zugreifen kann. Aber auch dies verblasst im Vergleich zu der Tatsache, dass eine einfache Google-Abfrage funktionierenden Code aufdeckt, der den Verkehr selbst vor libpcap verbirgt. . Dennoch sind die meisten Fachleute der Ansicht, dass die Vorteile beim Debuggen von Netzwerkpaketfiltern die Nachteile bei weitem überwiegen.

56
MariusMatutiae