Ubuntu 防火墙 ufw(iptables)添加规则不生效的问题和解决方法

2023-11-21 764 0

最近有个网站被人写了个爬虫一直在爬,封掉了 IP 还在爬,很郁闷,明明 ufw 显示规则已经生效了,但是就是没法把 IP 封禁掉。这已经严重影响网站访问了,所以就在网上搜索一下到底为什么,然后发现是 ufw 的一个 bug,在此记录一下。iptables 同理。

一、Ubuntu 防火墙 ufw 问题记录

系统 Ubuntu 20.04,ufw 禁止 IP 地址 A.B.C.D 的访问:

ufw deny from A.B.C.D to any

结果监控里面 A.B.C.D 的 IP 还是在大量连接。

然后 ufw status 看了下状态,规则生效了啊,甚至重新 reload也没用,怎么回事呢?

上网一搜发现有类似的问题。比如:

UFW (iptables) 规则的匹配基于规则出现的顺序,一旦匹配某个规则,检查便会停止。因此,如果某个规则允许访问 TCP 端口 22 (如使用 udo ufw allow 22),后面另一个规则指示拦截某个 IP 地址(如使用 ufw deny proto tcp from A.B.C.D to any port 22)。最终,允许访问 TCP 端口 22 的规则会被使用,而后一个拦截黑客 IP 地址 A.B.C.D 却没有被使用。

这都是由于规则的顺序造成的。为避免这类问题,你需要编辑 /etc/ufw/before.rules文件,在“# End required lines”之后”Block an IP Address”添加规则。

二、Ubuntu 防火墙 ufw 问题解决

所以 vim /etc/ufw/before.rules

查找如下所示的行:

# End required lines

添加规则来拦截黑客或垃圾信息传播者:

# Block spammers
-A ufw-before-input -s A.B.C.D -j DROP

保存并关闭文件。最后,让防火墙重新加载配置信息:

ufw reload

这样折腾一圈,果然生效了。不过不理解这 ufw 的设计逻辑,也许有其他需求会这样,但对于大多数简单的拦截 IP 等应用环境,这个逻辑更像一个 bug。

    相关文章

    深入解析谷歌独立站服务器:功能与优势
    如何有效利用WordPress的古腾堡编辑器创建和管理可重复使用的区块?
    宜宾服务器租用代理详解 | 优势、选择与常见问题
    选择国外独立服务器的指南与推荐
    如何快速识别你的Linux发行版及其版本?掌握查看系统信息的关键命令!
    CentOS删除子文件夹文件夹

    发布评论