Ces derniers jours, j'ai remarqué que certains serveurs étaient soumis à des requêtes inconnues.
La plupart d'entre eux sont les suivants:
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 -
Après un peu de journalisation et de recherche, j'ai découvert que certains FAI chinois (probablement CERNET selon les résultats de whatsmydns.net) et certains FAI turcs (probablement TTNET) répondent aux requêtes DNS telles que a.tracker.thepiratebay.org
diverses IP qui n'ont rien à voir avec piratebay ou des torrents. En d'autres termes, ils semblent faire une sorte d'empoisonnement du cache DNS pour une raison bizarre.
Ainsi, des centaines (sinon des milliers) de clients bittorrent sur ces pays font des tonnes d '«annonces» à mes serveurs Web, ce qui entraîne à peu près une attaque DDoS remplissant toutes les connexions d'Apache.
Pour le moment, j'ai complètement bloqué la Chine et la Turquie et cela fait l'affaire, mais je voudrais trouver un meilleur moyen de bloquer ces demandes.
Je pensais à bloquer ces demandes avec mod_security basé sur l'en-tête de l'hôte HTTP.
Toutes ces demandes incluent un en-tête d'hôte HTTP comme a.tracker.thepiratebay.org
(ou de nombreux autres sous-domaines du domaine piratebay.org).
Voici un vidage des en-têtes de demande via la $_SERVER
variable 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
Donc, ma question est, comment puis-je bloquer les demandes entrantes vers Apache en fonction du domaine de demande (en-tête de l'hôte HTTP)? Gardez à l'esprit que les requêtes se trouvent sur différentes URL et pas seulement sur /announce.php, donc le blocage par URL n'est pas utile.
Cette approche est-elle également viable ou causera-t-elle trop de charge et je devrais continuer à supprimer ces demandes avant même qu'elles n'atteignent Apache?
Mise à jour:
Il s'avère que ce problème a touché de nombreuses personnes dans de nombreux pays du monde.
Il y a eu de nombreux rapports et articles de blog à ce sujet et diverses solutions pour bloquer ce trafic.
J'ai rassemblé certains des rapports pour aider ceux qui viennent ici à chercher une solution pour bloquer cela.
Mystérieux trafic chinois mal dirigé: comment savoir quel serveur DNS une requête HTTP a utilisé?
Strange Bittorrent Log On My 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-attaques-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- donnant/
Réponses:
Même problème ici. J'utilise mod_security pour bloquer l'agent utilisateur
Je changerais le journal en nolog après avoir vérifié qu'il fonctionne pour éviter de remplir votre fichier journal
la source
SecRule REQUEST_URI "\?info_hash\=" "id:10000002,rev:1,severity:2,nolog,msg:'Torrent Announce Hit Detected'"
dig a.tracker.thepiratebay.org
partir de n'importe quel serveur DNS dans cette liste public-dns.tk/nameserver/cn.html et à chaque demande il y a une réponse différente. Idem pourtracker.thepiratebay.org
qui figurait également dans notre Host: en-têtes. Il y a un article à ce sujet sur viewdns.info/research/… avec quelques sites supplémentaires. Essayer d'inverser certaines des adresses retournées en utilisant viewdns.info/reverseip montre que c'est à peu près aléatoire.Nous rencontrons exactement le même problème avec l'un des sites de nos clients. J'ai ajouté ce qui suit en haut de leur:
Le RewriteCond commenté peut être décommenté pour ne bloquer qu'un agent utilisateur spécifique. Mais ils n'ont aucun contenu sur announce ou announce.php, nous avons donc tout bloqué.
la source
J'ai le même problème en ce moment, ayant des trackers torrent pointant sur mon serveur. J'ai expérimenté avec iptables au cours des deux derniers jours et inspecté les en-têtes et les modèles des demandes et les ai réduits à quelques règles iptables qui filtrent à peu près tout le trafic récent apparemment malveillant en provenance d'Asie (Chine, Malaisie, Japon et Hong Kong).
Voici les règles. J'espère que cela aide quelqu'un.
la source
REJECT
lieu deDROP
pour une raison particulière? (c'est-à-dire: les clients peuvent arrêter après avoir reçu unREJECT
?)--string "GET /announce"
cependant avec pour couvrir la demande réelle .J'ai écrit un article de blog sur la façon de dire correctement aux clients BitTorrent de partir et de ne jamais revenir, similaire à ce que Dan a fait, mais en utilisant nginx.
Les trackers torrent (généralement) ont une URL standard qui commence par
/announce
ou/scrape
, donc je ne rejetterais pas le filtrage par URL si rapidement. Ça marche.Le post complet est à - http://dvps.me/ddos-attack-by-torrent
la source
DNS Cache Poisoning
que CERNET en Chine répond aux domaines TPB avec des adresses IP aléatoires et non chinoises. AFAIK PEX est pour partager des pairs, pas des trackers. Pouvez-vous nous en dire plus à ce sujet ou fournir de la documentation?a.tracker.thepiratebay.org
outracker.thepiratebay.org
pourrait être ou non la cible réelle de ces clients. Il peut aussi s'agir de faux clients se faisant passer pour des bittorents chinois :)j'ai pris les plages IP chinoises de: http://www.wizcrafts.net/chinese-blocklist.html et les ai bloquées dans mon pare-feu csf, voici les plages au cas où vous voudriez copier et coller dans votre liste ip de refus de csf :
la source
CC_DENY = "CN"
sur/etc/csf/csf.conf
et il détectera automatiquement les préfixes chinois sur la base de la base de données GeoIP de Maxmind.