auditd能捕获容器逃逸行为,因其工作在内核系统调用层,可记录突破命名空间隔离后的openat、mount、ptrace、execve等调用的真实UID、AUID、进程路径及参数。

auditd 能捕获容器逃逸行为,关键在于它工作在内核系统调用层,不依赖容器运行时或用户态日志——哪怕攻击者已突破命名空间隔离、挂载了宿主机敏感路径,只要其操作触发了系统调用(如 openat、mount、ptrace、execve),auditd 就能记录下真实 UID、AUID、进程路径、参数及上下文。
监控高风险逃逸路径的系统调用
容器逃逸常通过特定系统调用实现,需针对性审计:
-
挂载类逃逸:监控
mount和umount系统调用,尤其关注非 root 用户(auid>=1000)发起、目标为宿主机关键路径(如/proc、/sys、/dev)的操作
示例规则:-a always,exit -F arch=b64 -S mount,umount -F auid>=1000 -k container_mount_escape -
进程注入与调试逃逸:监控
ptrace调用,特别是对 PID ≠ 当前进程且目标为宿主机进程(如 systemd、sshd)的尝试
示例规则:-a always,exit -F arch=b64 -S ptrace -F auid>=1000 -F pid!=auid -k ptrace_escape -
危险 exec 行为:捕获非标准路径下的特权命令执行,例如从容器中调用
/usr/bin/nsenter或/bin/sh并进入宿主机 PID 命名空间
示例规则:-a always,exit -F arch=b64 -S execve -F auid>=1000 -F path=/usr/bin/nsenter -k nsenter_exec
防护宿主机关键配置文件与目录
逃逸成功后,攻击者常修改宿主机配置以维持权限或隐藏痕迹。应持续监控以下路径:
-
/etc/passwd、/etc/shadow、/etc/sudoers:防止新增账户或提权配置
规则:-w /etc/passwd -p wa -k host_identity_mod -
/proc/sys/目录:防止禁用内核安全机制(如关闭 KASLR、禁用 unprivileged_userns_clone)
规则:-w /proc/sys/ -p wa -k proc_sys_tamper -
/var/lib/docker/及/run/containerd/:检测恶意镜像注入、运行时配置篡改
规则:-w /var/lib/docker/ -p wa -k docker_runtime_mod
关联 Docker daemon 自身行为审计
Docker 守护进程(PID 1 或固定主进程)是逃逸链的重要一环。若攻击者利用其漏洞或 misconfig 发起逃逸,可绑定规则到其 PID 或路径:
- 先获取当前 dockerd 主进程 PID:
sudo pgrep -f "dockerd\|containerd" | head -n1 - 添加专用规则(替换
PID为实际值):-a always,exit -F arch=b64 -S clone,execve,openat -F pid=PID -k dockerd_abuse - 更稳健的做法是按二进制路径匹配:
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/dockerd -k dockerd_exec
验证与日志分析要点
规则部署后,需主动验证是否生效,并建立快速响应能力:
- 手动模拟轻量逃逸动作(如在容器内执行
mount --bind /proc /tmp/hostproc),再立即检查:sudo ausearch -k container_mount_escape -ts recent -i - 筛选出含
comm="sh"或comm="bash"但auid!=uid的 execve 事件,这类常是容器内 shell 调用宿主机二进制所致
命令:sudo ausearch -m SYSCALL -sc execve -i | awk '/comm="sh|bash"/ && /auid!=uid/ {print}' - 将 audit.log 接入 SIEM(如 ELK 或奇安信网神),设置告警规则:5 分钟内出现 ≥3 次
key="ptrace_escape"且success=yes即触发高危告警

















