温馨提示×

centos selinux权限管理指南

小樊
39
2025-11-25 18:23:06
栏目: 智能运维

CentOS SELinux 权限管理指南

一 核心概念与工作机制

  • SELinux 是 Linux 的强制访问控制(MAC)架构,由NSA发起,2000 年开源2003 年并入上游内核。它为每个进程、文件、端口等资源打上安全上下文标签,以策略规则决定访问是否被允许。访问判定先查AVC 缓存,未命中则交由安全服务器依据策略与标签决策,拒绝时会在日志产生 “avc: denied” 记录。标签格式为:user:role:type:level(在 targeted 策略下最关键的是 type)。RHEL/CentOS 默认策略为 targeted,仅对关键服务做类型强制,复杂场景可用 MLS。配置文件为 /etc/selinux/config(部分系统也可见 /etc/sysconfig/selinux 的软链或兼容文件)。

二 运行模式与切换

  • 三种模式与用途
    • Enforcing:强制执行策略,违规即拒绝。
    • Permissive:仅记录违规,不拒绝,便于排障。
    • Disabled:完全关闭 SELinux,需重启;不建议在生产使用。
  • 常用命令
    • 查看状态:getenforcesestatus -v
    • 临时切换:sudo setenforce 1(强制)或 sudo setenforce 0(宽容)
    • 永久配置:编辑 /etc/selinux/config
      • 示例:SELINUX=enforcingSELINUX=permissive
      • 策略类型:SELINUXTYPE=targeted(或 mls/mcs)
    • 重要提示
      • Disabled 切换到其他模式必须重启;若之前完全禁用,建议先设为 Permissive 并重启,确认标签与策略正常后再切回 Enforcing
      • 被禁用后再次启用,通常需要执行 touch /.autorelabel && reboot重新打标签

三 日常运维与排障流程

  • 查看与理解上下文
    • 文件/目录:ls -Z /var/www/html
    • 进程:ps -eZ | grep nginx
    • 端口:semanage port -l | grep http
  • 定位拒绝事件
    • 实时观察:sudo tail -f /var/log/audit/audit.log | grep denied
    • 检索 AVC:sudo ausearch -m avc -ts recent
    • 解释原因:sudo audit2why -asealert -a /var/log/audit/audit.log
  • 修复动作优先级
    1. 首选:按策略修正文件上下文标签(见下一节)
    2. 次选:按需调整布尔值(见下一节)
    3. 最后:基于日志生成最小化的自定义策略模块(见下一节)
  • 原则:尽量使用“最小权限”的修复,避免全局放宽或禁用 SELinux。

四 常见场景与命令清单

场景 典型现象 关键命令
文件/目录访问被拒 服务读不到内容或无法写入 semanage fcontext -a -t httpd_sys_content_t "/data(/.*)?"restorecon -Rv /data
服务需对外连接 应用连接数据库/外部 API 失败 sudo setsebool -P httpd_can_network_connect 1
自定义端口绑定 bind() to 0.0.0.0:8080 failed (13: Permission denied) sudo semanage port -a -t http_port_t -p tcp 8080
仅对单个进程宽容 调试某服务时不希望全局放宽 sudo semanage permissive -a nginx_t
生成最小策略模块 日志中大量 AVC denied `sudo ausearch -m avc -ts recent
批量恢复默认标签 迁移或误操作后标签混乱 sudo restorecon -Rv /var/www
查看/管理布尔值 开关功能特性 getsebool -asudo setsebool -P httpd_unified 1
查看/管理端口类型 确认某端口是否允许某服务 `semanage port -l
查看/加载策略模块 管理自定义模块 semodule -lsudo semodule -i custom.pp
说明:以上命令需由 root 或具备 sudo 权限执行;布尔值加 -P持久化生效。

五 最佳实践与风险控制

  • 生产环境保持 Enforcing,排障时短时切 Permissive,避免直接 Disabled
  • 优先通过“修正标签”与“布尔值”解决,其次才用 audit2allow 生成最小规则并回归测试。
  • 变更前备份策略与关键配置,变更后在变更窗口内持续观察 AVC 日志
  • 对面向互联网的服务,仅开放必要端口与协议,并遵循最小权限原则。
  • 若系统曾被设为 Disabled,重新启用后务必执行 touch /.autorelabel && reboot重打标签,防止大规模访问异常。

0