查看 SELinux 运行状态
使用 sestatus
命令
sestatus
输出关键信息解读:
SELinux status
:enabled
表示已启用,disabled
表示已禁用。Current mode
:enforcing
:强制模式(拒绝违规操作并记录日志)。permissive
:宽容模式(仅记录日志,不拒绝操作)。disabled
:完全禁用。
Policy version
:当前安全策略版本(如targeted
针对守护进程)。
使用 getenforce
命令(快速查看模式)
getenforce
直接返回结果:Enforcing
、Permissive
或 Disabled
。
检查配置文件中的默认状态
配置文件决定系统重启后的 SELinux 状态:
cat /etc/selinux/config
关键参数:
SELINUX=
:可能值为enforcing
、permissive
或disabled
。SELINUXTYPE=
:策略类型(通常为targeted
)。
注意:修改此文件后需重启系统生效。
检查内核启动参数
若系统启动时临时禁用 SELinux:
cat /proc/cmdline | grep selinux
- 若输出包含
selinux=0
或enforcing=0
,表示启动时被禁用。
查看 SELinux 日志状态
检查审计日志
tail -f /var/log/audit/audit.log | grep AVC
- 出现
AVC
(Access Vector Cache)记录表明 SELinux 正在拦截操作(需在enforcing
或permissive
模式下)。
使用 sealert
工具(需安装)
sudo dnf install setroubleshoot-server # CentOS/RHEL sudo apt install setroubleshoot # Ubuntu/Debian sealert -a /var/log/audit/audit.log
- 解析日志中的 SELinux 拒绝事件,提供解决方案。
常见问题排查
-
命令未找到:
- 确保 SELinux 工具已安装:
sudo yum install policycoreutils setools-console # CentOS/RHEL sudo apt install policycoreutils setools # Ubuntu/Debian
- 确保 SELinux 工具已安装:
-
状态显示
disabled
但需临时启用:- 从
disabled
切换到enforcing
必须重启系统,无法直接切换。
- 从
-
模式临时切换:
sudo setenforce 1 # 临时切换到 enforcing 模式 sudo setenforce 0 # 临时切换到 permissive 模式
重启后失效,需通过配置文件永久修改。
为什么需要关注 SELinux 状态?
- 安全防护:阻止恶意软件提权或越权访问。
- 合规要求:满足等保、PCI-DSS 等安全标准。
- 故障诊断:服务异常时需确认是否被 SELinux 拦截。
- 基础命令:
sestatus
(全面信息)、getenforce
(快速模式)。 - 配置文件:
/etc/selinux/config
(设置永久状态)。 - 日志分析:
audit.log
和sealert
用于诊断拦截事件。
定期检查 SELinux 状态是维护 Linux 系统安全的关键步骤,尤其在服务器或生产环境中。
引用说明: 参考了 Red Hat 官方文档《SELinux User’s and Administrator’s Guide》及 Linux 内核文档中关于安全模块的说明,命令验证基于 CentOS 9 和 Ubuntu 22.04 LTS 环境。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4834.html