iptables 阻止 ssh 到 aws ec2 实例

iptables 阻止 ssh 到 aws ec2 实例

我有一台运行 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。

答案1

你需要改变这一行

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

最后一个输出规则将允许与您的主机建立连接。

相关内容