在 Ubuntu 14 上,我发现一些奇怪的活动,看起来像是针对 Wordpress 页面的攻击。Apache 日志显示了很多这样的情况:
191.96.249.54 - - [25/May/2016:00:46:57 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.53 - - [25/May/2016:00:46:58 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.54 - - [25/May/2016:00:46:59 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.53 - - [25/May/2016:00:47:00 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
它看起来与这里描述的情况完全一样:http://blog.carlesmateo.com/2014/08/30/stopping-and-investigating-a-wordpress-xmlrpc-php-attack/
我首先想到的就是用 iptables 来阻止那些家伙,所以我输入了:
iptables -A INPUT -s 191.96.249.54 -j DROP
iptables -A INPUT -s 191.96.249.53 -j DROP
但它一直在继续。
因为我使用 UFW,所以我添加了 UFW 规则:
ufw deny from 191.96.249.54 to any
ufw deny from 191.96.249.53 to any
但情况没有任何改善。然后我禁用了 UFW,它就停止了!
Mu UFW 规则为(ufw 状态):
Status: active
To Action From
-- ------ ----
80 ALLOW Anywhere
443 ALLOW Anywhere
143 ALLOW Anywhere
993 ALLOW Anywhere
25/tcp ALLOW Anywhere
465/tcp ALLOW Anywhere
Anywhere DENY 191.96.249.54
Anywhere DENY 191.96.249.53
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
143 (v6) ALLOW Anywhere (v6)
993 (v6) ALLOW Anywhere (v6)
25/tcp (v6) ALLOW Anywhere (v6)
465/tcp (v6) ALLOW Anywhere (v6)
然后我意识到第一个规则是允许 http... 所以我删除了它并再次添加它,所以现在它位于链的末尾。这很有帮助。显然我应该像这样插入阻止规则:
ufw insert [position] [theRule]
我说得对吗?显然它有效,但这是一种好的做法吗?还是我应该用其他方法?
答案1
我建议了解一下ipset
。
与 UFW 的情况类似,iptables -A
附加在 netfilter 链末尾添加一条新规则。这意味着,如果在您添加的规则之前已有匹配的规则,则不会触发您的规则。
因此,就你的情况而言,你应该输入
iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP
默认情况下,将规则插入链中的第一个位置。
使用命令检查完整链iptables-save
。
现在,每次受到攻击时更改 iptables 规则链将非常成问题,并且充满危险,特别是当您使用“全面 DROP”时。此外还必须删除规则。
因此,请使用ipset
。下面是一份很好的指南,其中包含了很好的例子以及一些关于性能影响的分析:
http://daemonkeeper.net/781/mass-blocking-ip-addresses-with-ipset/
关键是输入这两个命令:
ipset create blacklist hash:ip hashsize 4096
iptables -I INPUT -m set --match-set blacklist src -p TCP \
--destination-port 80 -j DROP
现在您可以简单地将可疑的 IP 地址添加到集合中blacklist
,而不必再与规则处理顺序作斗争。