Negli ultimi giorni ho notato che alcuni server venivano martellati con richieste sconosciute.
La maggior parte di questi sono i seguenti:
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 -
Dopo un po 'di registrazione e ricerca ho scoperto che alcuni ISP cinesi (probabilmente CERNET secondo i risultati di whatsmydns.net) e alcuni ISP turchi (probabilmente TTNET) rispondono a domande DNS come a.tracker.thepiratebay.org
con vari IP che non hanno nulla a che fare con piratebay o torrent. In altre parole, sembrano fare una sorta di avvelenamento da cache DNS per qualche bizzarro motivo.
Quindi centinaia (se non migliaia) di clienti bittorrent in quei paesi fanno tonnellate di "annunci" ai miei server web, il che si traduce in un attacco DDoS che riempie tutte le connessioni di Apache.
Al momento ho bloccato del tutto la Cina e la Turchia e fa il suo lavoro, ma vorrei trovare un modo migliore per bloccare quelle richieste.
Stavo pensando di bloccare quelle richieste con mod_security basato sull'intestazione dell'host HTTP.
Tutte queste richieste includono un'intestazione host HTTP come a.tracker.thepiratebay.org
(o molti altri sottodomini del dominio thepiratebay.org).
Ecco un dump delle intestazioni della richiesta tramite la $_SERVER
variabile 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
Quindi la mia domanda è: come posso bloccare le richieste in arrivo ad Apache in base al dominio della richiesta (intestazione host HTTP)? Tieni presente che le richieste si trovano su vari URL non solo /announce.php, quindi il blocco tramite URL non è utile.
Inoltre, questo approccio è praticabile o causerà un carico eccessivo e dovrei continuare a eliminare quelle richieste prima ancora che raggiungano Apache?
Aggiornare:
Si scopre che questo problema ha colpito molte persone in molti paesi del mondo.
Ci sono stati numerosi report e blogposts a riguardo e varie soluzioni per bloccare questo traffico.
Ho raccolto alcuni dei rapporti per aiutare chiunque venga qui a cercare una soluzione per bloccarlo.
Misterioso traffico cinese indirizzato in modo errato: come posso sapere quale server DNS è stato utilizzato da una richiesta HTTP?
Strano Bittorrent Accedi al mio server
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+Varieus+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/