So schützen Sie Nginx vor dem HULK-DoS-Tool

So schützen Sie Nginx vor dem HULK-DoS-Tool

Es gibt ein Tool namensDer Hulk(Http Unbearable Load King). Es handelt sich um ein Denial-of-Service-Tool für Webserver. Es wurde entwickelt, um große Mengen einzigartigen und verschleierten Datenverkehrs auf einem Webserver zu erzeugen, Caching-Engines zu umgehen und so den direkten Ressourcenpool des Servers zu belasten.

Ich habe dies auf Nginx getestet und es hat Nginx in Sekundenschnelle zum Absturz gebracht. Unten sehen Sie den Protokollausschnitt meines Tests.

192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?UDY=CLZFTJP HTTP/1.1" 200 199265 "http://www.usatoday.com/search/results?q=BZWVGQ" "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?YGNBNQK=BEPPWCSMKJ HTTP/1.1" 200 199272 "http://www.google.com/?q=PJCSSRQLT" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?XETRTJ=LFV HTTP/1.1" 200 199264 "http://www.usatoday.com/search/results?q=QHDEEM" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?JYJHZB=ZHIB HTTP/1.1" 200 199265 "http://www.mywebsite.com/UPHIBL" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?VHXLKAIB=NCU HTTP/1.1" 200 199266 "http://www.mywebsite.com/KIPQLJH" "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
192.168.1.10 - - [17/May/2013:16:37:36 +0800] "GET /?IGCQSNG=BNKSM HTTP/1.1" 200 199267 "http://engadget.search.aol.com/search?q=POZWPGSTV" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:36 +0800] "GET /?HUL=BMZAQXXXF HTTP/1.1" 200 199267 "http://www.usatoday.com/search/results?q=KUQNRADOUP" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:36 +0800] "GET /?ZWOWYGEZ=PBEAVXZF HTTP/1.1" 200 199271 "http://engadget.search.aol.com/search?q=FXWHN" "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"

Mein Testserver (CentOS 6.4 64 Bit) ist mit Varnish konfiguriert, aber laut Aussage des Tools wurde das Caching von Varnish umgangen.

Ich kann fail2ban installieren, aber wie soll ich reguläre Ausdrücke für diese Art von Anfrage definieren? Oder gibt es eine Möglichkeit, Nginx so zu konfigurieren, dass es vor dieser Art von Angriffen geschützt ist? Vielleicht durch Umschreiben der Regel oder so etwas?

Antwort1

Ich bin gerade auf diesen Thread gestoßen und habe festgestellt, dass er 2 Downvotes hat. Wie auch immer, ich möchte nur posten, was ich getan habe, um HULK-Anfragen zu blockieren.

In (oder ähnlich). Ich habe innerhalb des Blocks /etc/nginx/conf.d/default.confFolgendes hinzugefügt :server

if ($args ~* "(.{1,})=(.{1,})" ){
        rewrite ^/$ /444_rewrite?;
}
location  /444_rewrite {
        return 444;
}

Was es macht? Da die Site benutzerfreundliche URLs verwendet und keine der Site-URLs mit ?und beginnt =, kann ich alle diese seltsamen GET-Anfragen an 444 umleiten. Das Argument weist Nginx an, alle GET-Anfragen umzuleiten, zwischen denen (.{1,})=(.{1,})sich Zeichen mit befinden .=

verwandte Informationen