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 /
Respostas:
O mesmo problema aqui. Estou usando o mod_security para bloquear o agente do usuário
Eu alteraria o log para nolog depois de verificar se está funcionando para evitar o preenchimento do seu arquivo de log
fonte
SecRule REQUEST_URI "\?info_hash\=" "id:10000002,rev:1,severity:2,nolog,msg:'Torrent Announce Hit Detected'"
dig a.tracker.thepiratebay.org
de qualquer servidor DNS nesta lista public-dns.tk/nameserver/cn.html e em cada solicitação há uma resposta diferente. O mesmo para otracker.thepiratebay.org
qual também apareceu em nosso Anfitrião: cabeçalhos. Há um post sobre isso em viewdns.info/research/… com alguns sites adicionais. Tentar reverter alguns dos endereços retornados usando viewdns.info/reverseip mostra que é praticamente aleatório.Estamos enfrentando exatamente o mesmo problema em um dos sites de nossos clientes. Eu adicionei o seguinte próximo ao topo deles:
O RewriteCond comentado pode ser descomentado para bloquear apenas um agente de usuário específico. Mas eles não têm conteúdo em anunciar ou anuncie.php, então apenas bloqueamos tudo.
fonte
Estou tendo o mesmo problema no momento, tendo rastreadores de torrents apontados para o meu servidor. Eu experimentei o iptables nos últimos dias e examinei os cabeçalhos e os padrões das solicitações e reduzi-o a algumas regras do iptables que filtram praticamente todo o tráfego aparentemente malicioso recente da Ásia (China, Malásia, Japão e Hong Kong).
Abaixo estão as regras. Espero que ajude alguém.
fonte
REJECT
vez de,DROP
por algum motivo específico? (ou seja: os clientes podem parar depois de receber umaREJECT
?)--string "GET /announce"
entanto, vamos cobrir o pedido real .Eu escrevi um post sobre como dizer aos clientes do BitTorrent para ir embora e nunca mais voltar, semelhante ao que Dan fez, mas usando o nginx.
Os rastreadores de torrents (normalmente) têm um URL padrão que começa com
/announce
ou/scrape
, portanto, eu não descartaria a filtragem por URL tão rapidamente. Funciona.A publicação completa está em - http://dvps.me/ddos-attack-by-torrent
fonte
DNS Cache Poisoning
CERNET na China responder a domínios TPB com IPs aleatórios e não chineses. O AFAIK PEX é para compartilhar pares, não rastreadores. Você pode elaborar mais sobre isso ou fornecer alguma documentação?a.tracker.thepiratebay.org
outracker.thepiratebay.org
pode ser ou não o destino real desses clientes. Ele também pode ser clientes falsificados apenas mascarando-se como bittorents chineses :)Eu peguei os intervalos de ip em chinês em: http://www.wizcrafts.net/chinese-blocklist.html e os bloquei no meu firewall csf, aqui estão os intervalos no caso de você querer copiar e colar na sua lista de negar ip do csf :
fonte
CC_DENY = "CN"
no/etc/csf/csf.conf
e ele irá localizar automaticamente os prefixos chineses com base no banco de dados de GeoIP de MaxMind.