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