如何列出在一段时间内(过去或未来)有任何网络活动的所有Linux进程?

如何列出在一段时间内(过去或未来)有任何网络活动的所有Linux进程?

我想知道哪些进程使用网络:

  1. 检查我的系统上是否有任何我未知的(以及潜在恶意的)程序使用网络;
  2. 按进程了解网络流量,并按协议 HTTP、TCP、UDP、ICMP 以及传入/传出流量进一步细分。

答案1

就像topCPU使用率一样,iftop网络使用率也一样。

答案2

你问的问题有点宽泛,所以我会尽量遵循一般术语。换句话说,您希望了解一段时间内按进程和协议细分的网络使用情况。

对于家庭使用,请尝试 ntop。它会做的比你可能需要的更多,而且最重要的是,它会显示历史图形。

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

有些工具暂时适合这项工作。为了大致了解正在发生的事情,nethogs 很好地分解了网络的应用程序使用情况。

http://nethogs.sourceforge.net

“NetHogs 是一个小型‘网络顶级’工具。它不像大多数工具那样按协议或每个子网分解流量,而是按进程对带宽进行分组。”

您还可以使用 dtrace4linux 和 sysdig,它们可以在统计服务器使用的几乎所有方面方面做出非常令人惊讶的事情。 Brendan Gregg 有一本关于 dtrace 的非常有趣的书“系统性能:企业和云”。

对于流量使用情况的全局统计,您可以对 ifconfig 进行采样,或者在 proc 中对 rx/tx 传输的字节进行采样。如果管理多个服务器,最好使用 NMS 和 SNMP。

如果管理服务器网络,您可能需要在路由器中进行 iptables 记帐,或者在防火墙或路由器中设置 Netflow,并监听数据并将其存储在数据库中。 nfSen 对于可视化这种情况特别有用。

对于与安全相关的攻击,IDS 是一项非常有趣的技术。您可以在您的盒子中运行 Snort,但是它通常在可以侦听流量的盒子中运行。

答案3

您可以用来netstat -p获取具有活动连接的进程列表

相关内容