检查 SELinux 状态
在安装前,确认系统是否已预装 SELinux(多数 Linux 发行版默认集成):
sestatus
- 若显示
SELinux status: disabled
或未安装,继续下一步。 - 若已启用,输出会显示当前模式(
enforcing
或permissive
)。
安装 SELinux 组件
仅当系统未预装时需手动安装(以常见发行版为例):
-
Debian/Ubuntu:
sudo apt update sudo apt install selinux-basics selinux-policy-default auditd
-
RHEL/CentOS/Fedora:
sudo dnf install selinux-policy-targeted setroubleshoot-server # 或使用 yum(旧版) sudo yum install selinux-policy-targeted setroubleshoot
启用并配置 SELinux
步骤 1:修改内核参数
编辑 /etc/default/grub
文件,在 GRUB_CMDLINE_LINUX
行添加 selinux=1
:
GRUB_CMDLINE_LINUX="... selinux=1 security=selinux"
更新 GRUB 配置:
sudo update-grub # Debian/Ubuntu sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/CentOS
步骤 2:设置 SELinux 模式
- 临时切换模式(重启后失效):
sudo setenforce 1 # 启用强制模式(enforcing) sudo setenforce 0 # 切换为宽容模式(permissive,仅记录不拦截)
- 永久修改模式:
编辑/etc/selinux/config
:SELINUX=enforcing # 可选值:enforcing, permissive, disabled SELINUXTYPE=targeted # 保持默认策略
步骤 3:重启系统并验证
sudo reboot sestatus # 检查状态应显示 "enforcing" 或 "permissive"
常见问题解决
-
服务/应用因 SELinux 失败:
- 查看拒绝日志:
sudo ausearch -m avc -ts recent # 分析拒绝事件 sudo dmesg | grep selinux # 检查内核日志
- 自动修复权限:
sudo restorecon -Rv /path/to/directory # 重置文件上下文
- 查看拒绝日志:
-
生成自定义策略模块(针对频繁拦截的应用):
sudo grep "avc:" /var/log/audit/audit.log | audit2allow -M mypolicy sudo semodule -i mypolicy.pp # 加载新策略
-
紧急禁用 SELinux(不推荐):
- 编辑
/etc/selinux/config
设置SELINUX=disabled
,然后重启。
- 编辑
最佳实践
- 测试阶段使用宽容模式:
先设为permissive
运行数天,通过日志检查潜在问题,再切换为enforcing
。 - 关键目录标签保护:
使用semanage fcontext
定制文件上下文(如 Web 目录):sudo semanage fcontext -a -t httpd_sys_content_t "/var/www(/.*)?" sudo restorecon -R /var/www
- 工具辅助管理:
getenforce
:查看当前模式。sealert
:生成详细错误报告(需安装setroubleshoot
)。
SELinux 是强化 Linux 安全的基石,虽然初始配置可能复杂,但通过日志分析和策略调整,能显著提升系统抗攻击能力。生产环境务必启用 enforcing
模式,并定期审查日志,遇到问题时,优先通过 audit2allow
生成策略而非直接禁用,以平衡安全与功能。
引用说明参考 Red Hat SELinux 官方文档、Ubuntu Wiki SELinux 指南 及 Linux 内核安全团队技术白皮书,操作前请备份数据,并在测试环境验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6244.html