iptablesはローカルSSH接続をブロックできません

iptablesはローカルSSH接続をブロックできません

私の質問は次のとおりです。 iptablesがlocalhostへのSSH接続をブロックできないのはなぜですか?

詳細な説明は次のとおりです。

iptablesを実験しながら、私が知りたかった次のような疑問を発見しました。すべてのポリシーをDROPに設定しましたが、まだSSHを介してローカルにシステムにアクセスできます。

これが私がすることです。

まず、iptablesすべてのPOLICY値をDROPに設定しました。

cat <<HEREDOC | sudo iptables-restore

*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
COMMIT

*mangle
:PREROUTING DROP
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
:POSTROUTING DROP
COMMIT

*nat
:PREROUTING DROP
:POSTROUTING DROP
:OUTPUT DROP
:INPUT DROP
COMMIT

*raw
:PREROUTING DROP
:OUTPUT DROP
COMMIT
HEREDOC

その後、SSH経由で接続を試みます。

ssh localhost

そして驚くべきことに、これがうまくいきました!ファイアウォールがないように、新しいシェルセッションが表示されます。その後、完全な状態を確認するためにlocalhostにpingしようとしましたが、次のエラーメッセージが表示されました。

ping: sendmsg: Operation not permitted

これはファイアウォールが実際に実行されていることを示すようです。最後に、IPアドレスを使用してSSHingを試しました。

ssh 127.0.0.1

予想通りこれが止まりました。

したがって、私の推測は、SSHが文字列 "localhost"をパラメータとして渡すときに何か別の操作を実行することです。これは実際にはループバックインターフェイスを含みません。これが本当なら、私の質問は「代替SSHが何をしているのでしょうか?」になります。

ベストアンサー1

localhostおそらく、フィルタリングされていない(使用されていない)IPv6アドレスで解決される可能性があります()。::1iptablesip6tables

出力:

strace -e connect ssh localhost

どのIPアドレスと使用するプロトコルを教えてくれます。

おすすめ記事