質問: linux iptablesを使用して、アウトバウンド接続を開始するプロセス/コマンド名をログに記録することは可能ですか? linuxデスクトップでアウトバウンド接続を開始するプロセスを追跡したいと思います。私が思いつくことができる最高のものはこれです:iptables -a output -m state --state new -j log --log-uid これは、接続を開始するuid/gidをログに記録しますが、プロセス/コマンド名またはpidをログに記録しません。 pidを取得できただけで、ログが書き込まれたときにプロセス名をプルするスクリプトを作成できたかもしれませんが、それは不可能であるようです。理想的には、着信接続も受け入れるプロセスもログに記録したいと思います。linuxボックスのiptables(またはその他)でこれがどのように可能になるかについてのアイデアはありますか?
回答: 私が同様の質問を調べているとき、スカイプを速度制限しようとしているので、$ netstat -p | grep <mycmdname> pid-owner/cmd-ownerがiptablesで直接サポートされなくなったため、ポート番号をpid/cmdにリンクする良い方法です。次に、結果を解析し、ポートに応じてiptablesルールを追加する必要があります。当然、後で/システムのシャットダウン/再起動時などに、いくつかのクリーンアップコードが必要になります。クリーンアップ時に参照できるように、ポート番号をファイルに保存します実際、ポート番号の質問に対する良い答えは$ sudo netstat -p | grep "tcp.*<mycmdname>" | sed -r "s/.*<mycomputer>:([0-9]+).*/\1/"` 必要に応じてgrep tcp要素を調整する必要があるかもしれません次に、私の目的のために、ポート番号に従ってtc u32フィルタを追加し、ポート番号に従ってiptablesエントリを追加するのが最も簡単でした