尽管接受规则,iptables 仍会在端口更改后阻止通过 ssh 连接

尽管接受规则,iptables 仍会在端口更改后阻止通过 ssh 连接

我有两台机器连接到路由器,一台是带有 PuTTY 的 Windows,另一台是带有 sshd 的 CentOS 6.4,并且默认的 SELinux 仍然处于启用状态。他们都能成功互相 ping 通。

我安装了policycore-python包,这样我就可以使用semanage,然后按照这些方向

第 4 步看起来像是新的默认设置,因为它已经这样设置了。

第 5 步有效,我假设有关内容~/.ssh/config是在另一台计算机上设置 ssh 客户端,因此它不适用(我可以在 PuTTY 中执行类似的操作。)

第6步我认为最短且最适用的是第三个选项,所以我运行:

iptables -A INPUT -p tcp --dport 2345 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 2345 --syn -j DROP
service iptables save
service iptables restart

此时,我可以在 CentOS 盒子上ssh -p 2345 localhost正常ssh -p 2345 192.168.1.4登录,但我无法再使用 PuTTY 进入 CentOS 盒子。我在连接窗口中输入了正确的 IP 和端口 2345,但在尝试连接时,我看到黑屏,并带有纯绿色光标,几秒钟后,会出现一个 GUI 弹出窗口,显示Network error: Connection timed out

如果我停止 iptables 服务,我可以用同样的方式使用PuTTY登录。所以看来问题肯定是与iptables和不sshd(也不是semanage?)。

我的怎么了iptables

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:2345 flags:FIN,SYN,RST,ACK/SYN limit: avg 1/min burst 3
DROP       tcp  --  anywhere             anywhere            tcp dpt:2345 flags:FIN,SYN,RST,ACK/SYN

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

答案1

REJECT规则必须在新规则之后制定。做这个:

$ sudo service iptables stop
[sudo] password for kev:
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
$ sudo nano /etc/sysconfig/iptables
$ sudo service iptables start

当nano打开时,剪掉该REJECT行并在两个新规则下面将其取消剪掉,然后写出并退出。

另外,您只需要从本地主机 ssh 一次,然后就可以从外部执行此操作。

相关内容