web-dev-qa-db-ja.com

プロセス/サービスごとにiptablesルールを作成する

「プロセス」によって開始されたトラフィックを許可するために、つまりプロセス名を使用して、iptablesを使用することは可能ですか?たとえば、pingコマンドによって開始されるすべてを許可したいとします。

22
cateof

owneriptablesモジュールがあなたが望むものであるように見えます。まず、システムで使用できるかどうかを確認します。

iptables -m owner --help

詳しくはこちらをご覧ください: http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH

25
barti_ddu
-m owner --pid-owner PID

http://linuxpoison.blogspot.com/2010/11/how-to-limit-network-access-by-user.html および http://linux.die。 net/man/8/iptables

--pid-ownerはxt_ownerでサポートされていないため、ipt_ownerモジュールが必要です。

たとえば(これは単なる概算です)

#!/bin/bash
$@ &
iptables -m owner --pid-owner %1 -j REJECT

ただし、実際には、-uid-ownerと--gid-ownerを使用する方がよいでしょう。まず、-pid-owner基準は正確なpidにのみ一致するため、プログラムはこのルールによってブロックされない子プロセスを簡単に生成できます。 (少なくとも私は他の方法で読んだことがありません。)次に、iptables(8)は--pid-ownerがSMPシステムで壊れていることを警告します(これはあなたに当てはまるかもしれないし、当てはまらないかもしれませんが、どちらの場合でも移植性を制限します)。 3番目に、プロセスはブロックされる前に開始されるため、上記のスクリプトには競合状態があります。 (開始前にプロセスのPIDを取得する方法がある場合、それについて聞いたことがありません。)

9
Michael D.