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、Web サイトは 2.2.2.2、このサーバーは 3.3.3.3 です。すべての IPv6 接続をブロックします (私の PC は 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

関連情報