温馨提示×

centos context的最佳实践是什么

小樊
43
2025-12-31 08:10:30
栏目: 智能运维

CentOS SELinux Context 最佳实践

一 基础与运行模式

  • 明确目标:在生产环境中将 SELinux 设为 Enforcing,仅在排障时短时切换到 PermissiveDisabled 需要重打标签并重启,风险高。
  • 常用检查与切换:
    • 查看状态:sestatusgetenforce
    • 临时切换:setenforce 0|1(0=Permissive,1=Enforcing)
    • 永久生效:编辑 /etc/selinux/configSELINUX=enforcing/permissive/disabled,必要时重启
  • 原则:能用精确类型与路径规则解决的,优先不改全局模式;Permissive 仅作诊断,避免长期开启以减少日志噪声与误判风险。

二 文件系统上下文管理

  • 查看与验证:用 ls -Z 检查文件/目录上下文,确保与预期类型一致(如 Web 内容常为 httpd_sys_content_t)。
  • 永久变更优先:
    • 添加默认映射:semanage fcontext -a -t <type> "<path>(/.*)?"
    • 应用映射:restorecon -Rv <path>(递归、显示过程)
  • 临时变更慎用:chcon -t <type> <path> 仅在紧急或测试时使用,系统重标记或策略更新后可能失效。
  • 典型示例:
    • Web 目录:semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" && restorecon -Rv /var/www/html
    • MySQL 数据:semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?" && restorecon -Rv /var/lib/mysql
  • 原则:以“默认类型映射 + restorecon”为主路径,避免到处用 chcon 打散策略可预期性。

三 排障与策略优化

  • 快速定位拒绝:
    • 查看 AVC 拒绝:ausearch -m avc -ts recent
    • 人性化分析:sealert -a /var/log/audit/audit.log(需安装 setroubleshoot 工具)
  • 最小权限原则生成模块:
    • 从拒绝日志生成模块:ausearch -m avc -ts recent | audit2allow -M <name>
    • 加载模块:semodule -i <name>.pp
  • 优先用布尔值微调:
    • 查看/设置:getsebool <name>setsebool -P <name> on|off(持久化加 -P
  • 原则:先判因(路径类型是否正确、端口/进程是否匹配、是否缺少布尔值),再决定是否生成策略模块,避免过度授权。

四 常见场景与端口管理

  • 端口上下文:为自定义服务端口设置类型,例如将 12345/tcp 标记为 http_port_t
    • semanage port -a -t http_port_t -p tcp 12345
  • Web/Nginx 静态内容:
    • semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html(/.*)?" && restorecon -Rv /usr/share/nginx/html
  • 日志写入问题:若服务因上下文无法写日志,先核对日志目录类型与属主属组,再决定是否用布尔值或最小策略模块放行,避免直接放宽为 permissive。
  • 原则:端口、进程、文件类型三者匹配;能用内置类型与布尔值的,不写自定义模块。

五 运维与治理

  • 变更流程:
    • 备份关键配置:cp -R /etc/selinux /etc/selinux.bak,以及自定义文件上下文(如 /etc/selinux/targeted/contexts/files/file_contexts.local
    • 先在测试环境验证,再上线;上线后复核 restorecon 覆盖范围与影响面
  • 规则治理:
    • 列出与清理:semanage fcontext -l 定期检查,删除不再使用的规则(semanage fcontext -d -t <type> "<path>(/.*)?"
    • 合并同类规则,优先使用通配路径,减少碎片化规则
  • 持续维护:
    • 保持系统与 SELinux 工具链更新(yum/dnf update),定期审计 AVC 报表(aureport
    • 文档化自定义路径、端口与模块,便于交接与回溯
  • 原则:可重复、可回滚、可审计;变更留痕,定期收敛策略。

0