我正在尝试允许来自本地网络的 ssh 连接并删除同一端口(22)上的所有其他连接尝试,以下是我在 iptables 中的当前规则:
-A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
我在其他地方读过的所有文章似乎都说添加这些规则将允许本地 ssh 访问并放弃端口 22 上的所有其他连接尝试,但是最后一条规则也将始终导致连接断开,即使是从我的本地网络。
如果我的配置中只包含前两个规则,我可以通过 SSH 连接到主机,没有任何问题。但当我添加最后一条规则时,本地网络和其他任何地方的连接都会停止工作。
-A INPUT -p tcp -m tcp --dport 22 -j DROP
似乎 iptables 规则应该按从上到下的顺序读取,因此如果连接不满足上述任何规则,它最终将在最后一条规则中被丢弃,但这些规则似乎并非如此。任何关于如何修复此问题的建议都将不胜感激。
iptables 输出:
Chain INPUT (policy ACCEPT 852537 packets, 927902121 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 192.168.0.0/24 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 127.0.0.0/8 0.0.0.0/0 tcp dpt:22
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
104 6384 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
856 68020 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 29118 packets, 22261801 bytes)
pkts bytes target prot opt in out source destination
856 68020 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0