SELinux 入门
适用于 CentOS Stream 9 & 10 / AlmaLinux 9.x & 10.x / Rocky Linux 9.x & 10.x
SELinux (Security-Enhanced Linux) 是 EL 系统上默认启用的强制访问控制 (MAC) 系统。很多 EL 新手第一次遇到的”诡异问题”往往与 SELinux 有关。
- SELinux 是什么以及为什么不应该关闭它
- 三种工作模式及其区别
- 查看和排查 SELinux 拒绝
- 常用的 SELinux 管理命令
- 一台运行 EL 9.x 的系统
- sudo 权限
- 已安装
policycoreutils和setroubleshoot-server(通常已预装)
为什么不应该关闭 SELinux
Section titled “为什么不应该关闭 SELinux”SELinux 通过限制进程只能访问其策略允许的资源,有效降低了安全漏洞的影响范围。即使某个服务被攻破,攻击者也只能访问该服务被授权的资源。
三种工作模式
Section titled “三种工作模式”| 模式 | 说明 | 是否拦截 |
|---|---|---|
| Enforcing | 强制执行策略,拒绝违规访问 | 是 |
| Permissive | 不拦截,但记录违规到日志 | 否(仅记录) |
| Disabled | 完全关闭 | 否 |
$ getenforceEnforcing$ sestatus临时切换模式
Section titled “临时切换模式”$ sudo setenforce 0$ sudo setenforce 1排查 SELinux 拒绝
Section titled “排查 SELinux 拒绝”当 SELinux 拒绝某个操作时,会在审计日志中记录 AVC(Access Vector Cache)消息。
-
查看最近的拒绝记录
使用 ausearch 查看 AVC 拒绝 $ sudo ausearch -m avc -ts recent -
使用 sealert 获取人类可读的建议
安装 setroubleshoot(如未安装) $ sudo dnf install -y setroubleshoot-server分析日志并给出修复建议 $ sudo sealert -a /var/log/audit/audit.log | head -50 -
按建议修复
sealert通常会给出具体的修复命令,如设置正确的文件上下文或启用布尔值。
常用管理操作
Section titled “常用管理操作”查看文件的 SELinux 上下文
Section titled “查看文件的 SELinux 上下文”$ ls -Z /var/www/html/修复文件上下文
Section titled “修复文件上下文”$ sudo restorecon -Rv /var/www/html/查看和设置布尔值
Section titled “查看和设置布尔值”$ getsebool -a | grep httpd$ sudo setsebool -P httpd_can_network_connect onNginx/Apache 无法访问文件
Section titled “Nginx/Apache 无法访问文件”文件的 SELinux 上下文可能不正确:
$ sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"$ sudo restorecon -Rv /data/www/服务无法绑定非标准端口
Section titled “服务无法绑定非标准端口”$ sudo semanage port -l | grep http_port_t$ sudo semanage port -a -t http_port_t -p tcp 8443- SSH 安全配置
- Firewalld 进阶
man selinux/man sealert
EL 10 注意事项
Section titled “EL 10 注意事项”EL 10 上的 SELinux 策略持续更新,整体使用方式与 EL 9 兼容。但有一个重要的相关变化:
加密策略:SHA-1 默认禁用
EL 10 的默认加密策略(DEFAULT)禁用了 SHA-1 签名算法,这会影响:
- 使用旧版 SHA-1 签名的 SSH RSA 密钥(1024-bit)将被拒绝
- 使用 SHA-1 签发的 SSL/TLS 证书无法通过验证
- 部分旧版 GPG 签名
如果遇到连接被拒绝,可以检查当前加密策略:
update-crypto-policies --showsudo update-crypto-policies --set DEFAULT:SHA1推荐做法是更换为 Ed25519 或 RSA-4096 密钥,而不是降低安全策略。