温馨提示×

centos selinux如何进行合规检查

小樊
37
2025-12-13 11:38:25
栏目: 智能运维

CentOS SELinux 合规检查清单与操作指南

一 基线状态检查

  • 检查当前运行模式与详细状态:执行命令 getenforce(返回 Enforcing/Permissive/Disabled)、sestatus(查看 SELinux status、Current/Configured mode、Loaded policy name 等)、cat /etc/selinux/config(确认 SELINUX= 与 SELINUXTYPE= 配置)。合规基线通常要求:SELinux 为 enabled 且运行在 Enforcing 模式,策略类型为 targeted。如需临时切换可用 setenforce 0/1(仅本次生效,重启后失效)。示例要点:
    • getenforce → 期望输出:Enforcing
    • sestatus → 期望:SELinux status: enabled;Current mode: enforcing;Loaded policy name: targeted
    • /etc/selinux/config → SELINUX=enforcing;SELINUXTYPE=targeted 注:Disabled 表示未加载策略,不满足大多数安全基线要求。

二 策略与日志核查

  • 策略与布尔值:使用 sestatus -v 或 getsebool -a 查看已加载策略模块与关键布尔开关(如 httpd_can_network_connect、ftpd_full_access 等),结合业务核对是否按“最小权限”原则放开必要权限,避免宽松默认。
  • 审计日志与拒绝事件:SELinux 拒绝事件记录在 /var/log/audit/audit.log,可用 ausearch -m avc -ts recent 或 grep -i selinux /var/log/audit/audit.log 检索最近 AVC 拒绝;必要时用 sealert -a /var/log/audit/audit.log 生成可读分析建议。合规要求包括:无持续大量 AVC 拒绝、对业务必需访问有“允许”策略或布尔配置且可审计。

三 常见服务与端口标签检查

  • 文件与进程上下文:使用 ps -eZ、ls -Z 检查关键进程与数据目录的 SELinux 上下文是否符合预期(如 httpd 进程与 /var/www 目录应具相应域与类型),上下文异常常导致服务启动失败或权限被拒。
  • 端口类型:使用 semanage port -l | grep <端口> 检查服务端口是否已打上正确 SELinux 端口类型(如 http_port_t、ssh_port_t);若未打标,服务可能因类型不匹配被拒绝。合规要求:业务端口均按策略正确标注,避免以 setenforce 0 规避问题。

四 自动化与持续监控

  • 主机侧脚本化巡检:将“模式/配置/策略/AVC”检查项纳入定时巡检脚本,输出合规结论与异常证据(如当前模式、配置模式、最近 AVC 数量与样例),并对接工单/CMDB。
  • 监控告警:部署 Node Exporter 启用 SELinux collector,采集指标 node_selinux_enabled、node_selinux_config_mode、node_selinux_current_mode,在 Prometheus 中配置告警,例如:当 node_selinux_current_mode == 0(禁用)或 node_selinux_current_mode == -1(宽容)时触发严重告警;当配置模式与当前模式不一致时提示漂移风险。

五 整改与加固要点

  • 原则:优先通过“正确打标(semanage fcontext/restorecon)+ 合理布尔(setsebool)+ 必要时定制策略模块(audit2allow -M)”解决权限问题,避免长期置于 Permissive 或关闭 SELinux。
  • 变更留痕:修改 /etc/selinux/config 后需重启生效;策略与布尔调整应纳入变更管理并保留审计证据(audit.log、sealert 报告)。
  • 复测闭环:整改后复核 AVC 日志与业务可用性,确保既满足功能又满足“最小权限”的合规要求。

0