我正在尝试DROP
除 iptables 中的一个端口之外的所有端口。
运行以下命令后:
iptables -N WHITELIST
iptables -A INPUT --jump WHITELIST
iptables -A WHITELIST --protocol tcp --match tcp --dport 4444 --jump DROP
iptables -A WHITELIST --jump ACCEPT
我可以在端口 4444 和另一个任意端口上启动 netcat 监听器,并且可以确认我无法连接到端口 4444,但可以连接到另一个端口。
然而,尝试像这样翻转这些命令:
iptables -N WHITELIST
iptables -A INPUT -j WHITELIST
iptables -A WHITELIST --protocol tcp --match tcp --dport 4444 --jump ACCEPT
iptables -A WHITELIST --jump DROP
即使在端口 4444 上,也不接受入站连接。我可以确认指令的顺序正确,如上所示,并且我刷新并删除每个测试之间的每个链和相关指令。
如何阻止 iptables 中除少数端口之外的所有端口? TIA。
编辑:
当在没有人建议的情况下运行测试时,我最终得到如下日志dmesg
:
[ 1962.379494] IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=4444 DPT=57378 WINDOW=65483 RES=0x00 ACK SYN URGP=0
[ 1962.379503] IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=4444 DPT=57378 WINDOW=65483 RES=0x00 ACK SYN URGP=0
另一个有趣的事情是,这似乎也阻止了出站流量,使我无法从 Firefox 访问网站。
答案1
只需指定一个网络接口,如下所示:
iptables -N WHITELIST
iptables -A INPUT -j WHITELIST
iptables -i wlan0 -A WHITELIST --protocol tcp --match tcp --dport 4444 --jump ACCEPT
iptables -i wlan0 -A WHITELIST --jump DROP
解决入站连接问题以及允许出站连接问题。