centos selinux功能介绍
小樊
43
2026-01-07 21:37:38
SELinux 在 CentOS 中的功能与定位
- SELinux(Security-Enhanced Linux)是 Linux 内核的强制访问控制(MAC)安全子系统,工作在内核态,对进程、文件、端口等资源实施细粒度访问控制,遵循最小权限原则。即使进程以 root 身份运行,也会被策略约束,从而显著降低被攻破后的影响范围。在 CentOS/RHEL 中默认集成并启用,是保障服务器安全的基石之一。
核心机制与关键概念
- DAC 与 MAC:传统 **DAC(自主访问控制)**基于用户/组权限;**MAC(强制访问控制)**在此基础上,由安全策略与标签决定访问,优先级更高,能限制 root 的越权行为。
- 安全上下文(Security Context):每个主体(进程)与客体(文件、目录、端口等)都有标签,典型格式为:user:role:type:level。访问是否被允许,取决于策略中“主体域”对“客体类型”的规则匹配,其中 type 最关键。
- 策略与类型:系统预置多种策略,CentOS 默认使用 targeted(仅对选定进程做强制限制),另有 minimum 与更严格的 mls(多级安全)。
- 布尔值(Booleans):策略的开关项,用于在不编写模块的情况下启用/禁用某类功能(如是否允许某服务发起网络连接)。
运行模式与持久化配置
- 三种运行模式:
- Enforcing:强制执行策略,违规操作被拒绝并记录日志(推荐生产使用)。
- Permissive:不拒绝操作,仅记录本应被拒绝的行为(便于排障与策略开发)。
- Disabled:完全关闭 SELinux,不加载策略与标签(强烈不推荐)。
- 常用命令与配置路径:
- 查看与切换模式:
getenforce、setenforce 1|0(仅对当前会话生效,重启后恢复)。
- 持久化配置:编辑 /etc/selinux/config(常见配置项:
SELINUX=enforcing|permissive|disabled;SELINUXTYPE=targeted|minimum|mls),修改后需重启生效。
- 细粒度控制:可将单个域设为宽容(如
semanage permissive -a httpd_t),便于在不影响全局的前提下调试某服务。
常用运维操作与故障排查
- 查看与调整安全上下文:
- 查看:
ls -Z <文件/目录>,ps -Z <进程>。
- 修复与定制:使用
restorecon 按默认规则恢复上下文;用 semanage fcontext 为新路径添加持久化上下文规则,再用 restorecon -R 应用。
- 端口与网络:
- 使用
semanage port 将非标准端口加入策略(如允许 http_port_t 使用 TCP 80)。
- 布尔值:
- 查看/设置:
getsebool -a,setsebool -P <name> on|off(加 -P 使设置永久生效)。
- 日志与排障:
- 拒绝日志位于 /var/log/audit/audit.log(可用
ausearch -m avc 检索),配合 audit2why 或 sealert 获取人类可读解释与修复建议。
- 必要时用
audit2allow 从拒绝日志生成自定义策略模块,并用 semodule -i 加载(应谨慎评估,避免过度放宽策略)。
实践建议
- 生产环境保持 Enforcing;排障时短时切换到 Permissive 定位问题,再回到 Enforcing。
- 避免直接改为 Disabled;若必须关闭,务必了解其会停止标签与策略加载,后续再启用代价较高。
- 变更服务目录、端口或自定义路径时,优先通过 semanage fcontext/restorecon 与 semanage port 正确设置上下文与端口类型,减少对业务的影响。