Warum sind NginX und Lighttpd von Slowloris nicht betroffen?

23

Ich untersuche die Verwundbarkeit gegenüber Slowloris und ich denke, ich verstehe, wie und warum diese Art von Angriff funktioniert.

Was ich nicht verstehe, ist, warum Lighttpd und NginX nicht betroffen sind (laut demselben Artikel wie oben verlinkt). Was machen sie so anders?

Der Shurrican
quelle

Antworten:

25

Apache hat eine Theorie von "Maximum Clients"

Dies ist die Anzahl der gleichzeitigen Verbindungen, die verarbeitet werden können. Wenn ein Apache-Server ein 'max clients'-Limit von 100 hat und jede Anfrage 1 Sekunde dauert, kann er maximal 100 Anfragen pro Sekunde bearbeiten.

Eine Anwendung wie SlowLoris überflutet einen Server mit Verbindungen. In unserem Beispiel sendet SlowLoris 200 Verbindungen pro Sekunde, und Apache kann nur 100 Verbindungen pro Sekunde verarbeiten. Die Verbindungswarteschlange wird immer größer und beansprucht den gesamten Speicher des Computers, auf dem sie ausgeführt wird ein Hault. Dies ähnelt der Funktionsweise von Anonymous 'LOIC.

NGINX und Lighttpd (unter anderem) haben keine maximale Anzahl von Verbindungen, sondern verwenden Worker-Threads. Theoretisch gibt es also keine Begrenzung für die Anzahl der Verbindungen, die sie verarbeiten können.
Wenn Sie Ihre Apache-Verbindungen überwachen, werden Sie feststellen, dass die meisten aktiven Verbindungen Daten vom Client senden oder empfangen. In NGINX / Lighttpd ignorieren sie diese Anforderungen einfach und lassen sie im Hintergrund weiterlaufen, ohne die Systemressourcen zu verbrauchen, und sie müssen nur Verbindungen mit etwas verarbeiten, das gerade läuft (Analysieren von Antworten, Lesen von Daten von Back-End-Servern usw.).

Ich habe heute Nachmittag tatsächlich eine ähnliche Frage beantwortet, daher könnten die Informationen dort auch für Sie interessant sein. Reduzieren der Warteschlange für Apache-Anfragen

Verschmieren
quelle
Gute und sehr ausführliche Antwort. +1
Oldskool
6
Kleine Korrektur: nginx verwendet keine Worker-Threads, um eine hohe Anzahl von Verbindungen zu erreichen. Von nginx.org : „Nginx beruht nicht auf Threads Griff Anfragen Stattdessen verwendet es eine viel skalierbare ereignisgesteuert (asynchron) Architektur.“
Day
2
Obwohl Slowloris ein möglicher Nebeneffekt ist, ist es nicht die Absicht von Slowloris, "den gesamten Arbeitsspeicher auf dem Computer zu verbrauchen", sondern die maximale Verbindungskapazität auszuschöpfen, die den Erfolg nachfolgender Verbindungen verhindert.
wulfgarpro
@Day Nginx verwendet Worker-Threads, um den asynchronen Betrieb zu unterstützen. Ein nützliches Schema der Anwendungsarchitektur finden Sie hier: aosabook.org/en/nginx.html#fig.nginx.arch
Terry Burton
13

Nginx ist tatsächlich anfällig für Slowloris-Angriffe. Knappe Ressource ist die maximale Anzahl gleichzeitiger Arbeiterverbindungen. Diese Zahl kann als worker_connections * worker_processes berechnet werden und entspricht 512 in der Standardkonfiguration von nginx. So ist es recht einfach, ungeschützten Nginx mit Werkzeugen wie Goloris zu entfernen .

Valyala
quelle
golorissieht aus wie das Tool, das ich brauche, um sicherzustellen, dass meine Implementierung / Einrichtung wie erwartet funktioniert!
Alexis Wilke
8

valyalas Kommentar sollte als Antwort akzeptiert werden.

Die meisten Nginx-Server verwenden Standardkonfigurationen und sind daher anfällig für Slowloris-Angriffe. Ich habe Slowloris verwendet, um einige der Nginx-Websites meines Freundes mit nur meinem Laptop zu entfernen, und normalerweise dauerte es weniger als 5 Minuten (meine Freunde haben mich dazu aufgefordert).

Wie valyala bereits sagte, ist nginx technisch gesehen nicht anfällig für slowloris, aber die Standardkonfigurationen begrenzen die maximale Anzahl von Verbindungen. Wenn die Verbindungen diese Anzahl überschreiten, löscht nginx die neue Anfrage, was zu einem Denial of Service führt.

Die bekannten Möglichkeiten, Nginx vor Slowloris zu schützen, umfassen das Begrenzen der Anzahl von Verbindungen von derselben IP und das Erhöhen der Konfiguration von worker_connections. Der Angriff kann immer noch funktionieren, wird aber schwieriger (dauert vielleicht länger als 5 Minuten?: D)

Nguyen Phan Tan
quelle