1. 确保SELinux处于Enforcing模式(强制生效)
SELinux的核心价值在于强制执行访问控制策略,因此必须将其设置为Enforcing模式(而非Permissive或Disabled)。通过sestatus命令检查当前状态(输出应显示“Current mode: enforcing”);若未启用,需修改/etc/selinux/config文件,将SELINUX=enforcing(并建议设置SELINUXTYPE=targeted,适用于大多数场景),修改后重启系统使配置生效。此步骤是SELinux安全防护的基础,Disabled模式会完全关闭SELinux,Permissive模式仅记录违规而不阻止,均无法提供有效保护。
2. 正确配置安全上下文(Security Context)
安全上下文是SELinux的“身份证”,包含**用户(User)、角色(Role)、类型(Type)、级别(Level)**四个字段(其中Type是最关键的权限控制维度)。需确保:
ls -Z(文件/目录)、ps -eZ(进程)查看当前上下文;httpd_sys_content_t),使用restorecon -Rv /path/to/dir恢复默认上下文(基于/etc/selinux/targeted/contexts/files/file_contexts);/webdata),使用semanage fcontext -a -t httpd_sys_content_t "/webdata(/.*)?"添加持久化规则,再用restorecon应用。正确的上下文是SELinux正确授权的前提。3. 遵循最小权限原则(Least Privilege)
SELinux的优势在于精细化权限控制,需避免进程拥有“过度权限”:
httpd_t、MySQL用mysqld_t),而非unconfined_t(无约束域);semanage port命令仅开放必要端口(如HTTP用tcp 80、HTTPS用tcp 443),例如semanage port -a -t http_port_t -p tcp 8080添加自定义端口;setsebool -P httpd_can_network_connect_db off)。最小权限能有效降低“权限滥用”的风险。4. 监控与分析AVC拒绝日志(Audit Logs)
AVC(Access Vector Cache)日志记录了SELinux拒绝的访问请求,是排查问题的关键。使用以下命令分析日志:
ausearch -m avc -ts recent:查看最近的拒绝事件;sealert -a /var/log/audit/audit.log:生成易读的报告(包含违规原因和建议解决方案)。/var/www/html目录,日志会提示“avc: denied { read } for pid=1234 comm=“httpd” name=“index.html” dev=“sda1” ino=5678 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:default_t:s0 tclass=file”,说明Type不匹配,需调整目录的SELinux类型。5. 合理调整布尔值(Booleans)
SELinux布尔值是“开关型”策略,用于快速启用/禁用特定功能的权限。通过getsebool -a查看所有布尔值,使用setsebool -P永久修改(-P表示持久化,重启后仍有效)。例如:
setsebool -P httpd_can_network_connect on;setsebool -P ftp_home_dir on。ftp_home_dir)。6. 定制最小化自定义策略(Custom Policies)
若默认策略无法满足需求(如自定义应用无法正常运行),需定制最小化策略(仅授予必要权限):
ausearch -m avc获取拒绝日志;audit2allow生成初始策略(ausearch -m avc | audit2allow -M mypolicy),生成.te(源文件)和.pp(编译后)文件;.te文件,删除不必要的权限(如仅需读文件则移除write权限);checkpolicy编译(checkpolicy -o mypolicy.pp -m mypolicy.te),再用semodule -i mypolicy.pp加载。7. 定期审计与维护策略
SELinux配置并非“一劳永逸”,需定期进行:
semodule -l查看已加载的策略模块,确认无未授权的模块;yum update)或应用升级,调整策略以适应新需求;/etc/selinux/config、自定义策略模块(.pp文件)和file_contexts文件,防止配置丢失。