5
http_hostヘッダーによるmod_securityブロックリクエスト
ここ数日、いくつかのサーバーが未知のリクエストで攻撃されていることに気付きました。 それらのほとんどは次のようなものです。 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 …