我有两台机器连接到路由器,一台是带有 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 一次,然后就可以从外部执行此操作。