如何快速检查SELinux安全状态?

查看 SELinux 运行状态

  1. 使用 sestatus 命令

    sestatus
    • 关键输出
      • SELinux status: enabled(已启用)或 disabled(已禁用)
      • Current mode: enforcing(强制模式)、permissive(宽容模式)或 disabled
      • Policy version: 当前策略版本(如 31
      • Policy from config file: 加载的策略名称(如 targeted
  2. 检查内核参数

    grep -E "SELINUX=|SELINUXTYPE=" /etc/selinux/config
    • 结果说明
      • SELINUX=enforcing:系统重启后将启用强制模式
      • SELINUXTYPE=targeted:默认策略类型(针对网络服务限制)

查看当前模式(无需重启)

getenforce
  • 返回结果:
    • Enforcing:强制模式(拒绝违规操作并记录日志)
    • Permissive:宽容模式(仅记录日志,不阻止操作)
    • Disabled:已禁用

查看策略详情

  1. 列出所有布尔值(动态开关)

    getsebool -a
    • 示例输出:
      httpd_can_network_connect --> off(表示 Apache 禁止联网)
    • 修改布尔值
      setsebool -P httpd_can_network_connect on  # -P 永久生效
  2. 检查文件/目录的上下文标签

    ls -Z /var/www/html
    • 输出示例
      -rw-r--r--. root root system_u:object_r:httpd_sys_content_t index.html

      • 关键字段:httpd_sys_content_t(Web 内容默认标签)
  3. 查看进程的上下文

    ps -eZ | grep nginx
    • 输出示例:
      system_u:system_r:httpd_t:s0 1234 ? nginx

      • httpd_t:Web 服务进程的默认标签

诊断 SELinux 拒绝事件

  1. 查看审计日志

    ausearch -m AVC,USER_AVC -ts today  # 查询今日的拒绝记录
    • 关键字段
      scontext=system_u:system_r:httpd_t(源上下文)
      tcontext=system_u:object_r:samba_share_t(目标上下文)
      tclass=file(操作对象类型)
  2. 使用 sealert 生成分析报告

    sealert -a /var/log/audit/audit.log
    • 该工具会提供解决方案建议(需安装 setroubleshoot 包)

常见问题排查

  • 服务无法启动
    检查日志中的 AVC denied 记录,确认是否因标签错误导致。
  • 文件访问被拒
    使用 restorecon 修复标签:

     restorecon -Rv /path/to/file  # -R 递归修复,-v 显示详情
  • 临时切换模式(调试用):
     setenforce 0  # 切换为 Permissive 模式
     setenforce 1  # 切回 Enforcing 模式

重要提示

  • 修改配置后需重启生效:reboot
  • 生产环境避免禁用 SELinux,优先调整策略或布尔值
  • 策略包更新命令:yum update selinux-policy*

引用说明
本文操作基于 CentOS/RHEL 8 及 SELinux 官方文档,参考来源:

  • Red Hat SELinux 用户手册(https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/using_selinux/index)
  • NSA SELinux 项目(https://github.com/SELinuxProject)
  • Linux 手册页(man semanage, man auditd

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9213.html

(0)
酷番叔酷番叔
上一篇 2025年7月29日 17:20
下一篇 2025年7月29日 17:31

相关推荐

  • 如何确保准备阶段安全又兼容?

    选择Linux发行版推荐新手:Ubuntu LTS、Linux Mint(界面友好,社区支持完善)轻量级选择:Lubuntu、Xubuntu(适合老旧电脑)专业用户:Fedora、Debian(更新快/稳定性高)权威来源:DistroWatch 提供实时排名与特性对比,硬件要求U盘容量:至少16GB(建议32G……

    2025年7月31日
    10300
  • Linux下直接拔U盘会丢失数据吗?

    为什么必须安全卸载U盘?避免数据损坏:直接拔出可能导致未保存的缓存数据丢失,防止硬件故障:强制断电可能损伤U盘存储单元,系统稳定性:确保所有读写进程完全终止,图形界面卸载(推荐新手)适用于GNOME、KDE等主流桌面环境:插入U盘:系统自动挂载并显示在文件管理器侧边栏,定位U盘图标:文件管理器中找到U盘设备(通……

    2025年7月9日
    13400
  • Linux下如何切换输入法?具体操作步骤是什么?

    在Linux系统中,输入法切换是日常使用中频繁操作的功能,尤其对于中文用户而言,Linux下的输入法管理主要依赖于输入法框架(如IBus、Fcitx、Fcitx5等),不同框架的切换方式略有差异,但整体流程相似,本文将详细介绍Linux下切换输入法的多种方法,包括图形化界面设置、快捷键操作、命令行工具以及特殊场……

    2025年9月18日
    12500
  • Linux内核目录结构具体如何构成?

    Linux内核目录结构是其模块化设计的直观体现,遵循“功能聚合、层次清晰”的原则,通过树状目录组织不同功能的源码,便于开发者理解、维护和扩展,内核源码通常位于/usr/src/linux目录下(或通过源码包解压后的目录),每个子目录对应特定的子系统或功能模块,以下从核心功能角度对主要目录进行详细解析,Docum……

    2025年9月26日
    8000
  • Linux系统在shell$命令行提示符下如何进行编程操作?

    Linux shell编程是Linux系统管理、自动化运维及日常任务处理的核心技能,通过编写shell脚本(以.sh为扩展名),用户可以将一系列命令组合成可执行的程序,实现重复任务的自动化、复杂操作的简化以及系统状态的监控,在shell终端(通常提示符为$或#,普通用户为$,root用户为#)下进行编程,主要依……

    2025年8月23日
    11000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信