web-dev-qa-db-ja.com

一定期間(過去または将来)にネットワークアクティビティが発生したすべてのLinuxプロセスを一覧表示するにはどうすればよいですか?

どのプロセスがネットワークを使用しているか知りたいのですが:

  1. 私のシステム上の未知の(そして潜在的に悪意のある)プログラムがネットワークを使用しているかどうかを検査するため。
  2. プロセスごとにネットワークトラフィックの量を学習し、さらにプロトコルHTTP、TCP、UDP、ICMPなど)および着信/発信トラフィックごとに分類します。
2
latgarf

topがCPU使用率用であるのと同様に、iftopはネットワーク使用率用です。

2
user135284

あなたが求めていることは少し広いので、私は一般的な用語に固執しようとします。言い換えると、ネットワークの使用状況をプロセスごとおよびプロトコルごとに分類して、時間をかけて考えておく必要があります。

家庭で使用する場合は、ntopを試してください。それはおそらくあなたが必要とする以上のことをするでしょう、そしてそれを上回れば、それは歴史的なグラフィックスを示します。

http://www.ntop.org/products/traffic-analysis/ntop/

その仕事に一時的に合うツールがあります。何が起こっているかを一般的に見ると、nethogsはネットワークのアプリケーションでの使用を非常にうまく分類しています。

http://nethogs.sourceforge.net

「NetHogsは小さな「ネットトップ」ツールです。ほとんどのツールのようにプロトコルごとまたはサブネットごとにトラフィックを分割するのではなく、プロセスごとに帯域幅をグループ化します。」

また、dtrace4linuxとsysdigもあります。これらは、サーバー使用のほぼすべての側面を説明するために非常に驚くべきことを行うことができます。 Brendan Greggによるdtrace「SystemsPerformance:Enterprise andtheCloud」に関する非常に興味深い本があります。

トラフィック使用量のグローバルアカウンティングでは、ifconfigをサンプリングするか、procでrx/tx転送バイトを使用できます。複数のサーバーを管理する場合は、NMSとSNMPを使用することをお勧めします。

サーバーのネットワークを管理する場合は、ルーターでiptablesアカウンティングを実行するか、ファイアウォールまたはルーターでNetflowをセットアップし、データをリッスンしてDBに保存します。 nfSenは、そのようなものを視覚化するのに特に役立ちます。

セキュリティ関連の攻撃に関しては、IDSは非常に興味深いテクノロジーです。 Snortはボックス内で実行できますが、通常は、流れるトラフィックをリッスンできるボックス内で実行されます。

1
Rui F Ribeiro

netstat -pを使用して、アクティブな接続を持つプロセスのリストを取得できます

0
clobrano