Cha*_*a0s 16 http bittorrent mod-security apache-2.2
最近几天,我注意到一些服务器受到未知请求的影响。
他们中的大多数是这样的:
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 -
Run Code Online (Sandbox Code Playgroud)
经过一些记录和搜索,我发现一些中国 ISP(根据 whatsmydns.net 的结果可能是 CERNET)和一些土耳其 ISP(可能是 TTNET)响应 dns 查询,例如a.tracker.thepiratebay.org
使用与piratebay 无关的各种 IP或种子。换句话说,他们似乎出于某种奇怪的原因进行了某种 DNS 缓存中毒。
因此,这些国家/地区的数百个(如果不是数千个)bittorrent 客户端向我的网络服务器发出大量“通知”,这几乎导致 DDoS 攻击填满了 Apache 的所有连接。
目前,我完全阻止了中国和土耳其,它可以完成工作,但我想找到一种更好的方法来阻止这些请求。
我正在考虑使用基于 HTTP 主机标头的 mod_security 阻止这些请求。
所有这些请求都包含一个 HTTP Host 标头a.tracker.thepiratebay.org
(或 thepiratebay.org 域的许多其他子域)。
这是通过 PHP$_SERVER
变量的请求标头转储。
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
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何根据请求域(HTTP 主机标头)阻止对 Apache 的传入请求?请记住,请求位于不同的 URL 上,而不仅仅是 /announce.php,因此通过 URL 阻止是没有用的。
这种方法是否可行,还是会导致过多的负载,我应该在它们到达 Apache 之前继续删除这些请求?
事实证明,这个问题已经影响到全球许多国家的许多人。
有很多关于它的报告和博客文章以及阻止此流量的各种解决方案。
我收集了一些报告,以帮助来这里寻找阻止此问题的解决方案的任何人。
神秘的错误定向中文流量:如何找出 HTTP 请求使用的 DNS 服务器?
奇怪的 Bittorrent 登录我的服务器
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-给予/
小智 7
同样的问题在这里。我正在使用 mod_security 来阻止用户代理
SecRule REQUEST_HEADERS:User-Agent "Bittorrent" "id:10000002,rev:1,severity:2,log,msg:'Bittorrent Hit Detected'"
Run Code Online (Sandbox Code Playgroud)
在您验证它正在工作后,我会将日志更改为 nolog 以避免填满您的日志文件
SecRule REQUEST_HEADERS:User-Agent "Bittorrent" "id:10000002,rev:1,severity:2,nolog,msg:'Bittorrent Hit Detected'"
Run Code Online (Sandbox Code Playgroud)
小智 5
我们在我们客户的网站之一上遇到了完全相同的问题。我在他们的顶部附近添加了以下内容:
# Drop Bittorrent agent 2015-01-05 before redirect to https
<IfModule mod_rewrite.c>
RewriteEngine on
# RewriteCond %{HTTP_USER_AGENT} =Bittorrent
RewriteRule ^/announce$ - [F]
RewriteRule ^/announce\.php$ - [F]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
注释掉的 RewriteCond 可以取消注释以仅阻止特定的用户代理。但是他们在announce 或announce.php 中没有内容,所以我们只是将其全部屏蔽了。
我写了一篇关于如何正确告诉 BitTorrent 客户端离开并且永不回来的博客文章,类似于 Dan 所做的,但使用的是 nginx。
server {
location /announc {
access_log off;
error_log off;
default_type text/plain;
return 410 "d14:failure reason13:not a tracker8:retry in5:nevere";
}
}
Run Code Online (Sandbox Code Playgroud)
Torrent 跟踪器(通常)有一个以/announce
or开头的标准 URL /scrape
,所以我不会这么快地关闭 URL 过滤。有用。
完整帖子位于 - http://dvps.me/ddos-attack-by-torrent
小智 5
我目前遇到了同样的问题,将 Torrent 跟踪器指向我的服务器。过去几天我一直在尝试使用 iptables 并检查请求的标头和模式,并将其缩小到几个 iptables 规则,这些规则几乎过滤掉了几乎所有最近来自亚洲(中国、马来西亚、日本和日本)的看似恶意的流量香港)。
以下是规则。希望它可以帮助某人。
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "Bittorrent" --to 1000 -j REJECT
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "spider" --to 1000 -j REJECT
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "announce" --to 1000 -j REJECT
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "deviantart" --to 1000 -j REJECT
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "Bittorrent" --to 1000 -j REJECT
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "baidu" --to 1000 -j REJECT
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "Baiduspider" --to 1000 -j REJECT
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16185 次 |
最近记录: |