En los últimos días me di cuenta de que algunos servidores están siendo bombardeados con solicitudes desconocidas.
La mayoría de ellas son como las siguientes:
60.246.*.* - - [03/Ene/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 -
Después de un poco de registro y búsqueda, descubrí que algunos proveedores de servicios de Internet chinos (probablemente CERNET según los resultados de whatsmydns.net) y turcos (probablemente TTNET) responden a consultas de DNS como a.tracker.thepiratebay.org
con varias IPs que no tienen nada que ver con piratebay o torrents. En otras palabras, parece que están realizando algún tipo de Envenenamiento de Caché DNS por alguna razón extraña.
Entonces, cientos (si no miles) de clientes de BitTorrent en esos países realizan montones de 'anuncios' a mis servidores web, lo que resulta prácticamente en un ataque de denegación de servicio llenando todas las conexiones de Apache.
En este momento he bloqueado a China y Turquía por completo y funciona, pero me gustaría encontrar una mejor manera de bloquear esas solicitudes.
Estaba pensando en bloquear esas solicitudes con mod_security basado en el encabezado Host HTTP.
Todas esas solicitudes incluyen un encabezado Host HTTP como a.tracker.thepiratebay.org
(o muchos otros subdominios del dominio thepiratebay.org).
Aquí tienes un volcado de los encabezados de la solicitud a través de la variable $_SERVER
de 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
Entonces mi pregunta es, ¿cómo puedo bloquear las solicitudes entrantes a Apache basadas en el dominio de la solicitud (encabezado Host HTTP)? Ten en cuenta que las solicitudes están en varias URL no solo en /announce.php, por lo que bloquear por URL no es útil.
¿También es viable este enfoque o causará demasiada carga y debería seguir rechazando esas solicitudes antes de que lleguen a Apache?
Actualización:
Resulta que este problema ha afectado a muchas personas en muchos países de todo el mundo.
Ha habido numerosos informes y publicaciones en blogs al respecto y diversas soluciones para bloquear este tráfico.
He recopilado algunos de los informes para ayudar a cualquiera que venga aquí buscando una solución para bloquear esto.
Trafico chino misterioso desviado: ¿Cómo puedo averiguar qué servidor DNS usó una solicitud HTTP?
Registro de BitTorrent extraño en mi 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-attacks-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-giving/
1 votos
Estoy viendo un problema similar a este, he bloqueado las solicitudes pero me preguntaba cómo habías descubierto qué proveedores de servicios de Internet estaban devolviendo las direcciones IP incorrectas. Estoy interesado en averiguar de dónde provienen las solicitudes, así que parece ser un buen punto de partida.
0 votos
Según whatsmydns.net y otros verificadores globales de propagación de DNS, CERNET y CPIP en China y TTNET en Turquía responden a consultas en varios subdominios de thepiratebay.org a varias IPs cuando ese dominio no resuelve en ningún otro ISP alrededor del planeta.
2 votos
Estoy experimentando exactamente lo mismo y comenzó más o menos en el mismo momento que tú lo notaste. Facebook, Bittorrent, sitios de pornografía. pero lo más notable es este constante anuncio del Pirate Bay. serverfault.com/questions/658433/… Estoy utilizando nginx y he devuelto un código de error 444 si el host no coincide.
0 votos
Las solicitudes para anunciar se han reducido bastante. tal vez fue una mala configuración temporal de DNS. ¿sigues viendo tráfico?
2 votos
Para ser honesto, terminé bloqueando a China a nivel de firewall después de todo porque incluso con mod_security llenarían todas las conexiones de Apache. Así que no me he dado cuenta si las solicitudes se han reducido.
0 votos
viewdns.info/research/…
0 votos
La pregunta en serverfault.com/questions/658433 contiene la respuesta usando nginx, bloqueando solicitudes basadas en el encabezado
Host
.