Ssh
儘管接受規則,iptables 在埠更改後阻止通過 ssh 連接
我有兩台機器連接到路由器,一台帶有 PuTTY 的 Windows,以及一台帶有 sshd 且仍啟用預設 SELinux 的 CentOS 6.4。他們都可以成功地相互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
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
在兩條新規則下方剪斷線並取消它,然後寫出並退出。此外,您只需要從 localhost 進行 ssh 一次,然後才能從外部執行此操作。