运行环境配置规则
为容器创建单独分区、使能容器IPv6
- Docker的默认目录是“/var/lib/docker”,所有Docker相关文件,包括镜像,都存放在这个目录下。这个目录可能很快就会填满,届时Docker和主机可能无法使用。因此,建议创建一个单独的分区(逻辑卷),用来存放Docker文件。
- Docker默认未开启IPv6,而一些应用依赖于IPv6协议,缺少IPv6的支持可能会导致这些应用的部分功能出现异常。以下提供了一种方法以使能Docker的IPv6协议。
建议修改方式:
- 新建一个目录存放Docker相关文件,并mount一个未被挂载且文件系统类型为ext4的磁盘作为独立的分区,这里以sda为例。
新建目录“/root/sda/docker”,并在“/etc/fstab”文件中添加一行“/dev/sda/root/sda/docker ext4 defaults 0 0”。若/dev/sda已被挂载或非ext4类型文件系统,则按实际情况选择未被挂载且文件系统类型为ext4的磁盘,下列命令中的sda根据实际可挂载的磁盘名称更改。
mkdir -p /root/sda/docker echo "/dev/sda /root/sda/docker ext4 defaults 0 0" >> /etc/fstab
- 选择“/root/sda/docker”路径。
- 打开“/etc/docker/daemon.json”文件。
vim /etc/docker/daemon.json
- 按“i”进入编辑模式,在文件中添加属性“"data-root": "/root/sda/docker", "ipv6": true,"fixed-cidr-v6": "2001:db8::/64"”,以配置Docker的数据存储位置、使能IPv6协议。该文件需要遵循json格式。
1 2 3 4 5 6
{ "debug": true, "data-root": "/root/sda/docker", "ipv6": true, "fixed-cidr-v6": "2001:db8::/64" }
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
修改“/etc/docker/daemon.json”文件,若“/etc/docker/daemon.json”文件不存在,则按如下步骤操作。
- 新建该文件。
touch /etc/docker/daemon.json vim /etc/docker/daemon.json
- 按“i”进入编辑模式,在文件中添加属性“"data-root": "/root/sda/docker", "ipv6": true,"fixed-cidr-v6": "2001:db8::/64"”,需要遵循json格式。
1 2 3 4 5
{ "data-root": "/root/sda/docker", "ipv6": true, "fixed-cidr-v6": "2001:db8::/64" }
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“/etc/docker/daemon.json”文件。
- 重启Docker服务。
重启Docker服务前需要确保没有其他容器运行,如果有需要清理。
1
systemctl restart docker
- 重新加载“/etc/fstab”文件中的内容。
1
mount -a
及时使用最新的Docker版本
通过Docker的及时更新,可以规避Docker软件中的已知漏洞。受过训练的攻击者可以利用已知漏洞试图访问系统接入或提升自己的权限。如果不能及时安装Docker更新,Docker软件可能会有漏洞,导致权限提升、非法访问或其他安全违规。

