安全增强型Linux (SELinux) 是一个Linux内核安全模块,用于执行强制访问权限控制策略。这允许您将进程限制为其策略明确允许的文件、目录和端口。即使标准文件权限允许访问权限,这也会区块访问权限。
关于此任务
支持的平台
MongoDB提供了与 mongod 一起使用的 SELinux 策略。这适用于以下系统上的MongoDB Enterprise和MongoDB Community :
Red Hat Enterprise Linux或相关发行版
使用包管理器安装的MongoDB
支持的配置
如果您的MongoDB 部署对以下任何设置使用自定义值,则无法使用MongoDB SELinux 策略:
数据目录:
dbPath日志目录:
path进程ID路径:
pidFilePath
保单覆盖
MongoDB SELinux 策略仅涵盖 mongod。如果要在也使用 mongos、mongosh 或 mongocryptd 的系统上使用 SELinux,则需要配置自定义策略。
向后兼容性
您必须从之前克隆了 SELinux 策略的目录运行以下命令,然后才能降级到较早的MongoDB版本:
sudo make uninstall
自定义 SELinux 策略
您可以使用 semanage 命令自定义MongoDB SELinux 策略。示例,要将端口 30000 添加到 mongod_port_t,运行以下命令:
sudo semanage port -at mongod_port_t -p tcp 30000
这会将 SELinux 配置为允许标准MongoDB端口和端口 30000 上的 TCP 连接。
开始之前
确保您的系统上已安装必备软件包:
sudo dnf install git make checkpolicy policycoreutils \ selinux-policy-devel
强制实施
SELinux默认执行策略,这意味着它会阻止违反其配置限制的进程。在开发环境中,用户有时会禁用 SELinux 或将其配置为日志但允许所有操作。开始之前,请检查 SELinux 是否正在执行其策略。
要检查 SELinux 所处的模式,运行以下命令:
getenforce
Enforcing
如果该命令返回 Permissive,您可以使用 setenforce 命令将其重置为强制执行:
sudo setenforce 1
要使更改持久,请在 /etc/selinux/config文件中设立SELINUX 变量:
SELINUX=enforcing
步骤
SELinux 现在使用MongoDB策略,允许您在 SELinux 处于强制模式时运行mongod。