SELinux(Security-Enhanced Linux)是一种 Linux 内核安全模块,用于强制访问控制(MAC)。在 CentOS 中,SELinux 可以与 Docker 协同工作以增强容器的安全性。以下是 SELinux 与 Docker 在 CentOS 中协同工作的方式:
SELinux 的基本配置
- 启用 SELinux:在 CentOS 上,可以通过编辑
/etc/selinux/config
文件启用 SELinux,并设置为 targeted
模式,以实施强制访问控制。
- SELinux 模式:SELinux 有三种操作模式:Enforcing(强制)、Permissive(宽容)和 Disabled(禁用)。在 Enforcing 模式下,SELinux 完全强制执行策略。在 Permissive 模式下,SELinux 不会阻止任何访问,而是仅记录违反的事件。在 Disabled 模式下,SELinux 完全关闭。
Docker 与 SELinux 的协同工作
- 临时关闭 SELinux:可以使用
setenforce 0
命令临时关闭 SELinux。
- 永久关闭 SELinux:可以通过修改
/etc/selinux/config
文件,将 SELINUX=enforcing
改为 SELINUX=disabled
来永久关闭 SELinux。
- 配置 Docker 与 SELinux:确保 Docker 服务在启动时启用了 SELinux,可以通过检查
/etc/sysconfig/docker
文件中的 OPTIONS 参数来确认。
- 使用最小权限原则:限制容器权限,避免使用 root 用户在容器中运行应用程序,而是创建一个具有最小权限的用户来运行应用程序。
SELinux 策略管理
- 启用策略:通过命令
semanage
启用策略。
- 查看和修改 SELinux 上下文:可以使用
ls -Z
命令查看文件的 SELinux 上下文,使用 chcon
命令修改文件的 SELinux 上下文。
SELinux 审计日志与错误排查
- 查看 SELinux 错误日志:当 SELinux 阻止某些操作时,会记录日志信息。默认情况下,日志存储在
/var/log/audit/audit.log
中。
- 使用 audit2allow 工具生成策略:基于 SELinux 日志生成允许的策略,从而解决问题。