CentOS 上 Docker 安全的分层防护方案
一 宿主机与系统基线
- 保持系统与 Docker 版本为最新稳定版,及时修补内核与组件漏洞;最小化安装 CentOS,仅保留必要服务,关闭不必要的端口与监听。
- 强化主机身份鉴别:创建非 root运维账号并加入 wheel,启用 SSH 密钥登录、禁用 root 登录与密码认证。
- 启用并正确配置 firewalld,仅放行业务与容器所需端口(如仅开放 22 与业务端口),定期审计规则。
- 启用 SELinux 强制访问控制(或 AppArmor),为 Docker 与容器工作负载设置最小权限的安全策略。
- 持续更新与监控:对系统与镜像执行定期更新,并启用日志与监控以便快速响应安全事件。
二 镜像与构建安全
- 仅使用官方或可信基础镜像,优先选择精简镜像(如 Alpine)以缩小攻击面。
- 在 CI/CD 中集成镜像安全扫描(如 Docker Scan、Clair、Anchore),阻断含高危 CVE 的镜像进入生产。
- 采用多阶段构建,仅将必要产物复制到最终镜像,减少无用依赖与工具。
- 启用镜像签名/可信源校验,确保镜像来源与完整性。
- 避免在镜像中硬编码密钥/证书,改用运行时注入或密钥管理服务。
三 容器运行时与最小权限
- 禁止以 root 在容器内运行进程,Dockerfile 中创建非 root 用户并降权;必要时通过用户命名空间进一步隔离。
- 严格能力控制:优先使用 –cap-drop=ALL,仅按需白名单添加必要 capability;禁用 –privileged。
- 启用 seccomp 默认配置文件或自定义策略,限制容器可用系统调用;启用 no-new-privileges 防止权限提升。
- 实施 只读根文件系统(readOnlyRootfs),将可写需求限定在显式挂载卷。
- 资源与故障隔离:为容器设置 CPU/内存/磁盘 I/O 限额,防止资源耗尽导致 DoS;配置健康检查与重启策略。
- 安全挂载与挂载点最小化:谨慎挂载宿主敏感目录(如 /proc、/sys、/var/run/docker.sock),仅暴露必要卷与只读权限。
四 网络与隔离
- 使用 bridge/自定义网络 与覆盖网络进行服务分段,减少横向移动风险;按“最小暴露面”原则仅映射必需端口。
- 在主机与容器层面禁用不必要的网络服务,对外部访问实施白名单与访问控制。
- 结合网络策略或第三方插件对容器间通信进行细粒度控制,仅允许必要的服务互访。
五 审计监控与合规
- 运行 Docker Bench for Security 等基线工具进行配置合规检查,并针对发现项闭环整改。
- 集中采集与保留容器与宿主机日志(审计、系统、应用),接入 SIEM 进行关联分析与告警。
- 建立持续监控与指标体系(如 cAdvisor + Prometheus + Grafana),观测资源异常与可疑行为。
- 将镜像扫描、合规检查、发布审批与回滚纳入 CI/CD 安全门禁,实现“构建即安全”。