CentOS环境下Docker安全保障体系构建
library/nginx)或企业私有仓库(如Harbor)的镜像,避免使用来源不明的第三方镜像,防止植入后门或恶意代码。alpine(如nginx:alpine)、distroless等极简基础镜像,仅包含业务必需的依赖(如nginx、python),删除调试工具(如bash、gcc)、编译工具等无用组件,减少攻击面。openssl 1.0.2)及敏感信息(如明文密码、私钥),确保镜像安全后再部署。export DOCKER_CONTENT_TRUST=1),对镜像进行数字签名,拉取镜像时自动校验签名,防止篡改;结合SBOM(软件物料清单)追踪镜像内软件包来源,满足合规要求(如PCI DSS)。--privileged参数启动容器(特权容器拥有主机所有设备root权限),如需额外权限,使用--cap-add按需添加(如--cap-add=NET_ADMIN),而非全部权限。RUN adduser -D appuser创建非root用户,再用USER appuser切换,降低容器被攻破后的危害(如无法直接访问主机文件系统);或在docker run命令中用-u 1001:1001指定用户。setenforce 1)或AppArmor,限制容器对主机资源的访问(如禁止容器挂载主机目录);使用seccomp限制容器可调用的系统调用(如禁止mount、chroot),防止“Docker逃逸”攻击。--cpus=1(限制1核CPU)、--memory=512m(限制512MB内存)、--pids-limit=100(限制100个进程)等参数,防止单个容器过度消耗资源导致系统崩溃,或被恶意进程占满资源。/etc/docker/daemon.json,设置"log-driver": "json-file"(日志驱动)、"log-opts": {"max-size": "100m"}(日志轮转,避免日志过大)、"storage-driver": "overlay2"(推荐的存储驱动);关闭调试模式("debug": false),减少敏感信息泄露。/etc/docker/daemon.json中的"tls": true、"tlscacert"、"tlscert"、"tlskey");通过防火墙(firewalld)限制访问IP(如仅允许运维服务器IP访问2375端口)。/var/run/docker.sock是Docker客户端与守护进程通信的通道,默认属主为root:docker,权限为660。避免将普通用户加入docker组(减少权限提升风险),或使用TLS加密套接字通信。bridge网络(所有容器在同一网络,易横向攻击),创建自定义网络(如docker network create mynet),将不同业务容器隔离到不同网络,仅允许必要的容器间通信(如nginx与app容器)。web容器访问db容器的3306端口:apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: web-to-db
namespace: default
spec:
podSelector:
matchLabels:
app: db
ingress:
- from:
- podSelector:
matchLabels:
app: web
ports:
- protocol: TCP
port: 3306
(注:需Kubernetes环境支持,Docker原生支持--icc=false关闭容器间通信,但Network Policy更灵活)。"log-level": "info"),记录容器启动、停止、网络连接等操作;使用journalctl -u docker查看守护进程日志,结合ELK(Elasticsearch+Logstash+Kibana)或Fluentd集中收集日志,便于追溯安全事件。cAdvisor(监控容器资源使用)、Prometheus(采集监控数据)、Grafana(可视化展示)搭建监控体系,设置告警规则(如容器CPU使用率超过80%、内存耗尽),及时发现异常;结合Falco(云原生运行时安全工具)检测容器内的异常行为(如容器内执行rm -rf /)。sudo yum update docker-ce)到最新稳定版,修复已知漏洞(如CVE-2024-21625);定期更新容器内应用(如nginx、python),通过docker pull拉取最新镜像并重新部署。/etc/docker/daemon.json)、容器运行状态(如是否有特权容器),确保符合安全基线。