使用 iptables 規則阻止 SSH 訪問

使用 iptables 規則阻止 SSH 訪問

我設定了這些 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

相關內容