推荐三

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/

最后更新于