ループバック時にポートをブロックする方法は?

ループバック時にポートをブロックする方法は?

いくつかのテストを実行しており、データベースにエラーが発生した場合はどうなるかをテストしたいと思います。私のテストと同じボックスで実行されており、次の内容がトリックを実行していないようです。

iptables -A INPUT -p tcp --dport 25262 -j DROP
iptables -A INPUT -p tcp --sport 25262 -j DROP
iptables -A INPUT -p tcp --dport 25262 -i lo -j DROP
iptables -A INPUT -p tcp --dport 25262 -s 127.0.0.1 -j DROP

私はデータベースプロセスを終了し、ファイルを移動し(データベースがクラッシュしたときに自動的に回復するため)、このようにテストを続行しようとしますが、これは悪いアプローチのようです。

ループバックポートをブロックする正しい方法は何ですか?

答え1

すべてのループバックトラフィックを削除するコマンドラインコマンド(lo0)

$ [sudo] iptables -I INPUT --dport 25262 -i lo -j DROP

説明する

-i lo DROPiptablesは上から下にルールを評価し、「最初の一致勝利」の方法で動作するため、ルールが正しいことを確認する必要があります。-I 入れる代わりにトップに戻る-A追加他のルールがループバックトラフィックを許可する前に一致するようにルールの一番下に追加します。たとえば、データベースがMySQLの場合、このルールも一致する可能性があります。

INPUT -p tcp --dport 3306 ACCEPT

したがって、次のコマンドを実行すると:

$ [sudo] iptables -A INPUT --dport 25262 -i lo -j DROP
                  ^^^ Notice the difference

ルールは次のとおりです。

INPUT -p tcp --dport 3306 ACCEPT   ---> this "wins" and request is accepted
INPUT --dport 25262 -i lo -j DROP

以下を実行して:

$ [sudo] iptables -I INPUT --dport 25262 -i lo -j DROP

最終ルールは次のとおりです。

INPUT --dport 25262 -i lo -j DROP  ---> this "wins" and request is DROP'ed
INPUT -p tcp --dport 3306 ACCEPT 
... all your other rules

関連情報