1. 确认SELinux安装与初始状态
CentOS系统默认可能已安装SELinux,但需通过以下命令确认:rpm -q policycoreutils selinux-policy-targeted。若未安装,使用sudo yum install policycoreutils selinux-policy-targeted安装。安装后,通过sestatus或getenforce命令检查状态:SELINUX=enforcing表示强制模式(推荐)、Permissive表示宽容模式(仅记录违规不阻止)、Disabled表示禁用(不推荐)。
2. 正确配置SELinux模式
编辑/etc/selinux/config文件,将SELINUX=参数设置为enforcing(强制模式,拦截违反策略的操作)或permissive(宽容模式,仅记录违规用于调试)。修改后必须重启系统使设置生效。临时调整模式可使用setenforce 1(启用)或setenforce 0(禁用),但重启后失效。
3. 规范管理安全上下文
SELinux通过安全上下文(格式:user:role:type:level,其中type为核心)控制访问。关键操作包括:
ls -Z(文件/目录)、ps -eZ(进程)、semanage port -l(端口)查看当前上下文;chcon命令(如chcon -t httpd_sys_content_t /var/www/html/index.html),但重启或restorecon后会恢复默认;semanage fcontext -a -t <类型> "<路径>"添加策略规则(如semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?"),再用restorecon -Rv <路径>应用规则(递归修复上下文)。4. 基于审计日志生成自定义策略
当服务因SELinux拒绝访问(如httpd报403错误)时,通过以下步骤生成并应用自定义策略:
ausearch -m avc -ts recent(查看最近的AVC拒绝事件);audit2allow -M mypolicy(根据日志生成策略文件mypolicy.te);checkpolicy -M mypolicy.pp(编译策略),semodule -i mypolicy.pp(安装策略)。注意:需审查策略内容,避免过度授权。5. 优化SELinux性能与兼容性
Permissive模式(如semanage permissive -a httpd_t)减少影响;avc: denied错误),避免直接在生产环境启用导致服务中断。6. 日志监控与问题排查
定期检查SELinux日志(/var/log/audit/audit.log或journalctl -xe | grep -i selinux),重点关注AVC denied(访问控制拒绝)事件。排查步骤:
getenforce,若为Disabled则无法拦截);ls -Z、ps -eZ)是否符合预期;ausearch -m avc -ts today);7. 关键注意事项
SELINUX=enforcing改为disabled(需重启系统且无法恢复SELinux配置);/etc/selinux/config、semanage fcontext规则)前,备份相关文件(如cp /etc/selinux/config /etc/selinux/config.bak),防止配置错误导致系统无法启动;file模块setype参数(如setype: httpd_sys_content_t)统一设置文件上下文,确保跨服务器一致性。