推荐三
docker daemon 配置文件
本节涵盖了Docker相关文件和目录的权限和所有权。 保持可能包含敏感参数的文件和目录安全,对于Docker daemon 的正确和安全运行非常重要。
3.1 验证docker.service文件的所有权设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证“docker.service”
文件所有权和组所有权已正确设置为“root”
。
缘由
“docker.service”
文件包含了一些可能会改变Docker daemon行为的敏感参数。因此,它应该由“root”
用户和“root”
用户组拥有,以此来保证文件的完整性。
审计
步骤1:找出文件位置
systemctl show -p FragmentPath docker.service
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,以验证该文件是否由“root”
用户和“root”
用户组拥有
例如:
stat -c %U:%G /usr/lib/systemd/system/docker.service | grep -v root:root
正常情况上述命令应该没有任何返回
修正
步骤1:找出文件位置:
systemctl show -p FragmentPath docker.service
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,将文件的用户和用户组设置为“root”
例如:
chown root:root /usr/lib/systemd/system/docker.service
影响
无
默认值
该文件可能不存在于系统上。在这种情况下,此基线不适用。默认情况下,如果文件存在,则该文件的用户和用户组应被正确的设置为“root”
。
参考文献
1. https://docs.docker.com/engine/admin/systemd/
3.2 验证docker.service文件权限是否被设置为644或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证“docker.service”
文件的权限是否正确的设置为“644”
或更严格
缘由
“docker.service”
文件包含一些可能改变Docker daemon行为的敏感参数。因此除了“root”
以外,其他任何用户的写入操作都是不被允许的,以此来保持文件的完整性。
审计
步骤1:找出文件位置
systemctl show -p FragmentPath docker.service
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,以验证文件权限是否被设置为“644”
或更严格
例如,
stat -c %a /usr/lib/systemd/system/docker.service
修正
步骤1:找出文件位置
systemctl show -p FragmentPath docker.service
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,将文件权限设置为“644”
例如,
chmod 644 /usr/lib/systemd/system/docker.service
影响
无
默认值
该文件可能不存在于系统上。在这种情况下,此基线不适用。默认情况下,如果文件存在,则该文件权限应被正确设置为“644”
。
参考文献
1. https://docs.docker.com/articles/systemd/
3.3 验证docker.socket文件的所有权设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证“docker.socket
”文件的所有权和组所有权是否正确设置为“root”
。
缘由
“docker.socket”
文件包含一些可能会改变Docker远程API行为的敏感参数。因此,它应该由“root”
用户和用户组所有,以此来保持文件的完整性。
审计
步骤1:找出文件位置:
systemctl show -p FragmentPath docker.socket
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,以验证该文件是否由“root”
用户和“root”
用户组拥有
例如:
stat -c %U:%G /usr/lib/systemd/system/docker.socket | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
步骤1:找出文件位置
systemctl show -p FragmentPath docker.socket
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令将文件的用户和用户组设置为“root”
例如,
chown root:root /usr/lib/systemd/system/docker.socket
影响
无
默认值
该文件可能不存在于系统上。在这种情况下,此基线不适用。默认情况下,如果文件存在,则该文件的用户和用户组应被正确的设置为“root”
。
参考文献
1. https://docs.docker.com/articles/basics/#bind-docker-to-another-hostport-or-a- unix-socket
2. https://github.com/YungSang/fedora-atomic- packer/blob/master/oem/docker.socket
3. http://daviddaeschler.com/2014/12/14/centos-7rhel-7-and-docker-containers- on-boot/
3.4 验证docker.socket文件权限是否被设置为644或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证“docker.socket”
文件的权限是否正确的设置为“644”
或更严格
缘由
“docker.socket”
文件包含一些可能改变Docker远程API行为的敏感参数。因此应该只有“root”
用户才能对其进行写入操作,以此来保持文件的完整性
审计
步骤1:找出文件位置
systemctl show -p FragmentPath docker.socket
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,以验证文件权限是否被设置为“644”
或更严格
例如,
stat -c %a /usr/lib/systemd/system/docker.socket
修正
步骤1:找出文件位置
systemctl show -p FragmentPath docker.socket
步骤2:如果文件不存在,则此基线不适用。如果该文件存在,请使用正确的文件路径执行以下命令,将文件权限设置为“644”
例如,
chmod 644 /usr/lib/systemd/system/docker.socket
影响
无
默认值
该文件可能不存在于系统上。在这种情况下,此基线不适用。默认情况下,如果文件存在,则该文件权限应被正确设置为“644”
。
参考文献
1. https://docs.docker.com/articles/basics/#bind-docker-to-another-hostport-or-a- unix-socket
2. https://github.com/YungSang/fedora-atomic- packer/blob/master/oem/docker.socket
3. http://daviddaeschler.com/2014/12/14/centos-7rhel-7-and-docker-containers- on-boot/
3.5 验证/etc/docker目录的所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证“/etc/docker“
目录的所有权和组所有权是否正确设置为“root”
。
缘由
除了各种敏感文件,“/etc/docker”
目录还包含证书和密钥。因此,它应该由“root”
用户和用户组拥有,以此来保持目录的完整性。
审计
执行以下命令来验证该目录是否由“root”
用户和用户组拥有
stat -c %U:%G /etc/docker | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root /etc/docker
这会将该目录的用户和用户组所有权设置为“root”
影响
无
默认值
默认情况下,此目录的用户和用户组所有权已正确设置为“root”
参考文献
1. https://docs.docker.com/articles/certificates/
3.6 验证/etc/docker目录权限是否被设置为755或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证/etc/docker
目录权限是否被正确设置为'755'
或更严格
缘由
除了各种敏感文件,“/etc/docker”
目录还包含证书和密钥。因此只有“root”
用户才能进行写入操作,以此来保持目录的完整性
审计
执行以下命令以验证目录权限是否为“755”
或更严格
stat -c %a /etc/docker
修正
chmod 755 /etc/docker
这将设置目录的权限为'755'
影响
无
默认值
默认情况下,此目录的权限已正确设置为“755”
参考文献
1. https://docs.docker.com/articles/certificates/
3.7 验证仓库证书文件所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证所有仓库证书文件(通常在/etc/docker/certs.d/<registry-name>
目录下)是否由"root"
用户和用户组拥有
缘由
/etc/docker/certs.d/ <registry-name>
目录包含Docker 仓库的证书。这些证书文件必须由“root”
用户和用户组拥有,以维护证书的完整性
审计
执行以下命令以验证仓库证书文件是否由"root"
用户和用户组拥有
stat -c %U:%G /etc/docker/certs.d/* | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root /etc/docker/certs.d/<registry-name>/*
这会将仓库证书文件的用户和用户组所有权设置为“root”
影响
无
默认值
默认情况下,仓库证书文件的用户和用户组所有权已正确设置为“root”
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/reference/commandline/cli/#insecure-registries
3.8 验证仓库证书文件权限是否设置为444或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证所有仓库证书文件(通常在/etc/docker/certs.d/<registry-name>
目录下)的权限是否是"444"
或更严格。
缘由
/etc/docker/certs.d/<registry-name>
目录包含了Docker 仓库证书。这些证书文件必须具有“444”
权限,以此维护证书的完整性
审计
执行以下命令以验证仓库证书文件权限为“444”
或更严格
stat -c %a /etc/docker/certs.d/<registry-name>/*
修正
chmod 444 /etc/docker/certs.d/<registry-name>/*
这会将仓库证书文件的所有权设置为“444”
影响
无
默认值
默认情况下,仓库证书文件的权限可能不是“444”
。默认文件权限由系统或用户特定的 umask
值进行管理
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/reference/commandline/cli/#insecure-registries
3.9 验证TLS CA证书文件的所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证TLS CA证书文件(与“--tlscacert”
参数一起传递的文件)是否由"root"
用户和用户组拥有
缘由
TLS CA证书文件应该被保护,以免受任何篡改。它通过给定的CA证书对Docker服务进行身份验证。因此,它必须由“"root"
用户和用户组拥有,以保持CA证书的完整性
审计
执行以下命令以验证TLS CA证书文件是否由"root"
用户和用户组拥有
stat -c %U:%G <path to TLS CA certificate file> | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root <path to TLS CA certificate file>
这会将TLS CA证书文件的用户和用户组所有权设置为"root"
影响
无
默认值
默认情况下,TLS CA证书文件的用户和用户组所有权已正确设置为“root”
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/articles/https/
3.10 验证TLS CA证书文件权限是否设置为444或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证TLS CA证书文件(与“ -- tlscacert”
参数一起传递的文件)的权限是否是"444"
或更严格。
缘由
TLS CA证书文件应该被保护,以免受任何篡改。它通过给定的CA证书对Docker服务进行身份验证。因此,它必须具有“444”
权限,以保持CA证书的完整性
审计
执行以下命令以验证TLS CA文件权限为“444”
或更严格
stat -c %a <path to TLS CA certificate file>
修正
chmod 444 <path to TLS CA certificate file>
这会将TLS CA文件的权限设置为“444”
影响
无
默认值
默认情况下,TLS CA文件的权限可能不是“444”
。默认文件权限由系统或用户特定的umask
值进行管理
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/articles/https/
3.11 验证Docker服务证书文件的所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证Docker服务证书文件(与“--tlscert”
参数一起传递的文件)是否由“root”
用户和用户组拥有
缘由
Docker服务证书文件应该被保护,以免受任何篡改。它通过给定的服务证书对Docker服务进行身份验证。因此,它必须由“"root"
用户和用户组拥有,以保持证书的完整性
审计
执行以下命令以验证Docker服务证书文件是否由"root"
用户和用户组拥有
stat -c %U:%G <path to Docker server certificate file> | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root <path to Docker server certificate file>
这会将Docker服务证书文件的用户和用户组所有权设置为“root”
影响
无
默认值
默认情况下,Docker服务证书文件的用户和用户组所有权已正确设置为“root”
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/articles/https/
3.12 验证Docker服务证书文件权限是否设置为444或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证Docker服务证书文件(与“--tlscert”
参数一起传递的文件)的权限是否是"444"
或更严格
缘由
Docker服务证书文件应该被保护,以免受任何篡改。它通过给定的服务证书对Docker服务进行身份验证。因此,它必须具有“444”
权限,以保持Docker服务证书的完整性
审计
执行以下命令以验证Docker服务证书文件权限为“444”
或更严格
stat -c %a <path to Docker server certificate file>
修正
chmod 444 <path to Docker server certificate file>
这会将Docker服务证书文件的权限设置为“444”
影响
无
默认值
默认情况下,Docker服务证书文件的权限可能不是“444”
。默认文件权限由系统或用户特定的umask
值进行管理
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/articles/https/
3.13 验证Docker服务证书密钥文件的所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证Docker服务证书密钥文件(与“--tlskey”
参数一起传递的文件)是否由“root”
用户和用户组拥有
缘由
Docker服务证书密钥文件应被保护,以防止被篡改以及任何不必要的读取。它拥有Docker服务证书的私钥。因此,它必须由“root”
用户和用户组拥有,以保持证书的完整性
审计
执行以下命令以验证Docker服务证书密钥文件是否由"root"
用户和用户组拥有
stat -c %U:%G <path to Docker server certificate key file> | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root <path to Docker server certificate key file>
这会将Docker服务证书密钥文件的用户和用户组所有权设置为“root”
影响
无
默认值
默认情况下,Docker服务证书密钥文件用户和用户组的所有权已正确设置为“root”
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/articles/https/
3.14 验证Docker服务证书密钥文件权限是否设置为400(Scored)
配置适用性
Level 1- Docker
描述
验证Docker服务证书密钥文件(与“--tlskey”
参数一起传递的文件)的权限是否是"400"
缘由
Docker服务证书密钥文件应被保护,以防止任何篡改及不必要的读取。它拥有Docker服务器证书的私钥。因此必须具有“400”
的权限,以保持Docker服务证书的完整性
审计
执行以下命令来验证Docker服务证书密钥文件的权限是否为“400”
stat -c %a <path to Docker server certificate key file>
修正
chmod 400 <path to Docker server certificate key file>
这会将Docker服务证书密钥文件权限设置为“400”
影响
无
默认值
默认情况下,Docker服务证书密钥文件的权限可能不是“400”
。默认文件权限由系统或用户特定的umask
值进行管理
参考文献
1. https://docs.docker.com/articles/certificates/
2. http://docs.docker.com/articles/https/
3.15 验证Docker套接字文件所有权是否设置为root:docker(Scored)
配置适用性
Level 1- Docker
描述
验证Docker套接字文件是由“root”
用户拥有,且被“docker”
用户组拥有
缘由
Docker daemon以“root”
身份运行。因此,默认的Unix套接字必须由“root”
用户拥有。如果任何其他用户或进程拥有此套接字,那么该非特权用户或进程就可能与Docker daemon 进行交互。而且,这样的非特权用户或进程还可能与容器交互。这既不安全也是我们不希望的行为。 此外,Docker安装程序创建一个名为“docker”
的Unix组。您可以将用户添加到该组,这些用户将能够读写默认的Docker Unix套接字。“docker”
组的成员资格由系统管理员严格控制。如果其他任何组拥有此套接字,那么该组的成员可能会与Docker daemon 进行交互。并且,这样的用户组可能不像“docker”
组那样受到严格控制。这既不安全也是我们不希望看到的行为。 因此,默认的Docker Unix套接字文件必须由“root”
用户拥有,并由“docker”
用户组拥有,以保持套接字文件的完整性
审计
执行以下命令验证Docker套接字文件是由“root”
用户拥有,且由“docker”
用户组拥有
stat -c %U:%G /var/run/docker.sock | grep -v root:docker
正常情况上述命令应该没有任何返回。
修正
chown root:docker /var/run/docker.sock
这会将默认的Docker套接字文件的所有权和组所有权分别设置为“root”
和“docker”
影响
无
默认值
默认情况下,Docker套接字文件的所有权和组所有权已被正确设置为“root:docker”
参考文献
1. https://docs.docker.com/reference/commandline/cli/#daemon-socket-option
2. https://docs.docker.com/articles/basics/#bind-docker-to-another-hostport-or-a-
unix-socket
3.16 验证Docker套接字文件权限是否设置为660或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证Docker套接字文件权限是否为“660”
或更严格
缘由
只允许“root”
和“docker”
组的成员读写默认的Docker Unix套接字。因此,Docket套接字文件权限是否为“660”
或更严格
审计
执行以下命令以验证Docker套接字文件权限是否为“660”
或更严格
stat -c %a /var/run/docker.sock
修正
chmod 660 /var/run/docker.sock
这会将Docker套接字文件的文件权限设置为“660”
影响
无
默认值
默认情况下,Docker套接字文件的权限已正确设置为“660”
参考文献
1. https://docs.docker.com/reference/commandline/cli/#daemon-socket-option
2. https://docs.docker.com/articles/basics/#bind-docker-to-another-hostport-or-a-
unix-socket
3.17 验证daemon.json文件的所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证“daemon.json”
文件是否由“root”
用户和用户组拥有
缘由
"daemon.json"
文件包含可能改变docker daemon行为的敏感参数。因此,它应该由“root”
用户和用户组拥有,以保持文件的完整性
审计
执行以下命令以验证此文件是否由"root"
用户和用户组拥有
stat -c %U:%G /etc/docker/daemon.json | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root /etc/docker/daemon.json
这会将此文件的用户和用户组所有权设置为“root”
影响
无
默认值
该文件可能不存在于系统上。 在这种情况下此基线不适用
参考文献
1. https://docs.docker.com/engine/reference/commandline/daemon/#daemon- configuration-file
3.18 验证daemon.json文件权限是否被设置为644或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证“daemon.json”
文件权限是否正确设置为“644”
或更严格
缘由
"daemon.json"
文件包含可能改变docker daemon行为的敏感参数.因此,它应该由“root”
用户和用户组拥有,以保持文件的完整性
审计
执行以下命令以验证此文件权限是否被正确设置为“644”
或更严格
stat -c %a /etc/docker/daemon.json
修正
chmod 644 /etc/docker/daemon.json
这会将该文件的文件权限设置为“644”
影响
无
默认值
该文件可能不存在于系统上。 在这种情况下此基线不适用
参考文献
1. https://docs.docker.com/engine/reference/commandline/daemon/#daemon- configuration-file
3.19 验证/etc/default/docker文件的所有权是否设置为root:root(Scored)
配置适用性
Level 1- Docker
描述
验证“/etc/default/docker”
文件是否由“root”
用户和用户组拥有
缘由
”/etc/default/docker“
文件包含可能会改变docker daemon行为的敏感参数。因此,它应该由“root”
用户和用户组拥有,以保持目录的完整性
审计
执行以下命令以验证此文件是否由"root"
用户和用户组拥有
stat -c %U:%G /etc/default/docker | grep -v root:root
正常情况上述命令应该没有任何返回。
修正
chown root:root /etc/default/docker
这会将此文件的用户和用户组所有权设置为“root”
影响
无
默认值
该文件可能不存在于系统上。 在这种情况下此基线不适用
参考文献
1. https://docs.docker.com/engine/admin/configuring/
3.20 验证/etc/default/docker文件权限是否被设置为644或更严格(Scored)
配置适用性
Level 1- Docker
描述
验证/etc/default/docker
文件权限是否正确设置为“644”
或更严格
缘由
/etc/default/docker
文件包含可能改变docker daemon行为的敏感参数。因此,它应该由“root”
用户和用户组拥有,以保持文件的完整性
审计
执行以下命令以验证此文件权限是否被正确设置为“644”
或更严格
stat -c %a /etc/default/docker
修正
chmod 644 /etc/default/docker
这会将该文件的文件权限设置为“644”
影响
无
默认值
该文件可能不存在于系统上。 在这种情况下此基线不适用
参考文献
1. https://docs.docker.com/engine/admin/configuring/
最后更新于
这有帮助吗?