OUTPUTトラフィックを制限するためにiptablesを使用するとSSHが終了する理由

OUTPUTトラフィックを制限するためにiptablesを使用するとSSHが終了する理由

一連のIPアドレスへの接続を制限する単純なiptables設定を作成しようとしています。ただし、OUTPUT ルールを構成しようとするたびに SSH 接続が終了します。

この問題を解決するために、すべての着信トラフィックを許可し、ポート53からIP 8.8.8.8への発信トラフィックのみを許可するとします。

これは私の起動iptables設定です。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             ip-172-17-0-2.eu-central-1.compute.internal  tcp dpt:9090

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

それでは、次のように発信トラフィックを制限したいと思います。

iptables -I OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP

2番目のコマンドを実行するインスタンスでSSH接続がブロックされているため、サーバーを再起動する必要があります。

おそらく私はiptablesやsshの私の理解が間違っているかもしれません。私の考えは、OUTPUTチェーンがサーバーから始まる発信接続を制御し、ポート22でサーバーに接続する機能に影響を与えてはいけないということです。また、ポート 80 および 443 の他のすべての受信接続が終了するため、SSH だけではありません。

ベストアンサー1

今分かったようです。

iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP

これにより、サーバーから開始された接続からのすべてのトラフィックがブロックされます。ただし、着信接続によって開始された接続には適用されません。

おすすめ記事