建议修改方式:
新建目录“/root/sda/docker”,并在“/etc/fstab”文件中添加一行“/dev/sda/root/sda/docker ext4 defaults 0 0”。若/dev/sda已被挂载或非ext4类型文件系统,则按实际情况选择未被挂载且文件系统类型为ext4的磁盘,下列命令中的sda根据实际可挂载的磁盘名称更改。
1 2 | mkdir -p /root/sda/docker echo "/dev/sda /root/sda/docker ext4 defaults 0 0" >> /etc/fstab |
1 | vim /etc/docker/daemon.json
|
1 2 3 4 5 6 | { "debug": true, "data-root": "/root/sda/docker", "ipv6": true, "fixed-cidr-v6": "2001:db8::/64" } |
修改“/etc/docker/daemon.json”文件,若“/etc/docker/daemon.json”文件不存在,则自行创建该文件。
1 2 3 4 5 6 7 8 9 | touch /etc/docker/daemon.json cat >/etc/docker/daemon.json <<EOF { "debug":true, "data-root":"/root/sda/docker", "ipv6":true, "fixed-cidr-v6":"2001:db8::/64" } EOF |
重启Docker服务前需要确保没有其他容器运行,如果有需要清理。
1 | systemctl restart docker |
1 | mount -a
|
通过Docker的及时更新,可以规避Docker软件中的已知漏洞。受过训练的攻击者可以利用已知漏洞试图访问系统接入或提升自己的权限。如果不能及时安装Docker更新,Docker软件可能会有漏洞,导致权限提升、非法访问或其他安全违规。
使用未经验证的最新版本Docker可能存在兼容性问题。
这里可信用户是指无法被外部不可信方调用的OS用户,换句话说,不可信用户就是可以被外部不可信方调用或与其有交互的用户。Docker守护进程当前要求root权限。加入Docker组的用户拥有完全的root访问权限。通过Docker可以无需限定容器的访问权限而在Docker主机和客户容器间共享目录。这意味着可以启动一个容器,将主机上的/目录映射到容器。之后,该容器就能够不受任何限制地更改主机的文件系统。简单来说,用户仅仅作为Docker组的一个成员,然后通过主机上映射的/目录启动容器就可以获得升级后的权限。将不可信的用户从Docker组中移除,并且不要将主机上的敏感目录映射到容器卷中。
Docker守护进程在主机里是以root权限运行的,权限很大。主机应该要提供一种可对Docker守护进程运行和使用状态的审计机制。一旦Docker守护进程出现越权攻击行为,可以追溯攻击事件根源。
建议修改方式:
1 | yum install audit -y |
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关键文件和目录的审计功能,这些目录和文件包括:“/var/lib/docker”、“/etc/docker”、“/etc/sysconfig/docker”、“/etc/docker/daemon.json”、“/usr/bin/containerd”、“/usr/bin/runc”、“docker.service”、“docker.socket”。这些目录存放着跟容器相关的重要信息,主机应当提供对这些关键目录可审计功能。
此处列出的目录均为Docker默认的安装目录,如果为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 |