服务器老是有ip不停尝试连接,看了下没造成大问题也没管他。今天偶然发现某个ip疯狂连接,想想还是把他封了算了。以前用Ubuntu和Debian系的iptables用起来不是很方便,现在正好是试一下新的ufw。

系统ubuntu 18.04,ufw禁止ip A.B.C.D的访问

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

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

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

上网一搜发现有类似的问题。比如 http://www.sohu.com/a/112544764_457968

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"添加规则。

所以 vi /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。

标签: ,

留下回复(本站有评论邮件通知功能)