Nos últimos dias, notei alguns servidores sendo atacados com solicitações desconhecidas.
A maioria deles é como o seguinte:
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 -
Após um pouco de registro e pesquisa, descobri que alguns ISPs chineses (provavelmente CERNET de acordo com os resultados de whatsmydns.net) e alguns ISP turcos (provavelmente TTNET) respondem a consultas de DNS, como a.tracker.thepiratebay.org
em vários IPs que não têm nada a ver com piratebay ou torrents. Em outras palavras, eles parecem fazer algum tipo de envenenamento de cache DNS por algum motivo bizarro.
Portanto, centenas (se não milhares) de clientes bittorrent nesses países fazem toneladas de 'anúncios' para meus servidores da Web, que resultam praticamente em um ataque DDoS preenchendo todas as conexões do Apache.
No momento, bloqueei completamente a China e a Turquia e ele faz o trabalho, mas gostaria de encontrar uma maneira melhor de bloquear esses pedidos.
Eu estava pensando em bloquear essas solicitações com mod_security com base no cabeçalho HTTP Host.
Todas essas solicitações incluem um cabeçalho de host HTTP como a.tracker.thepiratebay.org
(ou muitos outros subdomínios do domínio thepiratebay.org).
Aqui está um despejo dos cabeçalhos da solicitação via $_SERVER
variável do 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
Portanto, minha pergunta é: como posso bloquear solicitações recebidas para o Apache com base no domínio da solicitação (cabeçalho do host HTTP)? Lembre-se de que as solicitações estão em vários URLs, não apenas no /announce.php; portanto, o bloqueio por URL não é útil.
Além disso, essa abordagem é viável ou causará muita carga e devo continuar descartando essas solicitações antes que elas cheguem ao Apache?
Atualizar:
Acontece que esse problema afetou muitas pessoas em muitos países ao redor do mundo.
Existem inúmeros relatórios e postagens de blog sobre o assunto e várias soluções para bloquear esse tráfego.
Reunimos alguns dos relatórios para ajudar quem vem aqui procurando uma solução para bloquear isso.
Misterioso tráfego chinês mal direcionado: como posso descobrir qual servidor DNS uma solicitação HTTP usou?
Logon Bittorrent estranho no meu servidor
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- dando /