準備

準備

iptablesまたは他のファイアウォール/ツールを使用してLinux上の特定のプログラム/ cmdのすべてのパケット(インバウンドおよびアウトバウンド)にタグを付ける方法

--cmd-ownerオプションが使用されなくなった場合を参照してください。http://www.spinics.net/lists/netfilter/msg49716.html

たとえば、Firefoxがプロセスを作成できることを知っていて、すべてのFirefoxパケットを表示する方法があるため、PIDオプションは使用できません。

答え1

考えられる解決策は次のとおりです。cgroups net_clscgroupサブシステムは特定のプロセスグループをグループ化し、 iptablesルールを使用してその中のパケットを表示します。ゲームの拡大、これはtcpdumpこのcgroupのパケットを監視するために使用されます。リスニングnflogインターフェイスを介して。

準備

net_clsサブシステムにcgroupを作成する

$ mkdir /sys/fs/cgroup/net_cls/firefox

cgroupに関連pidを追加します。

すべての関連PIDがグループ化されていることを確認する最善の方法は、次のことです。今後アプリケーションの実行を開始します。

たとえば、Firefoxを実行するには、まずecho $$現在のシェルのpid()を確認してください。次に、作成したcgroupに追加します。

$ echo <pid> > /sys/fs/cgroup/net_cls/firefox/tasks

シェルで作成されたすべてのプロセスは、「firefox」cgroupに割り当てられます。

cgroupへのクラスIDの割り当て

ドキュメントからcgroups net_cls:

net_cls.classidに16進値を書き込むことができます。この値は0xAAAABBBB形式です。 AAAA はプライマリハンドル番号、BBBB はセカンダリハンドル番号です。

echo 0x100001 > /sys/fs/cgroup/net_cls/firefox/net_cls.classid

iptablesルールでこれらのパケットを表示します。

iptables持つゲームの拡大以下を活用できます。

ゲーム拡張

iptablesは-mまたは--matchオプションと一緒に拡張パケットマッチングモジュールを使用できます。その後にはマッチングモジュール名があり、特定のモジュールに応じてさまざまな追加のコマンドラインオプションを使用できます。

あなたは使うグループ拡張モジュールを割り当て、これらのパケットを表示します。ニューラルネットワークロググループ目標:

ニューラルネットワークログ

この宛先は、一致するパケットのロギングを提供します。ルールに対してこの宛先が設定されると、Linuxカーネルはロードされたロギングバックエンドにパケットを転送してパケットを記録します。これは通常nfnetlink_logと一緒にロギングバックエンドとして使用され、これはnetlinkソケットを介して指定されたマルチキャストグループにパケットをマルチキャストします。 1つ以上のユーザースペースプロセスがこのグループに参加してパケットを受信できます。

--nflog-group nlgroup

パケットが属するネットリンクグループ(0 - 2^16-1)(nfnetlink_logのみ)。デフォルト値は 0 です。

したがって、次のようになります(生成されたnet_cls.classidを取得し、nflogグループの特定の番号を決定します)。

$ iptables -I INPUT 1 -m cgroup --cgroup 0x100001 -j NFLOG --nflog-group 123
$ iptables -I OUTPUT 1 -m cgroup --cgroup 0x100001 -j NFLOG --nflog-group 123

nflogこのルールは、cgroup内のすべての着信および発信パケットにグループ番号123でタグ付けします。

走るtcpdump

このインターフェースを使用できますnflog。すべてのバージョンがtcpdumpこの機能をサポートしているわけではありません。お客様のバージョンが以下をサポートしていることを確認できます。

$ tcpdump --list-interfaces |grep nflog
5.nflog (Linux netfilter log (NFLOG) interface) [none]

その場合、そのインターフェイスで作成されたcgroupのプロセスが送受信するすべてのパケットを受信できます。

$ tcpdump -v -i nflog:123

関連情報