SELinux(Security-Enhanced Linux)通过强制访问控制(MAC)机制,为系统进程、文件、端口等资源提供细粒度安全管控。其策略管理围绕模式切换、上下文配置、规则调整三大核心展开,需结合工具实现精准管控。
SELinux有三种运行模式,直接影响策略执行强度:
getenforce命令,输出结果为Enforcing(强制模式,严格管控)、Permissive(宽容模式,仅记录违规)或Disabled(禁用模式,完全关闭SELinux)。setenforce命令,参数0切换至宽容模式,1切换至强制模式(仅当前会话生效,重启后恢复配置文件设置)。/etc/selinux/config文件,修改SELINUX参数(可选值:enforcing/permissive/disabled),需重启系统生效。
⚠️ 注意:RHEL 9及以上系统不支持通过配置文件完全禁用SELinux,需使用
grubby命令修改内核参数(如grubby --update-kernel ALL --args selinux=0)。
SELinux策略类型决定了管控范围,默认采用targeted策略(仅保护常见网络服务,如Apache、SSH),兼顾安全性与兼容性:
sestatus命令输出中的SELINUXTYPE字段(如targeted)。/etc/selinux/config文件,修改SELINUXTYPE参数(可选值:targeted/mls/minimum),需重启系统生效。安全上下文是SELinux的核心标识,格式为user:role:type:sensitivity:category(如system_u:object_r:httpd_sys_content_t:s0),用于定义资源的访问权限。管理工具包括:
ls -Z:查看文件/目录的上下文。ps -eZ:查看进程的上下文(domain)。netstat -tulpnZ/ss -tulpnZ:查看网络连接的上下文(端口类型)。chcon命令(如chcon -R -t httpd_sys_content_t /web,将/web目录及子文件递归设为httpd_sys_content_t类型,仅当前生效)。semanage fcontext命令(如semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?",添加永久标签规则),需配合restorecon命令应用(restorecon -Rv /web,恢复默认上下文)。布尔值是SELinux策略中的可开关选项,用于动态调整策略行为(如是否允许Apache访问网络)。管理工具:
getsebool -a(输出所有布尔值及其状态,如httpd_can_network_connect_db on)。setsebool命令(如setsebool httpd_can_network_connect_db on,临时开启;加-P参数如setsebool -P httpd_can_network_connect_db on,永久生效)。当默认策略无法满足需求(如自定义应用需要访问特定资源),需创建自定义策略模块:
/var/log/audit/audit.log中,用ausearch -m avc -ts recent命令过滤最近的拒绝事件。audit2allow工具分析日志,生成.te(策略源文件)和.pp(编译后模块)文件(如grep nginx /var/log/audit/audit.log | audit2allow -M mypol)。semodule -i mypol.pp命令将模块安装到SELinux策略中(需谨慎审核规则,避免过度授权)。setools-console包(yum install setools-console),命令示例:seinfo -t | grep httpd(搜索与Apache相关的类型)。allow规则),命令示例:sesearch -s passwd_t -t shadow_t -p write --allow(查找passwd_t域对shadow_t类型是否有写权限)。sealert -a /var/log/audit/audit.log(生成所有事件的详细报告)。Permissive模式,观察日志确认无违规后再切换至Enforcing模式。.te/.fc)纳入版本控制系统(如Git),便于追踪变更和回滚。/var/log/audit/audit.log,识别潜在安全问题并及时调整策略。