W ciągu ostatnich kilku dni zauważyłem, że niektóre serwery są hamowane nieznanymi żądaniami.
Większość z nich wygląda następująco:
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 -
Po pewnym zalogowaniu i wyszukiwaniu dowiedziałem się, że jakiś chiński dostawca usług internetowych (prawdopodobnie CERNET według wyników whatsmydns.net) i turecki dostawca usług internetowych (prawdopodobnie TTNET) odpowiada na zapytania dns, takie jak a.tracker.thepiratebay.org
różne adresy IP, które nie mają nic wspólnego z piratebay lub torrenty. Innymi słowy, wydają się robić jakieś zatrucie pamięci podręcznej DNS z jakiegoś dziwnego powodu.
Tak więc setki (jeśli nie tysiące) bittorrentowych klientów w tych krajach przekazuje mnóstwo „zapowiedzi” moim serwerom internetowym, które powodują atak DDoS wypełniający wszystkie połączenia Apache.
W tej chwili całkowicie zablokowałem Chiny i Turcję i spełnia to zadanie, ale chciałbym znaleźć lepszy sposób na zablokowanie tych wniosków.
Myślałem o zablokowaniu tych żądań za pomocą mod_security na podstawie nagłówka hosta HTTP.
Wszystkie te żądania obejmują nagłówek hosta HTTP, taki jak a.tracker.thepiratebay.org
(lub wiele innych subdomen domeny thepiratebay.org).
Oto zrzut nagłówków żądań poprzez $_SERVER
zmienną 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
Więc moje pytanie brzmi: jak mogę blokować przychodzące żądania do Apache na podstawie domeny żądania (nagłówek hosta HTTP)? Pamiętaj, że żądania dotyczą różnych adresów URL, a nie tylko /announce.php, więc blokowanie według adresów URL nie jest przydatne.
Czy to podejście jest wykonalne, czy też spowoduje zbyt duże obciążenie i powinienem porzucić te żądania, zanim dotrą one do Apache?
Aktualizacja:
Okazuje się, że problem ten dotknął wiele osób w wielu krajach na całym świecie.
Pojawiło się wiele raportów i postów na blogu oraz różne rozwiązania blokujące ten ruch.
Zebrałem niektóre raporty, aby pomóc każdemu, kto tu przyjdzie, szukając rozwiązania tego problemu.
Tajemniczy źle skierowany ruch chiński: Jak mogę dowiedzieć się, jakiego serwera DNS użyło żądanie HTTP?
Dziwne Bittorrent Zaloguj się na moim serwerze
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- dający/
Odpowiedzi:
Ten sam problem tutaj. Korzystam z mod_security, aby zablokować klienta użytkownika
Zmieniłem dziennik na nolog po sprawdzeniu, czy działa, aby uniknąć zapełniania pliku dziennika
źródło
SecRule REQUEST_URI "\?info_hash\=" "id:10000002,rev:1,severity:2,nolog,msg:'Torrent Announce Hit Detected'"
dig a.tracker.thepiratebay.org
z dowolnego serwera DNS na tej liście public-dns.tk/nameserver/cn.html, a na każde żądanie jest inna odpowiedź. To samo, w przypadkutracker.thepiratebay.org
którego pojawił się również nasz Host: nagłówki. Jest post na ten temat na viewdns.info/research/… z kilkoma dodatkowymi stronami. Próba odwrócenia niektórych zwróconych adresów za pomocą viewdns.info/reverseip pokazuje, że jest to dość losowe.Mamy dokładnie ten sam problem z jedną z witryn naszego klienta. Dodałem następujące u góry ich:
Skomentowane RewriteCond można odkomentować, aby zablokować tylko określonego klienta użytkownika. Ale nie mają żadnych treści na announce lub announce.php, więc właśnie to wszystko zablokowaliśmy.
źródło
W tej chwili mam ten sam problem - śledzenie torrentów wskazuje mój serwer. Przez ostatnie kilka dni eksperymentowałem z iptables, sprawdziłem nagłówki i wzorce żądań i zawęziłem go do kilku reguł iptables, które filtrują prawie cały pozornie złośliwy ruch z Azji (Chiny, Malezja, Japonia i Hongkong).
Poniżej znajdują się zasady. Mam nadzieję, że to komuś pomoże.
źródło
REJECT
zDROP
jakiegoś konkretnego powodu? (tzn. klienci mogą przestać otrzymywać wiadomośćREJECT
?)--string "GET /announce"
jednak pokryć faktyczną prośbę.Napisałem post na blogu o tym, jak prawidłowo powiedzieć klientom BitTorrenta, aby odeszli i nigdy nie wracali, podobnie jak zrobił to Dan, ale używając nginx.
Urządzenia śledzące torrent (zwykle) mają standardowy adres URL rozpoczynający się od
/announce
lub/scrape
, więc nie odrzuciłbym tak szybko filtrowania według adresu URL. To działa.Pełny post znajduje się na stronie - http://dvps.me/ddos-attack-by-torrent
źródło
DNS Cache Poisoning
ponieważ CERNET w Chinach odpowiada na domeny TPB losowymi i nie chińskimi adresami IP. AFAIK PEX służy do udostępniania elementów równorzędnych, a nie elementów śledzących. Czy możesz opracować więcej na ten temat lub dostarczyć dokumentację?a.tracker.thepiratebay.org
lubtracker.thepiratebay.org
może być lub nie być faktycznym celem tych klientów. Mogą to być również fałszywi klienci, którzy po prostu maskują się jak chińskie bittorenty :)wziąłem chińskie zakresy adresów IP z: http://www.wizcrafts.net/chinese-blocklist.html i zablokowałem je w mojej zaporze csf, oto zakresy na wypadek, gdybyś chciał skopiować i wkleić na listę odmówionych adresów csf :
źródło
CC_DENY = "CN"
na/etc/csf/csf.conf
który automatycznie znaleźć chińskich prefiksy opartych na bazie GeoIP MaxMind użytkownika.