前言
linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline)等。其中这两项数据大多可直接读取linux /proc目录下的网络状态连接文件/proc/net/tcp、/proc/net/udp), 进程状态目录(/proc/pid/xx) 。
在某些应用安全场景需要结合进程网络连接、流入流出流量等数据可分析出是否在内网存在恶意外传敏感数据现象在网络监控 时发现 服务器大量带宽被占用但不清楚由系统具体哪个进程占用 。为此都需要获取到更细粒度的进程级网络流量数据综合分析。
在linux proc目录下可查到主机级网络数据,例如/proc/net/snmp提供了主机各层IP、ICMP、ICMPMsg、TCP、UDP详细数据,/proc/net/netstat 文件 InBcastPkts、 OutBcastPkts、InOctets、OutOctets字段表示主机的收发包数、收包字节数据。很可惜没有 进程级流入流出网络流量数据。
为此参考nethogs原理实现统计进程级网络流量方式。
基本数据
涉及proc以下几个目录或文件网络状态文件/proc/net/tcp、/proc/net/udp, 进程文件描述符目录/proc/pid/fd。
网络状态文件/proc/net/tcp
我们重点关注五元组+状态+inode号分别在第2、3、4、11列
其中第23列分别是主机字节序ip:port ,例如”0500000A:0016″ -> “10.0.0.5″, 22
第4列是状态信息状态字段含义如下:
“01″: “ESTABLISHED”,
“02″: “SYN_SENT”,
“03″: “SYN_RECV”,
“04″: “FIN_WAIT1″,
“05″: “FIN_WAIT2″,
“06″: “TIME_WAIT”,
“07″: “CLOSE”,
“08″: “CLOSE_WAIT”,
“09″: “LAST_ACK”,
“0A”: “LISTEN”,
“0B”: “CLOSING”
第11列是inode号 linux系统文件系统中的一个文件系统对象包括文件、目录、设备文件、socket、管道等的元信息。
进程文件描述符
/proc/pid/fd目录下列出当前进程打开的文件信息其中0、1、2表示标准输入、输出、错误。
网络连接是以socket:开头的文件描述符,其中[]号内的是inode号这样与网络状态文件/proc/net/tcp下的inode号可对应起来
以pid:25133进程为例, 文件描述符是10、12 对应inode号分别是512505532、512473483的网络连接,同时在下图中的/proc/net/tcp都可以查找到对应连接的详细信息。
根据上述文件信息可以从/proc/net/tcp建立起网络连接五元组->inode的映射, 而 /proc/pid/fd建立起连接inode ->进程的映射。
这样 通过inode号作为桥梁关联起系统内的进程与网络连接的信息。
实现流程
为了实时获取网络连接流量在linux主机上使用开源libpcap库来抓取网络报文。整个实现流程图如下包含以下5个关键步骤。
抓包
使用抓包Libpcap库获取到网络packet结构。
解析报文
解析出packet的五元组(源地址、目标地址、源端口、目标端口、协议号)信息和当前包的流量大小。
缓存更新
在ConnInodeHash查找五元组组成的key对应的inode号如果不存在重新读取/proc/net/tcp与udp刷新ConnInodeHash缓存建立起连接与inode的映射并重新读取/proc/pid/fd目录对所有文件描述符遍历过滤出以socket:开头的连接刷新InodeProcessHash缓存重新建立inode与进程的映射。
hash查找
根据查找到inode号在InodeProcessHash查找相应进程pid。
统计流量
根据报文地址,判断网络连接方向,累加进程流入、流出数据。
总结
对linux主机抓包,结合网络状态文件、进程文件描述符实现一种细粒度的进程级网络流量采集方式。
通过linux 文件inode号作为桥梁,关联出进程、网络连接的关系,可以统计进程接收/发送的总量/平均值等各维度数据,也可以分析出进程各个网络连接的流量数据,这些在主机流量安全分析、网络监控排查等场景方面可作为重要依据。但同时也需要注意的是持续通过libpcap抓包对主机性能有损耗影响。
以上所述是小编给大家介绍的Linux进程网络流量统计的实现过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]