HULK DoS ツールから Nginx を保護する方法

HULK DoS ツールから Nginx を保護する方法

というツールがありますハルク(Http Unbearable Load King)。これは、Web サーバーのサービス拒否ツールです。Web サーバーで大量の固有かつ難読化されたトラフィックを生成し、キャッシュ エンジンをバイパスして、サーバーの直接のリソース プールを攻撃するように設計されています。

私はこれを Nginx でテストしましたが、数秒で Nginx がダウンしました。以下は私のテストのログ スニペットです。

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)"

私のテスト サーバー (CentOS 6.4 64 ビット) は Varnish で構成されていますが、ツールが示すように、Varnish のキャッシュがバイパスされました。

fail2ban をインストールできますが、この種のリクエストに対して正規表現をどのように定義すればよいでしょうか? または、この種の攻撃から保護するために Nginx を構成する方法はありますか? おそらく、ルールの書き換えか何かでしょうか?

答え1

ちょうどこのスレッドにたどり着いたのですが、2 件のダウン投票があることに気付きました。とにかく、HULK リクエストをブロックするために私が行ったことを投稿したいと思います。

(/etc/nginx/conf.d/default.confまたは同様のもの)。ブロック内に次のコードを追加しましたserver:

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

それは何をするのですか? このサイトはフレンドリー URL を使用しており、サイトの URL のいずれも および で始まっていないため?=すべての奇妙な GET リクエストを 444 にリダイレクトできます。引数は、間に(.{1,})=(.{1,})を含む文字を含むすべての GET リクエストをリダイレクトするように Nginx に指示します。=

関連情報