プロセスが作成するすべての発信接続をログに記録する方法はありますか?私はnetstat
を知っていますが、これは、一定期間にわたって情報を実行および記録するものというよりは、ある時点のスナップショットのようです。
IPまたはホスト名、ポート、接続を確立するプロセスのみが必要です。
Linuxでは、 監査サブシステム を設定して、ネットワーク接続を確立するすべての試行をログに記録できます。監査サブシステムの詳細については、 auditctl
manページ または このチュートリアル または このサイトの他の例 を参照してください。必要に応じてディストリビューションのauditd
パッケージをインストールし、
auditctl -A exit,always -S connect
ログは、私が知っているすべてのディストリビューションの/var/log/audit/audit.log
にあります。 それらを検索する でausearch
を使用することもできます。
Linuxでは ip_conntrack
これを実現します。これは接続追跡モジュールであり、ファイアウォール/ NATボックスによって管理される異常に動作するプロトコル(FTPなど)の接続を監視するために通常使用されます。
modprobe ip_conntrack
cat /proc/net/ip_conntrack
疑似ファイルをgrepして確立された接続を確認し、さらにソースIPをgrepしてボックスから発信された時期を確認できます。
アウトバウンドtcpdump
リクエストを確認するアウトバウンドインターフェースでSYN
を使用することを検討します。
冒険的な気分なら、次のようなユーティリティを作成できます。strace
またはtruss
プログラムの実行をトレースしながらすべてのconnect
システムコールを報告します。