Останні кілька днів я помітив, що деякі сервери забиті невідомими запитами.
Більшість з них:
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 (можливо, CERNET за результатами whatsmydns.net) та деякі турецькі ISP (ймовірно, TTNET) відповідають на запити dns, такі як a.tracker.thepiratebay.org
різні IP-адреси, які не мають нічого спільного з piratebay чи торенти. Іншими словами, вони, здається, роблять якесь отруєння кешем DNS з якоїсь химерної причини.
Тож сотні (якщо не тисячі) клієнтів бітторентів у цих країнах роблять безліч "анонсів" для моїх веб-серверів, внаслідок чого DDOS-атака заповнює всі з'єднання Apache.
На даний момент я взагалі заблокував Китай та Туреччину, і це робить свою роботу, але я хотів би знайти кращий спосіб блокувати ці запити.
Я думав заблокувати ці запити mod_security на основі заголовка HTTP Host.
Усі ці запити включають заголовок HTTP-хоста, як-от 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 header)? Майте на увазі, що запити містяться на різних 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-атаки-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- надання /