Frage Warum werden NginX und Lighttpd nicht von Slowlis beeinflusst?


Ich untersuche die Anfälligkeit für 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 (nach dem gleichen Artikel wie oben verlinkt). Was machen sie so anders?


19
2018-06-17 16:13


Ursprung




Antworten:


Apache hat eine Theorie von 'Maximum Clients'

Das ist die Anzahl der gleichzeitigen Verbindungen, die es bewältigen kann. I.E. Wenn ein Apache-Server ein Limit von 100 Clients hat und jede Anfrage 1 Sekunde dauert, kann er maximal 100 Anfragen pro Sekunde verarbeiten.

Eine Anwendung wie SlowLoris wird einen Server mit Verbindungen überfluten, in unserem Beispiel wenn SlowLoris 200 Verbindungen pro Sekunde sendet und Apache nur 100 Verbindungen pro Sekunde verarbeiten kann, wird die Verbindungswarteschlange immer größer und verbraucht den gesamten Speicher auf dem Rechner, zu dem sie gebracht wird ein Erfolg. Das ist ähnlich wie Anonymous 'LOIC funktioniert.

NGINX und Lighttpd (unter anderem) haben keine maximalen Verbindungen, sie verwenden stattdessen Worker-Threads, so dass theoretisch die Anzahl der Verbindungen, die sie verarbeiten können, unbegrenzt ist.
Wenn Sie Ihre Apache-Verbindungen überwachen, sehen Sie, dass die meisten aktiven Verbindungen Daten vom Client senden oder empfangen. In NGINX / Lighttpd ignorieren sie einfach diese Anfragen und lassen sie im Hintergrund laufen, verbrauchen keine Systemressourcen und müssen nur Verbindungen mit etwas verarbeiten (Parsen von Antworten, Lesen von Daten von Backend-Servern etc.)

Ich habe heute Nachmittag eine ähnliche Frage beantwortet, also könnten die Informationen dort auch für Sie interessant sein Reduzieren der Apache-Anforderungswarteschlange


23
2018-06-17 16:39



Gute und sehr detaillierte Antwort. +1 - Oldskool
Geringfügige Korrektur: nginx verwendet keine Worker-Threads, um eine hohe Anzahl von Verbindungen zu erreichen. Von nginx.de: "Nginx verlässt sich nicht auf Threads, um Anforderungen zu behandeln. Stattdessen verwendet es eine viel skalierbarere ereignisgesteuerte (asynchrone) Architektur" - Day
Obwohl es ein möglicher Nebeneffekt ist, besteht die Absicht von Slowloris nicht darin, "den gesamten Speicher auf der Maschine zu verbrauchen", sondern die maximale Verbindungskapazität auszuschöpfen, die nachfolgende Verbindungen davon abhält, erfolgreich zu sein. - wulfgarpro


Nginx ist tatsächlich anfällig für Slow-Lock-Angriffe. Knappe Ressource ist die maximale Anzahl von gleichzeitigen Worker-Verbindungen. Diese Zahl kann als berechnet werden worker_connections * worker_processes und entspricht 512 in der Standard-Nginx-Konfiguration. So ist es ziemlich einfach, ungeschützte Nginx mit Tools wie goloris.


9
2018-03-04 14:09



goloris sieht aus wie das Werkzeug, das ich brauche, um sicherzustellen, dass meine Implementierung / Setup wie erwartet funktioniert! - Alexis Wilke


valyalas Kommentar sollte als Antwort akzeptiert werden.

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

Wie valyala sagte, ist nginx technisch nicht anfällig für SlowLoris, aber die Standardkonfigurationen beschränken die maximale Anzahl von Verbindungen. Wenn die Verbindungen diese Zahl überschreiten, lässt nginx die neue Anfrage fallen, was zu einem Denial of Service führt.

Die bekannten Möglichkeiten, nginx vor Slowloris zu schützen, bestehen darin, die Anzahl der Verbindungen von derselben IP-Adresse zu begrenzen und die Konfiguration von worker_connections zu erhöhen. Der Angriff kann immer noch funktionieren, aber es wird schwieriger (vielleicht dauert es mehr als 5 Minuten?: D)


6
2018-03-02 05:02