审计Docker主机安全性

用于检查部署 Docker 服务的最佳实践,有则改之无则加勉

  • 使用 Docker 对应用程序和服务进行容器化可以为您提供一些开箱即用的安全优势,但默认的 Docker 安装可能会存在一些与安全相关的配置错误等。为了保护我们安装服务不受安全威胁,我们可以使用 Docker 团队发布的一个安全审计工具。该工具使用非常简单,即在 Docker 主机上运行此清单并标记找到的所有问题。
审计Docker主机安全性

1. 安装使用

安装和使用如此简单

  • [1] Docker
# 部署之后立即开始检查
1. 需要Docker的版本在1.13.0及以上版本
$ docker run -it --net host --pid host --userns host --cap-add audit_control 
     -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST 
     -v /etc:/etc 
     -v /usr/bin/docker-containerd:/usr/bin/docker-containerd 
     -v /usr/bin/docker-runc:/usr/bin/docker-runc 
     -v /usr/lib/systemd:/usr/lib/systemd 
     -v /var/lib:/var/lib 
     -v /var/run/docker.sock:/var/run/docker.sock 
     --label docker_bench_security 
     docker/docker-bench-security
  • [2] Compose
# docker-compose.yml
docker-bench-security:
    build: .

    cap_add:
        - audit_control
    labels:
        - docker_bench_security
    net: host
    pid: host
    stdin_open: true
    tty: true
    volumes:
        - /var/lib:/var/lib
        - /var/run/docker.sock:/var/run/docker.sock
        - /usr/lib/systemd:/usr/lib/systemd
        - /etc:/etc

1. 启动服务
$ docker-compose run --rm docker-bench-security
  • [3] Building
# 获取代码
$ git clone https://github.com/docker/docker-bench-security.git
$ cd docker-bench-security

1. 本地打包
$ docker build --no-cache -t docker-bench-security .

1. 跑跑镜像
$ docker run -it --net host --pid host --cap-add audit_control 
     -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST 
     -v /var/lib:/var/lib 
     -v /var/run/docker.sock:/var/run/docker.sock 
     -v /usr/lib/systemd:/usr/lib/systemd 
     -v /etc:/etc --label docker_bench_security 
     docker-bench-security

2. 命令参数

命令参数也非常言简意赅

审计Docker主机安全性
# 只检查2_2规则并保存检查日志到文件
$ sh docker-bench-security.sh -l /tmp/docker-bench-security.sh.log -c check_2_2

3. 检查项目

检查项目比较全面且必要

[1] 审计的第一部分: 测试主机操作系统的配置

  • 确保为容器创建了单独的分区
    • 将Docker容器和/var/lib/docker目录使用独立分区来保证适当的隔离
  • 确保容器主机已经加固
    • 加固通常包括设置防火墙,锁定各种服务,设置审计和记录以及实施其他安全措施
    • 这个测试只是提醒你考虑强化你的主机安全性,如果你确信环境正常可忽略
  • 确保 Docker 是最新的
    • 通过访问Docker CE发行说明来检查哪个版本是当前的稳定版本
  • 确保只有受信任的用户才能控制 Docker 守护进程
    • 该测试从/etc/group文件输出docker组的行
    • 查看该行并确保只有合适的用户才有权控制Docker守护进程
    • 要从该组中删除用户可使用gpasswd -d username docker
  • 确保为各种 Docker 文件配置审计
    • 需要安装和配置auditd以启用对某些Docker文件/目录和套接字的审计
    • Auditd 是 Linux 访问监控和记帐的子系统,可在内核级别记录值得注意的系统操作