今天工作的时候我一直在跟踪我的服务器的访问日志,并且发现我的一个客户的 wordpress 网站受到了来自国外 IP 的登录尝试的攻击。
我想拒绝来自该 IP 地址的访问,并尝试了以下 ufw 命令:
sudo ufw deny from xx.xx.xx.xx to any
我看到规则已添加并且防火墙已激活,但我仍然看到从该 IP 地址发往登录页面的大量帖子。
我也尝试过使用 iptables,尽管我对该工具不太熟悉:
sudo iptables -A INPUT -s xx.xx.xx.xx -j DROP
我做错了吗?我认为在拒绝访问 IP 地址后,它不会在我的 apache 访问日志中显示 200 ok 状态,用于发布到登录页面。
编辑:正如我提到的,ufw 处于活动状态并且规则已到位,这是 ufw 状态的输出(IP 已被阻止):
root@mel:~# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
1723 ALLOW Anywhere
8080 ALLOW Anywhere
6273 ALLOW Anywhere
36728 DENY Anywhere
Anywhere DENY xx.xx.xx.xx
22 ALLOW Anywhere (v6)
80 ALLOW Anywhere (v6)
1723 ALLOW Anywhere (v6)
8080 ALLOW Anywhere (v6)
6273 ALLOW Anywhere (v6)
36728 DENY Anywhere (v6)
答案1
防火墙规则的顺序很重要。由于您一开始就允许所有端口 80,因此此规则将匹配所有请求,而后面的拒绝规则将永远不会被匹配。
所以,如果你需要阻止某些事情尤其是,将其放在开头,然后允许全部。
要查看带有参考编号的规则,请使用以下命令:
sudo ufw status numbered
然后先删除已添加的拒绝规则:
sudo ufw delete rule_number_here
然后在顶部再次添加:
sudo ufw insert 1 deny from xx.xx.xx.xx to any
进一步参考:https://help.ubuntu.com/community/UFW#Deny_Access
还请注意,ufw 不是缓解此类攻击的最佳工具。尝试使用失败2ban,可以动态地执行此操作。
答案2
对于 UFW 维护(添加新的拒绝规则),我通常更喜欢以下顺序:
- 添加新的拒绝规则
- 删除允许规则
- 再次添加允许规则
端口 80 和 443 如下所示:
sudo ufw deny from xx.xx.xx.xx to any
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
最后,我检查规则是否正确
sudo ufw status numbered
答案3
不要相信 ufw,它是由一些自视甚高的人编写的,好像他们是上帝,但它不起作用。我已经阻止了这么多 IP,但他们仍然继续攻击我的服务器。