njör.de

Start > Projekte > antidos

antidos

Es gibt viele Möglichkeiten, eine DDoS-Attacke gegen bestehende Infrastrukturen durchzuführen. Die Einfachste ist das Fluten des Zielhosts mit Anfragen. Viele Abwehrtechniken bestehen im Prinzip daraus, für alle Clients die Zugriffe einzuschränken. antidos geht einen anderen Weg: den Angreifer mit passiven Mitteln erkennen um ihn dann mittels Firewall dauerhaft zu sperren.

Wann antidos nicht helfen kann

Sollte ein Angreifer über genügend Ressourcen verfügen um eine DDoS-Attacke durchzuführen, kann man von dem angegriffenen Host aus nicht viel ausrichten. Läuft bspw. ein Angriff mit 15 MBit und der Ziel-Host ist nur mit 10 MBit angebunden, hat man keine Chance den Angriff zu unterbinden.

Dann bleibt nur der Weg, mehr Ressourcen zu beschaffen um die Last des Angriffes auf mehrere Netzwerke zu verteilen. In diesem Fall mehrere sehr gut angebundene Rechner, die die Netzwerklast über einen TCP-Proxy (haproxy) aufteilen.

Meist verfügen Angreifer jedoch nicht über viel Bandbreite und sind aus diesem Grund gezwungen, über schlechte Protokolle oder Applikationen Ressourcen auf dem Ziel-Host zu binden. In vielen Fällen geschieht dies über HTTP, weil dies auch primär der Dienst ist, wegen dem der Ziel-Host angegriffen wird.

Angriff slowloris

Spektakulär in den letzten Jahren war die sogenannte "slowloris"-Attacke, bei der ein Angreifer so viele Verbindungen wie möglich zu einem Webserver aufbaut und die HTTP-Anfrage nur sehr langsam sendet, um die Verbindungen möglichst lange offen zu halten. Da die Anzahl gleichzeitig offener Verbindungen bei Webservern meist beschränkt ist, war der Zugriff auf den Webserver für andere Hosts nicht, oder nur noch eingeschränkt möglich.

Als Gegenmaßnahme könnte man die Zeit für eine HTTP-Anfrage, oder die möglichen Verbindungen pro Host beschränken. Nachteil dieser Methode ist jedoch, dass ein Angreifer dann immer noch Ressourcen dauerhaft binden kann. Besser wäre es, den Angriff als solches durch ein Muster zu erkennen, und den Angreifer dann dauerhaft durch eine Firewall zu blockieren. Diesen Ansatz setzt antidos um.

Angriff HTTP Flut

Eine andere Möglichkeit des Angriffs ist das fluten des Dienstes mit Anfragen. Bei einer guten Architektur muss der Angreifer schon sehr viel Ressourcen mobilisieren, um die Erreichbarkeit des Dienstes zu gefährden.

Meist werden die Inhalte jedoch dynamisch - heißt rechen- und speicherintensiv - aus einer Datenbank generiert. Hier ist ein solch einfacher Angriff schon viel erfolgsversprechender. Als Gegenmaßnahme könnte man die Zugriffe in einer bestimmten Zeiteinheit pro Host beschränken, hat dann aber wieder das Problem, dass der Angreifer immer noch Ressourcen dauerhaft binden kann.

Auch bei diesem Angriff ist es besser, den Angreifer durch sein Angriffsmuster zu erkennen und durch eine Firewall dauerhaft zu blockieren.

Das Muster, durch das einfache Angriffswerkzeuge von einem Browser unterschieden werden können, ist, dass sie viele Verbindungen zum Webserver öffnen. Alle modernen Browser können keep-alive, holen also mehrere Dateien über eine TCP-Verbindung. Ein normaler Browser öffnet nicht mehr als 10 bis 15 Verbindungen zum Server.

Wenn wir also einen Client finden, der 25 oder mehr Verbindungen zum Server offen hat, können wir mit ziemlicher Sicherheit davon ausgehen, dass dies kein normaler Zugriff ist.

Selbst während eines Angriffs - und nur darauf kommt es hier an - werden die normalen Verbindungsanfragen eines Browsers durch einen Timeout beendet. Erst danach öffnet der Browser wieder neue Verbindungen. Ein Angreifer jedoch wird ständig versuchen, neue Verbindungen zu öffnen.

antidos  überwacht nicht nur einen bestimmten Dienst, sondern alle offenen TCP-Verbindungen zum Server mittels /proc/net/tcp. Sollte eine IP-Adresse mehr als 30 TCP-Verbindungen offen haben, wird die jeweilige IP in der Firewall dauerhaft gesperrt und optional eine Kopie der Datei /proc/net/tcp zur späteren Auswertung angelegt.

antidos prüft maximal 1024 TCP-Verbindungen pro Durchgang, um nicht zu viele Systemressourcen zu verbrauchen. Während eines Angriffs stehen nur sehr wenig Speicher und CPU-Zeit zur Verfügung. Bei der Entwicklung wurde darauf geachtet, dass antidos möglichst wenig Ressourcen verbraucht, um im Falle eines Angriffs handlungsfähig zu bleiben.

Mit einfachen Anpassungen könnte man sich im Falle eines Angriffes per Mail informieren lassen, und so antidos in seine bestehenden IT-Prozesse integrieren.

Download

19. Juni 2013 antidos-v1-src.tar.gz SHA-256 OAdgO74b2-yFP5ZBx6sGOtlsbwxRuYkfgxeDjuHBG38=

antidos auf Github.com: https://github.com/stralloc/antidos

Installation

antidos wurde für den Einsatz unter Linux erstellt. Um antidos einzusetzen, wird das /proc-Dateisystem benötigt. antidos ist für den Einsatz mit den daemontools von Daniel J. Bernstein (djb) gedacht, kann jedoch auch ohne daemontools eingesetzt werden.

Für die Installation ist es notwendig, antidos für die Zielmaschine zu kompilieren. Dazu wird ein C-Kompiler und die Bibliothek libowfat benötigt. Die Pfade zur libowfat müssen im Makefile angepasst werden.

Um eine leistungsfähigere Version von antidos zu erzeugen, kann das Programm gegen die dietlibc gelinkt werden.

Lizenz

antidos ist Open Source und wird unter der GPLv3 veröffentlicht.

Kommentar schreiben

Name

Kommentar