SSH 访问被该 iptables 规则阻止

SSH 访问被该 iptables 规则阻止

我设置了这些 iptables 规则,它阻止了我 ssh 访问(以及其他所有内容):

*filter

# Allow loopback
-I INPUT 1 -i lo -j ACCEPT

# Allow DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT

# allow outbound connection to several website
-A OUTPUT -p tcp -d www.google.com -j ACCEPT
-A OUTPUT -p tcp -d example.com -j ACCEPT
-A OUTPUT -p tcp -d myotherwebsite.tld -j ACCEPT

#allow inbound connection after an allowed outbound
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#allow me and my website to communicate
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT

-A INPUT -s 127.0.0.1/8 -j ACCEPT

-A INPUT -j LOG
-A OUTPUT -j LOG

#drop everything else
-P INPUT DROP

COMMIT

在这个例子中,我的 IP 是 1.1.1.1,我的网站是 2.2.2.2,这个服务器是 3.3.3.3,我阻止了所有 ipv6 连接(我的电脑只配置了 ipv4)。我几乎确信这些规则在过去是有效的,但现在却不起作用了。

答案1

向您的链中添加一条规则OUTPUT,允许已建立连接的数据包。添加到规则集中的典型规则是:

-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

对于 SSH 连接,这将起到与您在你之前的回答。但是,它更加通用,并且也将适用于允许与INPUT您将来可能添加的任何其他链规则相关的数据包的双向流动,而无需在您的OUTPUT链中添加进一步的明确规则。

答案2

似乎需要一个双向规则,添加以下行确实允许我访问我的服务器:

-A OUTPUT -d 1.1.1.1/32 -j ACCEPT

相关内容