Последние несколько дней я заметил, что некоторые серверы забиты неизвестными запросами.
Большинство из них похожи на следующие:
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- давая /
Ответы:
Та же проблема здесь. Я использую mod_security для блокировки агента пользователя
Я бы изменил журнал на nolog после того, как вы убедитесь, что он работает, чтобы избежать заполнения вашего файла журнала
источник
SecRule REQUEST_URI "\?info_hash\=" "id:10000002,rev:1,severity:2,nolog,msg:'Torrent Announce Hit Detected'"
dig a.tracker.thepiratebay.org
с любого DNS-сервера в этом списке public-dns.tk/nameserver/cn.html и на каждый запрос есть разные ответы. То же самое дляtracker.thepiratebay.org
чего также появился в нашем Host: заголовки. На viewdns.info/research/ есть пост об этом с некоторыми дополнительными сайтами. Попытка перевернуть некоторые из возвращенных адресов, используя viewdns.info/reverseip, показывает, что это довольно случайно.У нас точно такая же проблема с одним из сайтов наших клиентов. Я добавил следующее в верхней части их:
Закомментированный RewriteCond может быть закомментирован, чтобы блокировать только определенный пользовательский агент. Но они не имеют никакого контента на announce или announce.php, поэтому мы просто заблокировали все это.
источник
У меня сейчас такая же проблема, когда торрент-трекеры указывают на мой сервер. Я экспериментировал с iptables в течение последних нескольких дней, проверял заголовки и шаблоны запросов и сужал его до пары правил iptables, которые фильтруют практически весь недавний, по-видимому, вредоносный трафик из Азии (Китай, Малайзия, Япония и Гонконг).
Ниже приведены правила. Надеюсь, это кому-нибудь поможет.
источник
REJECT
вместо того, чтобыDROP
по какой-то конкретной причине? (то есть: клиенты могут остановиться после полученияREJECT
?)--string "GET /announce"
тем, чтобы покрыть фактический запрос.Я написал сообщение в блоге о том, как правильно сказать клиентам BitTorrent уходить и никогда не возвращаться, подобно тому, что делал Дэн, но используя nginx.
У торрент-трекеров (обычно) есть стандартный URL-адрес, который начинается с
/announce
или/scrape
, поэтому я бы не отказался от фильтрации по URL-адресу так быстро. Оно работает.Полный пост находится по адресу - http://dvps.me/ddos-attack-by-torrent
источник
DNS Cache Poisoning
CERNET в Китае отвечает на домены TPB со случайными и некитайскими IP-адресами. AFAIK PEX предназначен для обмена пэрами, а не трекерами. Можете ли вы подробнее рассказать об этом или предоставить некоторую документацию?a.tracker.thepiratebay.org
илиtracker.thepiratebay.org
может быть или не быть фактической целью этих клиентов. Это также могут быть фальшивые клиенты, просто маскирующиеся под китайских битторентов :)я взял китайские диапазоны IP-адресов с: http://www.wizcrafts.net/chinese-blocklist.html и заблокировал их в моем брандмауэре CSF, вот диапазоны на случай, если вы хотите скопировать и вставить в свой список запрещенных IP-адресов CSF :
источник
CC_DENY = "CN"
на ,/etc/csf/csf.conf
и он будет автоматически найти китайские префиксы на основе базы данных GeoIP Maxmind в.