使用未经验证的最新版本Docker可能存在兼容性问题。
只允许可信用户加入Docker用户组
这里可信用户是指无法被外部不可信方调用的OS用户,换句话说,不可信用户就是可以被外部不可信方调用或与其有交互的用户。Docker守护进程当前要求root权限。加入Docker组的用户拥有完全的root访问权限。通过Docker可以无需限定容器的访问权限而在Docker主机和客户容器间共享目录。这意味着可以启动一个容器,将主机上的/目录映射到容器。之后,该容器就能够不受任何限制地更改主机的文件系统。简单来说,用户仅仅作为Docker组的一个成员,然后通过主机上映射的/目录启动容器就可以获得升级后的权限。将不可信的用户从Docker组中移除,并且不要将主机上的敏感目录映射到容器卷中。
主机提供对Docker守护进程审计功能(Ubuntu)
Docker守护进程在主机里是以root权限运行的,权限很大。主机应该要提供一种可对Docker守护进程运行和使用状态的审计机制。一旦Docker守护进程出现越权攻击行为,可以追溯攻击事件根源。
建议修改方式:
- 若未安装auditd,则先进行安装。
1
apt install auditd
- 在“/etc/audit/rules.d/audit.rules”文件中添加命令“-w /usr/bin/dockerd -k docker”。
1
echo "-w /usr/bin/dockerd -k docker" >> /etc/audit/rules.d/audit.rules
- 重启日志守护进程。
1
service auditd restart
可执行以下命令查询上述修改是否成功。
1
auditctl -l | grep /usr/bin/dockerd
若回显“-w /usr/bin/dockerd -p rwxa -k docker”,则修改成功。
主机提供对Docker守护进程审计功能(openEuler)
Docker守护进程在主机里是以root权限运行的,权限很大。主机应该要提供一种可对Docker守护进程运行和使用状态的审计机制。一旦Docker守护进程出现越权攻击行为,可以追溯攻击事件根源。
建议修改方式:
- 若未安装auditd,则先进行安装。
1
yum install audit -y
- 在“/etc/audit/rules.d/audit.rules”文件中添加命令“-w /usr/bin/dockerd -k docker”。
1
echo "-w /usr/bin/dockerd -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules
- 重启日志守护进程。
1
service auditd restart
可执行以下命令查询上述修改是否成功。
1
auditctl -l | grep /usr/bin/dockerd
若回显“-w /usr/bin/dockerd -p rwxa -k docker”,则修改成功。
如遇到添加规则无法生效,请尝试清空当前规则后重启日志守护进程,清空当前规则的命令如下。
auditctl -D
主机提供对Docker关键文件和目录的审计功能(Ubuntu)
主机提供对Docker关键文件和目录的审计功能,这些目录和文件包括:“/var/lib/docker”、“/etc/docker”、“/etc/default/docker”、“/etc/docker/daemon.json”、“/usr/bin/docker-containerd”、“/usr/bin/docker-runc”、“docker.service”、“docker.socket”。这些目录存放着跟容器相关的重要信息,主机应当提供对这些关键目录可审计功能。

此处列出的目录均为Docker默认的安装目录,如果为Docker创建了单独的分区,路径可能会变。
建议修改方式:
- 以Docker默认的安装目录为例,在“/etc/audit/rules.d/audit.rules”文件中添加下列命令。如果为Docker创建了单独的分区,则需要将下列目录修改为实际的路径。
1 2 3 4 5 6 7
echo "-w /etc/docker -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /lib/systemd/system/docker.service -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /var/lib/docker -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /etc/default/docker -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /etc/docker/daemon.json -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /usr/bin/containerd -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /usr/bin/runc -k docker" >> /etc/audit/rules.d/audit.rules
- 重启日志守护进程。
1
service auditd restart
主机提供对Docker关键文件和目录的审计功能(openEuler)
主机提供对Docker关键文件和目录的审计功能,这些目录和文件包括:“/var/lib/docker”、“/etc/docker”、“/etc/sysconfig/docker”、“/etc/docker/daemon.json”、“/usr/bin/containerd”、“/usr/bin/runc”、“docker.service”、“docker.socket”。这些目录存放着跟容器相关的重要信息,主机应当提供对这些关键目录可审计功能。

此处列出的目录均为Docker默认的安装目录,如果为Docker创建了单独的分区,路径可能会变。
建议修改方式:
- 以Docker默认的安装目录为例,在“/etc/audit/rules.d/audit.rules”文件中添加下列命令。如果为Docker创建了单独的分区,则需要将下列目录修改为实际的路径。
1 2 3 4 5 6 7 8
echo "-w /var/lib/docker -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /etc/docker -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /etc/sysconfig/docker -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /etc/docker/daemon.json -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /usr/bin/containerd -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /usr/bin/runc -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /usr/lib/systemd/system/docker.service -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules echo "-w /var/run/docker.sock -p rwxa -k docker" >> /etc/audit/rules.d/audit.rules
- 重启日志守护进程。
1
service auditd restart