我正在尝试学习 ufw,想知道是否可以用它来阻止已建立的连接。
我已经使用 telnet 在我的两台计算机之间建立了连接,并且我正尝试使用 ufw 来阻止它。
尝试了很多规则,但没有效果:
ufw deny in from IP to any
ufw deny out from IP to any
ufw deny in from any to IP
ufw deny out from any to IP
ufw deny port 23
Telnet 连接仍在运行。如果我关闭连接然后尝试再次连接,ufw 会正确阻止 telnet,但我想知道为什么我无法阻止已建立的连接。
答案1
ufw 实现了有状态的防火墙,其中仅根据基于端口的规则检查“打开”数据包,但其余连接会立即被隐藏的“允许 conntrack 已知的数据包”规则接受,而不需要经过其余规则集。
(在 iptables 中,这将是-m state --state ESTABLISHED
规则。)
您可以使用以下conntrack
命令删除现有连接的状态条目:
conntrack -D -s <bad_ip>
conntrack -D -p tcp --dport 23
(理论上,“ufw 拒绝”可以自动删除 conntrack 状态。但也许是故意不这么做的,这样人们就不会因为意外阻止了 SSH 端口而将自己锁定在远程服务器之外。