基于Ubuntu:Focal的Docker容器因ssl-cert-snakeoil.key遭Aqua Scanner告警如何加固?
解决Ubuntu Focal Docker镜像中ssl-cert-snakeoil.key安全问题及容器加固方案
1. 移除默认蛇油证书文件
Ubuntu默认安装的ssl-cert包会生成测试用的私钥文件,直接在Dockerfile中删除相关文件或卸载该包:
# 删除蛇油证书及私钥 RUN rm -f /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/certs/ssl-cert-snakeoil.pem # 可选:彻底卸载ssl-cert包(无需测试证书时执行) RUN apt-get purge -y --auto-remove ssl-cert
2. 替换为生产级SSL证书
如果Apache需要启用SSL,挂载或复制合法的自定义证书到容器,确保权限安全:
# 复制自定义SSL证书(假设本地certs目录存放证书文件) COPY ./certs/prod-domain.crt /etc/ssl/certs/ COPY ./certs/prod-domain.key /etc/ssl/private/ # 限制私钥权限,仅运行用户可读 RUN chmod 600 /etc/ssl/private/prod-domain.key && \ chown www-data:www-data /etc/ssl/private/prod-domain.key
3. 运行用户与容器权限加固
已更换运行用户的基础上,进一步限制容器权限:
- Dockerfile中明确指定非root运行用户:
USER www-data
- 启动容器时移除不必要的Linux能力,仅保留必需权限:
docker run --cap-drop all --cap-add NET_BIND_SERVICE <your-image>
(NET_BIND_SERVICE是Apache绑定80/443端口必需的能力,其余能力均可移除)
4. 镜像层面额外加固措施
- 清理APT缓存,减少镜像体积与潜在漏洞:
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
- 固定软件版本,避免依赖最新版带来的兼容性或安全风险:
RUN apt-get update && apt-get install -y --no-install-recommends \ apache2=2.4.41-4ubuntu3.14 \ postgresql=12.17-0ubuntu0.20.04.1
- 禁用Apache、PostgreSQL的不必要模块/服务,比如Apache的
mod_autoindex,PostgreSQL的非必需扩展。
5. 修复验证
构建镜像后,通过Aqua Scanner重新扫描确认敏感文件已移除;也可手动检查容器内文件:
docker exec <container-id> ls -l /etc/ssl/private/
内容的提问来源于stack exchange,提问作者yollo
相关产品推荐
相关产品推荐

