我们重点关注五元组+状态+inode号分别在第2、3、4、11列
进程文件描述符
网络状态文件/proc/net/tcp“0B”: “CLOSING”
在linux proc目录下可查到主机级网络数据,例如/proc/net/snmp提供了主机各层IP、ICMP、ICMPMsg、TCP、UDP详细数据,/proc/net/netstat 文件 InBcastPkts、 OutBcastPkts、InOctets、OutOctets字段表示主机的收发包数、收包字节数据。很可惜没有 进程级流入流出网络流量数据。
以pid:25133进程为例, 文件描述符是10、12 对应inode号分别是512505532、512473483的网络连接,同时在下图中的/proc/net/tcp都可以查找到对应连接的详细信息。
以上所述是小编给大家介绍的Linux进程网络流量统计的实现过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!“04″: “FIN_WAIT1″,
根据查找到inode号在InodeProcessHash查找相应进程pid。
基本数据
linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline)等。其中这两项数据大多可直接读取linux /proc目录下的网络状态连接文件/proc/net/tcp、/proc/net/udp), 进程状态目录(/proc/pid/xx) 。
“01″: “ESTABLISHED”,
为了实时获取网络连接流量在linux主机上使用开源libpcap库来抓取网络报文。整个实现流程图如下包含以下5个关键步骤。
在某些应用安全场景需要结合进程网络连接、流入流出流量等数据可分析出是否在内网存在恶意外传敏感数据现象在网络监控 时发现 服务器大量带宽被占用但不清楚由系统具体哪个进程占用 。为此都需要获取到更细粒度的进程级网络流量数据综合分析。
第4列是状态信息状态字段含义如下:
/proc/pid/fd目录下列出当前进程打开的文件信息其中0、1、2表示标准输入、输出、错误。
解析报文
对linux主机抓包,结合网络状态文件、进程文件描述符实现一种细粒度的进程级网络流量采集方式。
抓包
https://i-blog.csdnimg.cn/blog_migrate/82da3cb35d5e92f26458352574e0052f.png ,喜欢请注明来源。