ubuntu selinux如何检查漏洞
导读:Ubuntu 上 SELinux 漏洞检查与风险排查 一 前置说明 Ubuntu 默认不启用 SELinux,常见的是 AppArmor。如你的系统已手动启用 SELinux,请按下列步骤检查其安全状态与潜在“可被利用的薄弱点”。SELi...
Ubuntu 上 SELinux 漏洞检查与风险排查
一 前置说明
- Ubuntu 默认不启用 SELinux,常见的是 AppArmor。如你的系统已手动启用 SELinux,请按下列步骤检查其安全状态与潜在“可被利用的薄弱点”。SELinux 的风险通常来自:处于 Permissive/Disabled 模式、策略过于宽松(如大量布尔值开启)、关键文件/进程上下文错误、以及被 dontaudit 隐藏的拒绝事件未被发现。
二 快速检查清单
- 检查运行状态与策略
- 查看整体状态:
sestatus(关注 SELinux status/Current mode/Loaded policy name) - 快速模式:
getenforce(返回 Enforcing/Permissive/Disabled) - 配置文件:
cat /etc/selinux/config(查看 SELINUX= 的设定)
- 查看整体状态:
- 检查策略开关与行为
- 列出布尔值:
sestatus -b或getsebool -a | grep < 服务名>
- 列出布尔值:
- 检查拒绝日志与告警
- 审计日志:
ausearch -m avc -ts recent、aureport -m avc - 系统日志:
grep -i "denied" /var/log/audit/audit.log或journalctl | grep AVC
- 审计日志:
- 检查文件与进程上下文
- 文件/目录:
ls -Z /path - 进程:
ps -eZ | grep < 进程名>
- 文件/目录:
- 检查审计服务
- 状态:
systemctl status auditd;必要时sudo systemctl start auditd & & sudo systemctl enable auditd
- 状态:
- 辅助定位工具
- 图形/分析:
sealert -a /var/log/audit/audit.log(需安装 setroubleshoot)
以上命令覆盖了“是否启用—是否强制—策略开关—是否有拒绝—上下文是否正确—日志是否完备”的关键环节。
- 图形/分析:
三 判定是否存在可被利用的薄弱点
- 高风险信号
- 当前模式为 Permissive/Disabled(策略未强制执行或完全关闭)。
- 配置为 Enforcing,但存在大量 AVC denied 且业务受影响(可能通过宽松布尔值、错误上下文或缺失规则“被放过”)。
- 关键目录/二进制使用了过于宽泛的上下文(如 unconfined_t 或错误的 httpd_sys_content_t 等),或存在大量
dontaudit导致拒绝未被记录。
- 快速验证方法(仅用于排查,验证完务必恢复)
- 临时切到宽容模式:
sudo setenforce 0(重启后失效),观察问题是否消失;若消失,多半是 SELinux 策略问题。排查后改回sudo setenforce 1。 - 发现被 dontaudit 隐藏时,可短时执行:
sudo semodule -DB(临时禁用 dontaudit),复现问题并用ausearch/aureport观察,确认后再sudo semodule -B恢复。
- 临时切到宽容模式:
四 修复与加固建议
- 将模式恢复/保持为 Enforcing:
sudo setenforce 1并确保/etc/selinux/config中SELINUX=enforcing。 - 修正文件/目录上下文(示例)
- 设定自定义目录为 httpd 可读内容:
sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?" - 应用:
sudo restorecon -R -v /data/www
- 设定自定义目录为 httpd 可读内容:
- 按需调整布尔值(最小化原则)
- 查看与切换:
getsebool < name>/sudo setsebool < name> on|off(如需持久加-P)
- 查看与切换:
- 基于日志生成最小可用策略模块(示例)
ausearch -c 'httpd' --raw | audit2allow -M my-httpd- 加载:
sudo semodule -i my-httpd.pp
- 保障日志完整
- 确保 auditd 运行并持久化:
sudo systemctl enable --now auditd
以上操作遵循“最小权限”和“可审计”的原则,优先修正上下文与规则,其次才考虑放宽布尔值。
- 确保 auditd 运行并持久化:
五 持续监控与告警
- 使用 Node Exporter 的 SELinux collector 暴露关键指标,便于在 Prometheus/Grafana 中统一监控与告警:
- 指标含义:
node_selinux_enabled(是否启用)、node_selinux_config_mode(配置模式)、node_selinux_current_mode(当前模式) - 建议告警:
node_selinux_enabled == 0(SELinux 被禁用)node_selinux_current_mode == -1(处于宽容模式)node_selinux_config_mode != node_selinux_current_mode(配置与实际不一致)
该方案适合生产环境持续观测 SELinux 状态,及时发现模式被意外更改或策略执行中断的风险。
- 指标含义:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu selinux如何检查漏洞
本文地址: https://pptw.com/jishu/789199.html
