直接看容器网络统计指标能快速发现异常流量并定位攻击源头,关键是从NetIO突增、veth接口实时速率、cAdvisor+Prometheus速率趋势及进程连接上下文四方面联动分析,精准识别可疑容器与恶意行为。

直接看容器网络统计指标,能快速发现异常流量并定位攻击源头。关键不是等告警,而是从数据变化节奏、方向特征和上下文行为里抓线索。
看 NetIO 累计值突增识别可疑容器
用 docker stats --no-stream --format "table {{.Name}}\t{{.NetIO}}" 一次性查所有容器的累计网络 I/O。重点不是绝对值,而是对比:同一组服务中,某个容器的 NetIO 在 1 分钟内增长了其他容器的 5 倍以上,就值得立刻盯住它。比如:
- 正常 API 容器 NetIO 每分钟增加约 200KB,某次刷新发现一个叫
cache-worker的容器单分钟涨了 8MB —— 很可能在被利用做代理或外传数据 - 若多个容器 NetIO 同步暴涨,且都指向同一个宿主机网卡(如 eth0),说明攻击流量已穿透到宿主机层,需结合 iftop 进一步下钻
按 veth 接口抓实时速率锁定攻击方向
容器流量最终走的是宿主机上的 veth 接口。先用 docker inspect -f '{{.NetworkSettings.Networks.bridge.EndpointID}}' <容器名> 获取 endpoint ID,再查对应 veth 名(通常形如 vethabcd12)。接着用工具盯住这个接口:
- sudo iftop -i vethabcd12 -P:看该容器对外连接的 IP 和端口,如果大量连接发往 8.8.8.8:53 或 1.1.1.1:53,可能是 DNS 隧道渗出
- sudo iptraf-ng -i vethabcd12:按协议排序,若 UDP 流量占比突然超 90%,且集中在非常规端口(如 5353、4433),高度提示隐蔽通信
- 注意入/出流量比例:正常 Web 容器通常是“出 > 入”,若出现“入远大于出”,大概率是被扫描或 DDoS 反射源
用 cAdvisor + Prometheus 计算速率趋势找拐点
cAdvisor 暴露的 container_network_receive_bytes_total 和 container_network_transmit_bytes_total 是原始计数器。Prometheus 中用 rate() 函数计算每秒速率,比看累计值更敏感:
- 查询语句:rate(container_network_receive_bytes_total{container=~"nginx.*"}[1m]) > 1000000 —— 找出接收速率持续超 1MB/s 的容器
- 加标签筛选:rate(container_network_transmit_bytes_total{interface=~"veth.*", container!=""}[1m]),再按 container 分组绘图,观察哪条曲线在凌晨 3 点准时陡升 —— 很可能是定时恶意任务
- 配合连接数指标:rate(container_network_receive_bytes_total[1m]) / count by(container)(container_network_tcp_usage),若比值异常高,说明少量连接却传输巨量数据,典型的数据外泄特征
结合进程与连接上下文确认攻击行为
光有流量不够,得知道是谁在发、发给谁。进容器内部快速验证:
- 执行 ss -tuln 查监听端口:若发现非预期端口(如 6666、7777)在 LISTEN,且无对应业务配置,极可能已被植入后门
- 运行 lsof -i -P -n | grep ESTABLISHED:看当前活跃连接,若大量连接指向境外小众 IP 段(如 198.18.0.0/15),基本可判定为 C2 通信
- 检查启动命令:cat /proc/1/cmdline | tr '\0' ' ',若看到 curl、wget、nc、socat 等工具调用且参数含可疑域名,就是直接证据

















