容器安全配置

本博客地址:https://security.blog.csdn.net/article/details/129677238

一、容器安全加固原则

从安全性考虑,容器主机应遵循以下安全加固原则:

1、最小安装化,不安装额外的服务和软件,以免增大安全风险;
2、配置交互用户登录超时时间;
3、关闭不必要的数据包转发功能;
4、禁止ICMP重定向;
5、配置可远程访问地址范围;
6、删除或锁定与设备运行、维护等工作无关的账号、重要文件和目录的权限设置;
7、关闭不必要的进程和服务等。

二、容器安全配置方式

1、为容器的存储分配单独的分区

所有Docker容器及数据和元数据都存储在/var/lib/docker 目录下。默认情况下,/var/lib/docker将根据可用性挂载在/或/var 分区下。Docker依赖于/var/lib/docker作为默认目录,其存储所有Docker相关文件,包括镜像文件。该目录可能会被恶意的写满,导致 Docker、甚至主机可能无法使用。因此,建议为存储 Docker 文件创建一个单独的分区(逻辑卷)。

检查方法:执行命令,应该返回/var/lib/docker挂载点的分区详细信息。

grep /var/lib/docker /etc/fstab

加固方法:新安装 Docker 时,为/var/lib/docker挂载点创建一个单独的分区。对于先前安装的系统,请使用逻辑卷管理器(LVM)创建分区。

2、宿主机安全加固

保证宿主机符合相应的安全规范,对其进行有效的漏洞管理和配置管理。

3、将Docker更新到最新版本

Docker软件会不断更新,旧的版本可能存在安全漏洞,因此需要保证已发现的Docker软件漏洞尽快得到修复,并且定期对Docker版本进行风险评估。

4、守护进程的控制权限

Docker的守护进程需要root权限,为添加到docker用户组的用户提供了完整的root访问权限。因此在容器主机上要严格限制docker用户组内的用户,删除一切不受信任的用户。

5、对Docker守护进程进行审计

审计所有活动的Docker守护进程,除了审核常规的Linux文件系统和系统调用外,还要审核所有Docker相关的文件和目录。 Docker守护进程以root特权运行。它的运行取决于一些关键文件和目录。

检查方法:

验证是否存在Docker守护程序和文件目录的审核规则。

auditctl -l | grep /usr/bin/docker
auditctl -l | grep /var/lib/docker
auditctl -l | grep /etc/docker
systemctl show -p FragmentPath docker.service
systemctl show -p FragmentPath docker.socket
auditctl -l | grep /etc/default/docker
auditctl -l | grep /etc/docker/daemon.json
auditctl -l | grep /usr/bin/docker-containerd
auditctl -l | grep /usr/bin/docker-runc

加固方法:

在/etc/audit/audit.rules 文件中添加以下配置。

-w /usr/bin/docker -k docker
-w /var/lib/docker -k docker
-w /etc/ docker -k docker
-w /usr/lib/systemd/system/docker.service -k docker
-w /usr/lib/systemd/system/docker.socket -k docker
-w /etc/default/docker -k docker
-w /etc/docker/daemon.json -k docker
-w /usr/bin/docker-containerd -k docker
-w /usr/bin/docker-runc -k docker

6、对Docker相关的文件和目录进行审计

除了对Docker守护进程进行审计,还需要对Docker相关的文件和目录进行审计,如:

/var/lib/docker:包含有关容器的所有信息
/etc/docker:包含Docker守护进程和Docker客户端之间TLS通信的所有密钥和证书
docker.service:Docker守护进程运行参数配置文件
docker.socket:守护进程运行的socket
/etc/default/docker:支持Docker守护进程的各种参数
/etc/default/daemon.json:支持Docker守护进程的各种参数
/usr/bin/docker-containerd、/usr/bin/docker-runc:Docker依赖于containerd和runC来生成容器

猜你喜欢

转载自blog.csdn.net/wutianxu123/article/details/129677238