mit iptables einen Webserver gegen einfach DDoS Attacken schützen

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




DoS Attacken werden immer günstiger und können sogar angemietet werden. Deshalb werden auch immer mehr kleinere Seiten gefährdet, beispielsweise Foren oder Blogs, die eine größere Konkurrenz besitzen. Besondes Webserver sind gefährdete Dienste, die besondere Beobachten genießen sollten. Überhöhter Traffic und Unerreichbarkeit der Webseiten sind die ersten merkbare Auswirkungen einer DoS oder DDoS Attacke. Wenn der Webserver unter Debian Squeeze zum stillstand kommt, was kann man noch tun?

Wie bemerke ich, dass mein Webserver nicht erreichbar ist?

Immerhin sind die wenigsten Administratoren 24 Stunden am Tag mit dem Webserver verbunden und überwachen diesen. In diesem Falle lohnt es sich, gefährdete Dienste mit einem Uptime-Dienst überwachen zu lassen. Diese Dienste fragen in bestimmten Intervallen den Webserver-Port (oder auch andere Ports) ab und benachrichtigen den Administrator bei Nichterreichen des Ports per Email oder SMS. Somit kann sich der Administrator umgehend von einem Vorfall informieren lassen.

Liegt ein DoS oder DDoS Angriff vor?

Zunächst muss festgestellt werden, ob es sich um eine DDoS Attacke handelt. Hierzu gibt es viele Netzwerk-Tools, die hilfreich sind.

Als erste Anlaufstelle sollte die Traffic-Anzeige des Providers sein. Ist hier der Traffik-Graph schon erhöht und es läuft wesentlich mehr Traffic über den Server, wie gewöhnlich, stimmt schon etwas nicht.
Auf dem Server selbst kann dann der Traffic überwacht werden. Hierzu bietet sich das Netzwerk-Diagnose-Tool iptraf an.
Dies ist schnell installiert und sollte bei der Basis-Installation des Servers schon berücksicht werden:

# aptitude install iptraf

iptraf – An IP Network Statistics Utility

Nach dem Aufruf des Programmes mit

# iptraf

kann man mit Hilfe des “IP traffic monitors” den über die Netzwerkschnittstelle laufenden Netzwerk Traffic sehen. Kommen hier viele einzelne IPs mit kleinen Packeten oder wenige IPs mit vielen Packeten rein, kann man von einer DoS oder DDoS-Attack ausgehen.

Zunätzlich sollte man mit “netstat” noch prüfen, ob diese Verbindungen wartende TCP Verbindungen sind. DoS und DDoS Angriffe sind Anfragen an den Webserver, die aber keine Antwort von diesem erwarten. Man muss wissen, dass ein Webserver nur eine bestimmte Anzahl von eingehenden Anfragen annehmen und beantworten kann. Normalerweise ist diese Anzahl recht hoch und ausreichend. Nachdem der Webserver einem Browser die Webseite geliefert hat, wird normalerweise dieser Port geschlossen und der Webserver kann sich der nächsten Anfrage annehmen. Anders bei DoS/DDoS Attacken. Hier halten die Angreifer die Verbindung offen, so dass der Webserver irgendwann keine weitere Anfragen mehr annehmen kann. Dies erkennt man mit dem Tool “netstat” an dem Status “TIME_WAIT”.

Dies kann man auf einem normal laufenden Webserver folgendermaßen sehen (nicht auf einem unter Attacke stehenden Server benutzen, da die Liste dann sehr lange werden kann)

# netstat -ant

Normalerweise tauchen auch hier einige Anfragen mit TIME_WAIT auf. Aber dies sind entweder Clients, die noch auf eine Ausgabe vom Server warten oder es sind interne Prozessüberwachungen.

Diese Ausgabe kann noch sortiert werden. Dieser Befehl kann von einem unter Attacke stehenden Server benutzt werden, um heraus zu finden, wieviele Clients wieviele Ports offen halten:

# netstat -ant | grep "TIME_WAIT" | awk '{ print $5}' | cut -d ":" -f 1 | sort | uniq -c

Die Ausgabe dieses Befehles ist eine Liste aller Client-IPs im Status “TIME_WAIT” sortiert nach der Anzahl, wieviele Verbindungen offen gehalten werden.

Interpretation der netstat Liste

Beim Internet Explorer darf ein Client maximal 8 Verbindungen offen halten. Sollten die Anzahl der offenen Verbindungen erheblich darüber liegen, könnte dies ein Angreifer für einen DoS oder DDoS sein. Normerweise halten diese Clients 30 oder mehr Verbindungen offen.

Mit iptables gegen einen DoS/DDoS Angriff angehen

Erkennt man nur einen oder wenige Angreifer aus der netstat-Liste, kann man diese mit einem iptables-Befehl “droppen”, die Anfragen einfach ignorieren

# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Jedoch ist dies bei einem DDoS Angriff wenig hilfreich, da hier die Angriffe von sehr vielen Clients ausgehen. So kann diese Liste manuell nicht abgearbeitet werden.
Iptables bietet allerdings automatische Mechanismen, die nach Regeln automatisch Aktionen ausführen.

Der folgende Befehl ist bei einem DDoS Angriff hilfreich und kann auch vorher als Prävention ausgeführt werden.

Mehr als 8 Verbindungen und nur eine Verbindung pro Sekunde

Mit folgendem Befehl sagt man iptables, dass alle Clients, die mehr als eine neue Verbindung pro Sekunde aufbauchen möchten, wenn bereits 8 Verbindungen bestehen, gedroppt werden sollen

# iptables -A INPUT -p tcp --syn -m limit --limit 1 /s --limit-burst 8 -j DROP

Mit dieser iptables Anweisung kann der Webserver schon entlastet werden. Allerdings gilt es zu beachten, dass alle Anfragen einer DoS/DDoS Attacke bis zum Server durchlaufen und erst dort gedroppt werden. Der Traffic bleibt also der selbe. Bei größeren Attacken, die die Bandbreite des Servers ausreizen, kann nur noch der Provider dagegen vorgehen, beispielsweise, indem direkt am Switch schon Regeln installiert werden oder eine Firewall vor dem Server installiert werden.

bisherige Suchbegriffe:

  • ddos iptables
  • iptables ddos
  • iptables gegen ddos
  • ddos iptabl
  • dyndns homeserver vor ddos schützen linjx


Werbung


2 Kommentare zu: mit iptables einen Webserver gegen einfach DDoS Attacken schützen

  1. Thomas sagt:

    Ich konnte den DoS gegen meinen Nginx Server auch mit iptables erfolgreich abwehren. Ich habe den Angriff mit nstat erkann unt mit iptables entsprechende Regeln definiert. Nginx lief danach auch wieder etwas besser. Allerdings war meine Leitung durch den DDoS Angriff recht dicht, so dass ich doch OVH gehen musste. Leider sehen die das nicht so gerne, einen DDOS Angriff in ihrem Netz zu haben. Iptables reicht halt doch nicht aus, einen DDOS zu verhinern.

  2. Mark sagt:

    Danke,
    ich konnte so mit iptables einen Angriff auf meinen apache erkennen und erfolgreich abschwächen. Die Angriffe konnte ich mit iptables ins leere laufen lassen und mein Apache lief wieder etwas flotter.
    Danke nochmal für diese Anleitung, wie ich einen DoS erkenne.
    Marl

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>