ufw 暂时拒绝 localhost 上的端口以进行本地测试

ufw 暂时拒绝 localhost 上的端口以进行本地测试

我不明白为什么这两个命令不能在本地阻止端口 8391。

sudo ufw reject from 127.0.0.1 to 127.0.0.1 port 8391

telnet 127.0.0.1 8391
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
# [manual cancelling]
Connection closed by foreign host.

根据我的理解,第一个命令应该阻止与 localhost 上任一端点连接的端口 8391 的所有网络流量,而第二个命令应该失败,因为它在端口 8391 上启动从 localhost 到 localhost 的 telnet 会话。但是,8391(不是 23)上的 telnet 建立了成功连接。

我有一些在端口 8391 上建立连接的代码,我想看看当端口被阻止时它是否会正常失败(通常不应该出现这种情况,但我想测试一下)。

答案1

这个问题在帖子中讨论 使用 ufw 拒绝来自本地主机

Lucky.V 给出的不被接受的答案似乎更好地解决了这个问题:

据我尝试,使用 ufw 是不可能的。

ufw 将用户定义的规则存储到单独的 iptables 链中(ufw-用户输入用于 INPUT 链等等)。

不幸的是,如果你检查 INPUT 链,ufw-用户输入 子链是最后一个。第一个叫做ufw-输入前 并包含接受所有本地主机通信的规则。由于这一点,iptables 永远不会到达您的本地主机规则,如果在ufw-用户输入

最后,我通过将该规则作为 INPUT 链中的第一条规则直接插入来禁用本地主机通信。这可以通过以下方式完成:

sudo iptables  -I INPUT -p tcp -i lo --dport 5702 -j DROP

这将丢弃所有进入本地主机 TCP 端口 5702 的数据包。

如果要检查 iptables 中的所有链,请使用:

sudo iptables -nvL

您需要直接使用 iptables,而不是 ufw。

相关内容