ここ数日、いくつかのサーバーが未知のリクエストで攻撃されていることに気付きました。
それらのほとんどは次のようなものです。
60.246.*.* - - [03/Jan/2015:20:59:16 +0200] "GET /announce.php?info_hash=%80%85%8e%9bu%cfJ.%85%82%e9%25%bf%8e%9e%d7%bf%c5%b0%12&peer_id=-UT3420-v%8bN%aa%60%60%fd%5d%d1%b0Ux&port=15411&uploaded=48588531&downloaded=0&left=0&corrupt=0&key=9E124668&numwant=200&compact=1&no_peer_id=1 HTTP/1.1" 200 -
少しログと検索を行った後、いくつかの中国のISP(おそらくwhatsmydns.netの結果によるとCERNET)といくつかのトルコのISP(おそらくTTNET)a.tracker.thepiratebay.org
が、piratebayとは関係のないさまざまなIP などのDNSクエリに応答することがわかりましたまたは急流。言い換えれば、彼らは何らかの奇妙な理由で何らかの種類のDNSキャッシュポイズニングを行うようです。
そのため、これらの国の数百(数千ではないにしても)のBitTorrentクライアントが私のWebサーバーに大量の「アナウンス」を行い、Apacheのすべての接続をDDoS攻撃がほぼ完全に占有します。
現時点では、私は中国とトルコを完全にブロックして仕事をしていますが、それらのリクエストをブロックするより良い方法を見つけたいと思います。
HTTP Hostヘッダーに基づいたmod_securityでこれらの要求をブロックすることを考えていました。
すべてのこれらの要求は、HTTPホストのようなヘッダが含まa.tracker.thepiratebay.org
(またはthepiratebay.orgドメインの他の多くのサブドメインを)。
これは、PHPの$_SERVER
変数を介したリクエストヘッダーのダンプです。
DOCUMENT_ROOT: /usr/local/apache/htdocs
GATEWAY_INTERFACE: CGI/1.1
HTTP_ACCEPT_ENCODING: gzip
HTTP_CONNECTION: Close
HTTP_HOST: a.tracker.thepiratebay.org
HTTP_USER_AGENT: uTorrent/342(109415286)(35702)
PATH: /bin:/usr/bin
QUERY_STRING: info_hash=%80%85%8e%9bu%cfJ.%85%82%e9%25%bf%8e%9e%d7%bf%c5%b0%12&peer_id=-UT3420-v%8bN%aa%60%60%fd%5d%d1%b0Ux&port=15411&uploaded=48588531&downloaded=0&left=0&corrupt=0&key=9E124668&numwant=200&compact=1&no_peer_id=1
REDIRECT_STATUS: 200
REMOTE_ADDR: 60.246.*.*
REMOTE_PORT: 3445
REQUEST_METHOD: GET
REQUEST_URI: /announce.php?info_hash=%80%85%8e%9bu%cfJ.%85%82%e9%25%bf%8e%9e%d7%bf%c5%b0%12&peer_id=-UT3420-v%8bN%aa%60%60%fd%5d%d1%b0Ux&port=15411&uploaded=48588531&downloaded=0&left=0&corrupt=0&key=9E124668&numwant=200&compact=1&no_peer_id=1
SCRIPT_FILENAME: /usr/local/apache/htdocs/announce.php
SCRIPT_NAME: /announce.php
SERVER_ADDR: *.*.*.*
SERVER_ADMIN: *@*.*
SERVER_NAME: a.tracker.thepiratebay.org
SERVER_PORT: 80
SERVER_PROTOCOL: HTTP/1.1
SERVER_SIGNATURE:
SERVER_SOFTWARE: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 mod_perl/2.0.8 Perl/v5.10.1
UNIQUE_ID: VKg8BJBMIPQAD01XYzgAAAAD
PHP_SELF: /announce.php
REQUEST_TIME_FLOAT: 1420311556.43
REQUEST_TIME: 1420311556
argv: Array
argc: 1
私の質問は、リクエストドメイン(HTTPホストヘッダー)に基づいてApacheへの着信リクエストをどのようにブロックできますか?リクエストは/announce.phpだけでなくさまざまなURL上にあるため、URLによるブロックは役に立たないことに注意してください。
また、そのアプローチは実行可能ですか、それとも負荷がかかりすぎますか?Apacheに到達する前にそれらの要求をドロップし続ける必要がありますか?
更新:
この問題は、世界中の多くの国の多くの人々に影響を与えていることがわかりました。
これに関する数多くのレポートとブログ投稿、およびこのトラフィックをブロックするためのさまざまなソリューションがあります。
これをブロックするソリューションを探している人を助けるために、私はいくつかのレポートを集めました。
神秘的な誤った中国のトラフィック:HTTPリクエストが使用したDNSサーバーを確認するにはどうすればよいですか?
奇妙なBittorrentログオンサーバー
http://blog.devops.co.il/post/108740168304/torrent-ddos-attack
https://www.webhostingtalk.com/showthread.php?t=1443734
http:// torrentfreak。 com / zombie-pirate-bay-tracker-fuels-chinese-ddos-attacks-150124 /
https://isc.sans.edu/forums/diary/Are+You+Piratebay+thepiratebayorg+Resolving+to+Various+Hosts/ 19175 /
http://furbo.org/2015/01/22/fear-china/
http://www.jwz.org/blog/2015/01/chinese-bittorrent-the-gift-that-keeps-on-与える/