如何配置 IPTables 以便它能夠僅有的允許 SSH 進入,且不允許其他流量進入或出去?
有人可以推薦任何安全預防措施嗎?
我有一台伺服器相信已成功從 GoDaddy 遷移,我相信不再使用。
但我想確定只是因為……你永遠不知道。 :)
請注意,這是來自 GoDaddy 的虛擬專用伺服器...這意味著沒有備份,而且幾乎沒有支援。
答案1
您只需將 INPUT 和 OUTPUT 鏈上的預設策略設為 DROP 即可。
要允許 SSH 進入,您需要以下命令:
$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
最後兩個命令允許環回流量,因為某些應用程式需要這樣做才能正常運作。您可以使用選項限制來自特定 IP 的 SSH 存取-s source_ip
。
依上所示順序執行命令將導致目前 SSH 會話掛起。這是因為 iptables 指令立即生效。您需要在 shell 腳本中執行它們,以避免在遠端執行它們時失去連接到電腦的能力。
答案2
像這樣的事情:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT # or iptables -P INPUT DROP
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP