Последние несколько дней я заметил, что некоторые серверы забиты неизвестными запросами.
Большинство из них похожи на следующие:
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 -
После небольшой регистрации и поиска я обнаружил, что некоторые китайские интернет-провайдеры (вероятно, CERNET по результатам whatsmydns.net) и некоторые турецкие интернет-провайдеры (вероятно, TTNET) отвечают на DNS-запросы, например, a.tracker.thepiratebay.org
с различными IP-адресами, которые не имеют ничего общего с piratebay. или торренты. Другими словами, кажется, что они делают какое-то отравление DNS-кэша по какой-то причудливой причине.
Поэтому сотни (если не тысячи) битторрент-клиентов в этих странах делают тонны «анонсов» для моих веб-серверов, что в значительной степени приводит к DDoS-атаке, заполняющей все соединения Apache.
На данный момент я полностью заблокировал Китай и Турцию, и она выполняет свою работу, но я бы хотел найти лучший способ заблокировать эти запросы.
Я думал о блокировке этих запросов с помощью mod_security на основе заголовка HTTP Host.
Все эти запросы включают, например, заголовок HTTP Host a.tracker.thepiratebay.org
(или множество других поддоменов домена thepiratebay.org).
Вот дамп заголовков запросов через $_SERVER
переменную PHP .
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
Итак, мой вопрос, как я могу заблокировать входящие запросы к Apache на основе домена запроса (заголовок HTTP Host)? Имейте в виду, что запросы относятся к разным URL-адресам, а не только к /announce.php, поэтому блокировка по URL-адресу бесполезна.
Также этот подход жизнеспособен или он вызовет слишком большую нагрузку, и я должен продолжать отбрасывать эти запросы, прежде чем они достигнут Apache?
Обновить:
Оказывается, эта проблема затронула многих людей во многих странах мира.
Об этом было множество сообщений и постов в блогах, а также различные решения для блокирования этого трафика.
Я собрал некоторые отчеты, чтобы помочь любому, кто придет сюда в поисках решения, чтобы заблокировать это.
Таинственный неверно направленный китайский трафик: Как я могу узнать, какой DNS-сервер использовал HTTP-запрос?
Странная регистрация 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-attack-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- давая /