Sehen wir uns diese beiden iptables-Regeln an, die häufig zum Zulassen von ausgehendem DNS verwendet werden:
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535
-m state --state ESTABLISHED -j ACCEPT
Meine Frage lautet: Wie genau soll ich den Status ESTABLISHED in UDP verstehen? UDP ist zustandslos.
Hier ist meine Intuition - ich würde gerne wissen, ob oder wo dies falsch ist:
Die Manpage sagt mir folgendes:
Zustand
Dieses Modul ermöglicht in Kombination mit der Verbindungsverfolgung den Zugriff auf die Verbindungsstatus für dieses Paket. --Zustand ...
Iptables merkt sich also im Grunde genommen die Portnummer, die für das ausgehende Paket verwendet wurde (woran könnte es sich sonst für ein UDP-Paket erinnern?) Und lässt dann das erste eingehende Paket zu, das innerhalb eines kurzen Zeitraums zurückgesendet wird? Ein Angreifer müsste die Portnummer erraten (wäre das wirklich zu schwer?)
Über das Vermeiden von Konflikten:
Der Kernel merkt sich, welche Ports blockiert sind (entweder von anderen Diensten oder von früheren ausgehenden UDP-Paketen), damit diese Ports innerhalb des Zeitrahmens nicht für neue ausgehende DNS-Pakete verwendet werden? (Was würde passieren, wenn ich versehentlich versuchte, einen Dienst auf diesem Port innerhalb des Zeitrahmens zu starten - würde dieser Versuch abgelehnt / blockiert?)
Bitte finden Sie alle Fehler im obigen Text :-) Danke,
Chris
quelle
echo "net.netfilter.nf_conntrack_udp_timeout = 180" >> /etc/sysctl.conf
NB: Diese Antwort wurde bearbeitet.
Trotz allem, was die Manpages sagen,
ESTABLISHED
scheint das "stateful" zu bedeuten. Für UDP bedeutet dies einfach (wie Sie vorschlagen), dass Sie sich jedes ausgehende UDP-Paket (das Tupel "src ip, src port dst ip, dst port") für eine Weile merken und seine Antworten erkennen.FWIW, meine normalen Regeln für den DNS-Verkehr lauten ungefähr so:
Das heißt, Sie steuern den Datenverkehr in der
OUTPUT
Kette und lassen dieiptables
Statusmodule alle anderen Aufgaben in derINPUT
Kette ausführen.Siehe auch diese verwandte Frage .
quelle
RELATED
UDP - Pakete können für RTP existieren.Die Entwickler von iptables haben angenommen, dass ein "ESTABLISHED" -Zustand die Situation war, in der Pakete unabhängig vom Protokoll zwischen zwei Clients in beide Richtungen gesehen wurden.
die staatserweiterung ist teil von conntrack. Der Kernel versteht den Zustand aus der Tabelle
Beispiel für iptable-Zustände für UDP in der Tabelle nf_conntrack aus Sicht des Absenders. Stellen Sie sich vor, Sie senden eine DNS-Abfrage über UDP
Ein Paket wurde gesendet. Es wird nicht geantwortet und oh, die Tabelle enthält die Daten für das, was als Gegenleistung erwartet wird (das Paket für die DNS-Antwort).
Die Antwort ist angekommen, das nicht beantwortete Flag ist verschwunden. Dies bedeutet, dass diese UDP-Verbindung für eine kleine in Ihrem System definierte Zeitspanne im Zustand ESTABLISHED ist.
quelle