IPブロックが私のサーバーのポート22にアクセスするのを防ぐためにiptablesにルールを書くPythonスクリプトがあります。
これらのルールを作成した後、ブロックの1つのホスト名は「localhost / 22」です。 iptablesはこれを127.0.0.1として扱いますか、それともまだIPアドレスを認識しますか?このため、私のサーバーがロックされたくありません。
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- *****/14 anywhere
DROP all -- localhost/22 anywhere
DROP all -- ****/20 anywhere
また、簡単な質問:iptablesが各ルールのポートを表示しないのはなぜですか? dportとして22を指定しました。
答え1
iptables
Netfilter を構成するツールです。 Netfilter はホスト名を処理しません。
ルールを変更するとiptables
ホスト名がIPとして解決され、ルールを一覧表示するとiptables
IPリバースルックアップが実行されます(この-n
オプションを使用しない場合)。
localhost が 127.0.0.1 以降の別の項目で確認された場合、または他の項目の逆照会結果である場合、非常に奇妙な設定を持つことになり驚くことがあります。
答え2
ループバックインターフェイスで許可されるトラフィックを決定するルールがないのはなぜですか?
iptables -I INPUT 1 -i lo -m comment --comment "ALLOW loopback interface" -j ACCEPT
「localhost」のIPを見ることができます。
iptables -L -v -n