欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Docker 容器逃逸防御:Capabilities 最小化与 Seccomp 系统调用过滤

发表于:|最后更新:|分类:云原生安全|阅读:6392 次

容器默认共享宿主机内核,一旦被授予 CAP_SYS_ADMIN 或运行特权模式(--privileged),攻击者即可挂载宿主机设备或利用内核漏洞实现容器逃逸。最小化 Capabilities 并启用 Seccomp 默认配置是核心防御手段。

一、安全加固的容器启动参数

bash
docker run -d \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --security-opt no-new-privileges \
  --security-opt seccomp=/etc/docker/seccomp-default.json \
  --read-only \
  --tmpfs /tmp:rw,noexec,nosuid,size=64m \
  --user 1000:1000 \
  nginx:stable
json
{
  "defaultAction": "SCMP_ACT_ERRNO",
  "architectures": ["SCMP_ARCH_X86_64"],
  "syscalls": [
    { "names": ["read", "write", "open", "close", "epoll_wait", "futex"], "action": "SCMP_ACT_ALLOW" },
    { "names": ["ptrace", "mount", "reboot"], "action": "SCMP_ACT_ERRNO" }
  ]
}