Ssh

iptables 阻止 ssh 到 aws ec2 實例

  • January 7, 2017

我有一台執行 Windows 7 的家用筆記型電腦,並且剛剛設置了一個執行 Ubuntu 的 Amazon aws ec2 實例。Ubuntu 實例的公網 IP 地址為 34.195.109.193。我使用 PuTTY SSH 到 ec2 實例。我發現在 Ubuntu 實例上如下設置 iptables 規則會阻止我使用 ssh 訪問 Ubuntu ec2 實例。

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -d 34.195.109.193 -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -j DROP

我已將我的安全組設置為允許埠 22 上的 ssh 輸入和輸出。我不明白為什麼 sudo iptables -A INPUT -d 34.195.109.193 -p tcp –dport 22 -j ACCEPT

行不允許我使用 PuTTY 進行 ssh。

您需要更改此行

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

因為您的規則僅匹配已建立的 (syn-ack) 和相關連接,而不匹配新的 (syn)

所以完整的規則應該是這樣的:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -d 34.195.109.193 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -j DROP

sudo iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -j DROP

最後一條輸出規則將允許與您的主機建立連接。

引用自:https://unix.stackexchange.com/questions/335673