1. 确认SELinux处于Enforcing模式
SELinux的核心价值在于强制访问控制(MAC),需确保其处于Enforcing模式(而非Permissive或Disabled)。通过sestatus命令检查状态,若未启用,修改/etc/selinux/config文件中的SELINUX=enforcing参数并重启系统生效。日常运维中,Enforcing模式是平衡安全与功能的基础。
2. 精简与优化SELinux策略
sestatus查看当前策略状态,禁用对非关键服务(如本地脚本)的策略,减少不必要的策略决策开销。getsebool -a列出所有布尔值,通过setsebool -P <boolean_name>=0关闭无关选项(如httpd_enable_homedirs若未使用则禁用)。httpd_disable_trans可减少Apache的传输延迟(设置为1),dbms_usefte可提升数据库性能(设置为1)。3. 正确管理与持久化SELinux上下文
安全上下文(Type Enforcement)是SELinux的关键,错误的上下文会导致访问被拒绝。
ls -Z(文件/目录)、ps -auxZ(进程)查看当前上下文,确认服务运行在专有域(如httpd进程应为httpd_t,而非unconfined_t)。semanage fcontext定义持久化规则(如semanage fcontext -a -t httpd_sys_content_t "/srv/mywebapp(/.*)?"),再通过restorecon -Rv应用到实际文件系统(避免仅用chcon临时修改,其重启后失效)。4. 分析与处理SELinux拒绝日志
SELinux的拒绝信息记录在/var/log/audit/audit.log中,需定期分析以避免服务中断。
ausearch -m avc -ts recent搜索最近的AVC(访问控制)拒绝日志,或通过sealert -a /var/log/audit/audit.log生成可视化报告。audit2allow生成最小化策略模块(如grep "avc: denied" /var/log/audit/audit.log | audit2allow -M my_policy),并通过semodule -i my_policy.pp安装。5. 优化SELinux相关内核与文件系统
/etc/sysctl.conf优化内核设置,如net.ipv4.tcp_syncookies = 1(防止SYN Flood攻击)、fs.file-max = 1000000(增加文件描述符限制),提升系统整体性能。noatime选项(减少磁盘I/O操作,提升文件访问性能)。6. 监控与持续维护SELinux状态
perf、flamegraph等工具分析SELinux对系统调用的开销,识别性能瓶颈(如频繁的上下文切换)。sealert分析历史拒绝事件,及时调整策略(如新增服务时添加对应上下文规则),保持策略的最小化与有效性。7. 特定场景下的安全调整
myapp_t)和上下文规则(如myapp_exec_t、myapp_log_t),强化服务隔离(避免使用unconfined_t,其无SELinux保护)。semanage port添加对应规则(如semanage port -a -t http_port_t -p tcp 8080),避免因端口上下文错误导致服务无法启动。