容器默认共享宿主机内核,一旦被授予 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:stablejson
{
"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" }
]
}