Vài ngày qua tôi nhận thấy một số máy chủ bị tấn công với các yêu cầu không xác định.
Hầu hết trong số họ là như sau:
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 -
Sau một chút đăng nhập và tìm kiếm, tôi phát hiện ra rằng một số ISP Trung Quốc (có thể là CERNET theo kết quả của whatsmydns.net) và một số ISP Thổ Nhĩ Kỳ (có thể là TTNET) trả lời các truy vấn dns như a.tracker.thepiratebay.org
với các IP khác nhau không liên quan đến piratebay hoặc torrent. Nói cách khác, họ dường như thực hiện một số loại Ngộ độc DNS Cache vì một lý do kỳ quái.
Vì vậy, hàng trăm (nếu không phải hàng ngàn) khách hàng bittorrent trên các quốc gia đó tạo ra hàng tấn 'thông báo' cho máy chủ web của tôi, điều này dẫn đến khá nhiều cuộc tấn công DDoS làm đầy tất cả các kết nối của Apache.
Hiện tại tôi đã chặn Trung Quốc và Thổ Nhĩ Kỳ hoàn toàn và nó thực hiện công việc, nhưng tôi muốn tìm một cách tốt hơn để chặn các yêu cầu đó.
Tôi đã nghĩ đến việc chặn các yêu cầu đó bằng mod_security dựa trên tiêu đề Máy chủ HTTP.
Tất cả các yêu cầu đó bao gồm tiêu đề Máy chủ HTTP như a.tracker.thepiratebay.org
(hoặc nhiều tên miền phụ khác của tên miền thepiratebay.org).
Đây là một bãi chứa các tiêu đề yêu cầu thông qua $_SERVER
biến của 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
Vì vậy, câu hỏi của tôi là, làm cách nào tôi có thể chặn các yêu cầu đến Apache dựa trên miền yêu cầu (tiêu đề Máy chủ HTTP)? Hãy nhớ rằng các yêu cầu nằm trên nhiều URL khác nhau không chỉ là /announce.php nên việc chặn bằng URL không hữu ích.
Ngoài ra, cách tiếp cận đó có khả thi hay nó sẽ gây ra quá nhiều tải và tôi nên tiếp tục bỏ các yêu cầu đó trước khi chúng đến được Apache?
Cập nhật:
Hóa ra vấn đề này đã ảnh hưởng đến nhiều người ở nhiều quốc gia trên toàn cầu.
Đã có nhiều báo cáo và blogpost về nó và các giải pháp khác nhau để chặn lưu lượng truy cập này.
Tôi đã thu thập một số báo cáo để giúp bất kỳ ai đến đây tìm kiếm giải pháp để chặn điều này.
Lưu lượng truy cập Trung Quốc sai lầm bí ẩn: Làm cách nào tôi có thể tìm ra máy chủ DNS mà yêu cầu HTTP được sử dụng?
Nhật ký Bittorrent kỳ lạ trên máy chủ của tôi
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-nhiên liệu-chinese-ddos-tấn-150.124 /
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- cho /