Linux 上でサービス固有のファイアウォールを構成するにはどうすればよいですか?

Linux 上でサービス固有のファイアウォールを構成するにはどうすればよいですか?

特定のプログラムのみがシステム (できれば RHEL) 内の開いているポートを使用できるようにするファイアウォールをどのように構成すればよいでしょうか?

たとえば、yum正常に接続して更新できるようにしたいが、ブラウジングなどの送信 Web 要求をブロックしたい場合、ポート 80、443、53、および UDP-53 を開く必要があります。

yumただし、ファイアウォールがWeb ブラウザを区別できるようにする必要があります。

答え1

iptablesプログラムのユーザーを確認する機能があります。

--uid-ownerまたはフラグを使用すると--gid-owner、ネットワークを指定されたユーザー (root?) のみに制限することができ、Web サーバー ( として実行される場合がありますwww-data) のパケットはドロップされます。

もちろん、これはプログラムごとではなくユーザー/グループごとに制限されますが、今日のほとんどのサービスは独自のユーザーとグループで実行されます。

例:

iptables -I OUTPUT -m owner --uid-owner www-data -jDROP

送信ネットワークを root 以外のユーザーに制限する例:

iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW

もう 1 つのアプローチは、(通常は RedHat 製品にバンドルされている) を使用してルールを設定することですSELinux。個人的には、管理が難しくなると思います。

関連情報