ローカルホスト以外のすべての着信トラフィックに対して、22、80、443 以外のすべてのポートをブロックするにはどうすればよいですか?

ローカルホスト以外のすべての着信トラフィックに対して、22、80、443 以外のすべてのポートをブロックするにはどうすればよいですか?

次のような動作を望みます:

すべての外部コンピュータは、サーバーのポート 22 (ssh)、80 (http)、および 443 (https) にのみバインドできます。

ただし、すべての localhost アプリは任意のポートにバインドできます。

検索してみたところ、次のような結果になりました:

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 22,80,443 -j DROP

希望どおりに動作しますが、すべての localhost アプリもブロックされます。localhost アプリが任意のポートにバインドできるようにするには、何を変更すればよいでしょうか?

では、どうすればそのルールを永続的にできるのでしょうか?

ありがとう!

答え1

ルールは順番に照合されます。localhost を許可するルールを、拒否するルールよりも先に作成します。

iptables -A 入力 -p tcp -s localhost -m tcp -m マルチポート ! --dports 22,80,443 -j 受け入れる

iptables -A 入力 -p tcp -m tcp -m マルチポート ! --dports 22,80,443 -j ドロップ

OS に応じて保存する方法については、ここをお読みください。 https://www.thomas-krenn.com/en/wiki/Saving_Iptables_Firewall_Rules_Permanently

関連情報