Kurz erklärt, eine DNS Amplification Attack ist eine Cyberbedrohung, bei der ein Angreifer gefälschte DNS-Anfragen an offene DNS-Server sendet. Durch Ausnutzung von Serverkonfigurationsschwächen erhalten diese Server gefälschte Anfragen und antworten darauf, indem sie viel mehr Daten als erforderlich an die gefälschten Absenderadressen senden.

Dies führt zu einem übermäßigen Datenverkehr (DoS), der das Ziel überlasten kann. Die Angriffsmethode besteht darin, den Datenverkehr zu “amplifizieren”, indem mehr Daten generiert werden, als ursprünglich angefordert.

Die Idee um sich zu schützen vor “DNS Amplification Attack”

Um eine DNS Amplification Attack mit iptables zu bekämpfen, kannst du Regeln erstellen, um den Traffic direkt am Interface zu filtern und unerwünschte DNS-Anfragen zu blockieren. Wir können ja selbst sehr gut erkennen ob es sich bei den Datenpaketen um welche handelt welche wir selber angefragt haben oder um welche die einfach so rein kommen. Und genau diese will ich vorne am Interface direkt verwerfen.

Lege vorab fest, auf welche/n DNS Server du deine eigenen DNS-Anfragen sendest, damit du weiterhin kommunizieren kannst und nicht deine Applikationen störst. Wir nehmen hier jetzt als Beispiel den Cloudflare DNS Server – 1.1.1.1.

1. Erlaube eingehenden DNS-Traffic nur von deinem DNS Anbieter

iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 53 -s 1.1.1.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -s 1.1.1.1 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j DROP
iptables -A INPUT -p tcp --sport 53 -j DROP

2. Beschränke ausgehenden DNS-Traffic auf autorisierte DNS-Server

iptables -A OUTPUT -p udp --dport 53 -d 1.1.1.1 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d 1.1.1.1 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j DROP
iptables -A OUTPUT -p tcp --dport 53 -j DROP

3. Paket Limitierung für DNS-Anfragen einrichten

Wer nochmal zusätzlich auf “Nummer Sicher” gehen will, der kann eingehenden und erlaubten Traffic limitieren und deckeln. Dann dürfen 10 DNS Pakete pro Sekunde rein kommen mit einem maximalen Burst von 20 Paketen.

iptables -A INPUT -p udp --dport 53 -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m limit --limit 10/s --limit-burst 20 -j ACCEPT

Beachte, dass dies nur eine allgemeine Anleitung ist und deine genaue Konfiguration von deinen Anforderungen und deiner Netzwerkkonfiguration abhängt. Analysiere deinen Traffic mittel TCPDUMP oder vergleichbaren Tools bevor du blind dein System mit IPTables Regeln fütterst.

Meine Empfehlung

Wer sich mit diesem Thema weiter auseinander setzen möchte, dem empfehle ich ganz klar da ein paar Bücher. Das Thema ist so spannend und breit gefächert, dass man damit Tage und Wochen vorm Rechner verbringen kann.