iptablesまたは他のファイアウォール/ツールを使用してLinux上の特定のプログラム/ cmdのすべてのパケット(インバウンドおよびアウトバウンド)にタグを付ける方法
--cmd-ownerオプションが使用されなくなった場合を参照してください。http://www.spinics.net/lists/netfilter/msg49716.html。
たとえば、Firefoxがプロセスを作成できることを知っていて、すべてのFirefoxパケットを表示する方法があるため、PIDオプションは使用できません。
答え1
考えられる解決策は次のとおりです。cgroups
net_cls
cgroup
サブシステムは特定のプロセスグループをグループ化し、 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