Linux 系统中,有什么监控工具可以一直监控系统中的流量,匹配到某些特征后自动定位发起流量的进程? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Supershell
V2EX    程序员

Linux 系统中,有什么监控工具可以一直监控系统中的流量,匹配到某些特征后自动定位发起流量的进程?

  •  
  •   Supershell 2024-01-30 14:50:11 +08:00 3171 次点击
    这是一个创建于 622 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有些时候主机会请求一些恶意域名,但是不知道是哪个进程发起的,想通过流量监控工具对这个域名进行监控,从而定位到具体的发起流程,
    18 条回复    2024-01-31 11:02:21 +08:00
    xucancan
        1
    xucancan  
       2024-01-30 15:51:59 +08:00
    可以用 strace 实现一个小工具
    lechain
        2
    lechain  
       2024-01-30 15:56:42 +08:00   2
    你是不是在寻找 ebpf ?/doge
    Supershell
        3
    Supershell  
    OP
       2024-01-30 16:02:53 +08:00
    @xucancan strace 确实可以实现这样的功能,通过跟踪进程的流量日志,我想实现的是从流量特征定位具体进程,strace 所有进程我先去研究一下,感谢提示。还有一个工具可能跟 strace 相似,不过梗简便,就是 yara 。
    en1ac
        4
    en1ac  
       2024-01-30 16:11:59 +08:00
    有个叫 zeek 的流量分析工具,可以通过写 lua 脚本来进行流量分析
    dode
        5
    dode  
       2024-01-30 16:18:56 +08:00
    hook linux 系统 dns 接口
    mawen0726
        6
    mawen0726  
       2024-01-30 16:58:43 +08:00
    iftop 能监听流量,看到是什么 ip 什么端口的流量,不知道适不适合你的场景
    NessajCN
        7
    NessajCN  
       2024-01-30 17:08:22 +08:00
    c5QzzesMys8FudxI
        8
    c5QzzesMys8FudxI  
       2024-01-30 17:53:49 +08:00
    @Supershell yara 可以吗?我咋感觉 yara 不行。
    xucancan
        9
    xucancan  
       2024-01-30 20:43:19 +08:00   1
    @Supershell 个人的浅薄理解仅供参考
    到了网络传输层面操作系统的进程信息是丢失的,举个例子,从路由器层面可以观测到主机哪个主机对哪些域名进行访问( dns 查询数据是明文的),但不包含进程相关的信息,因为网络通讯和进程属于两个不同的域,上下文是不互通的,也确实不需要
    横向比较,题主目的有点像 GFW 识别翻墙流量,有从流量特征层面识别的方法,例如 LTS in LTS 的包长度特征,或者代理协议的握手特征,但这都是基于“明确证明目标”的,但对于你的场景可能问题都无法被描述
    xucancan
        10
    xucancan  
       2024-01-30 20:49:53 +08:00   1
    @Supershell 综上,我觉得首先要明确问题的解决域,它是操作系统和网络交集区域,那么对于 Linux 来讲就是系统内核了,所以 strace 、epbf 这类工具看起来是比较合适的
    salmon5
        11
    salmon5  
       2024-01-30 22:01:55 +08:00   2
    IceFox99
        12
    IceFox99  
       2024-01-30 22:14:46 +08:00
    知道恶意的域名就好说了,tcpstat 或者 tcpdump 根据域名 ip 写一下 filter expression ,然后只要检测到输出就 hook 到 netstat 或者 ss 上,然后输出那一瞬间的所有 socket 的端口,通信和进程信息,应该足够用了。应该用不到 strace ,epbf 这类内核工具,感觉写个 Shell script 就够用了。

    我自己就拿 tcpstat 和 chart.js 写过一个把流量按端口,网卡(默认和 vpn 虚拟网卡等等),IP 等等信息分类显示的网页小组件,用来分辨 nas 上 bt,nginx,samba,webdav 等各种流量以及各种用户的实时速度,这种思路是可行的而且效果还行。
    salmon5
        13
    salmon5  
       2024-01-30 22:20:04 +08:00   1
    https://my.oschina.net/u/3681970/blog/9698278
    长期监控 现在流行可观测性

    短期分析 strace,bcc sslsniff,ecapture
    salmon5
        14
    salmon5  
       2024-01-30 22:29:09 +08:00
    Supershell
        15
    Supershell  
    OP
       2024-01-31 09:49:47 +08:00
    @xucancan 确实如你所说,本是两个维度的事情,没有关联性,无法从流量上面关联进程,我想只能主动监听所有系统进程来实现我的需求,不过这样对主机的资源性能就不友好了。相当于装了一个杀软,实时监控系统进程,但这样就有点重,如果能有个轻量级的就好了。
    dhb233
        16
    dhb233  
       2024-01-31 10:11:01 +08:00
    如果要不漏的获取每一个,应该就是 ebpf 这种了。一般发包用的是进程的上下文,ebpf 过滤到特定报文的时候,获取下当前进程号,如果不是常驻进程,还要获取 cmd 之类的?至少要知道执行的哪个文件吧。

    tcpdump 再用 ss 分析,也是可以的,但是可能会漏。毕竟有个延迟,可能请求的进程已经不在了
    dhb233
        17
    dhb233  
       2024-01-31 10:11:45 +08:00
    用 ebpf 这种,性能应该不是什么大的问题,性能影响相当于多加了一条 iptables 规则
    salmon5
        18
    salmon5  
       2024-01-31 11:02:21 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     956 人在线   最高记录 6679       Select Languae
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 19:52 PVG 03:52 LAX 12:52 JFK 15:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86