centos context如何安全防护
小樊
36
2025-12-13 17:16:10
CentOS SELinux 安全上下文防护指南
一 核心概念与防护原理
- SELinux 通过在内核层实施强制访问控制 MAC,为进程与资源打上安全上下文标签(格式:user:role:type:level,如 system_u:object_r:httpd_sys_content_t:s0),访问是否被放行取决于策略中“主体域→客体类型”的规则匹配。即使 DAC(rwx/属主) 允许,只要策略不允许仍会被拒绝。常用模式有:Enforcing(强制拦截并记录)、Permissive(仅记录不拦截)、Disabled(完全关闭,需重启)。CentOS 默认启用 SELinux 并使用 targeted 策略,优先保护关键网络服务。默认配置文件为 /etc/selinux/config,可用 getenforce/setenforce 查看与临时切换模式。
二 基线配置与最小权限
- 保持或恢复为Enforcing 模式,仅在排障时短时切到 Permissive:
- 查看与切换:getenforce;setenforce 1(Enforcing)/ 0(Permissive)
- 永久配置:编辑 /etc/selinux/config 中 SELINUX=enforcing;如需变更模式并持久化,需重启系统(Disabled 状态切换同样需要重启)。
- 以“最小权限”为原则管理上下文与端口:
- 查看标签:文件/目录用 ls -Z,进程用 ps -eZ,用户用 id -Z。
- 持久化修正目录默认标签:使用 semanage fcontext -a -t 类型 ‘路径(/.*)?’,随后 restorecon -Rv 路径 应用;临时修正可用 chcon -t 类型 文件。
- 管理端口类型:用 semanage port -a -t 端口类型 -p tcp|udp 端口号 将服务绑定到合规端口类型(如将某服务端口加入策略允许的类型)。
- 细粒度行为开关:用 getsebool -a 查看、setsebool -P 布尔值 on|off 持久化调整(如允许 httpd 外连:setsebool -P httpd_can_network_connect on)。
- 原则:能用“目录默认标签 + restorecon”就不用 chcon;能用“布尔值”就不用自定义策略模块。
三 典型场景与操作示例
- Web 服务(httpd)发布目录
- 场景:将自定义目录 /webdata 作为站点根目录对外提供内容。
- 操作:
- 设定默认标签并应用:semanage fcontext -a -t httpd_sys_content_t ‘/webdata(/.*)?’ && restorecon -Rv /webdata
- 如需允许目录列出:setsebool -P httpd_enable_homedirs on(或按需调整目录相关布尔值)
- 验证:ls -Z /webdata 应见 httpd_sys_content_t;进程 ps -eZ | grep httpd 应见 httpd_t。
- FTP 匿名可读/可写目录
- 场景:/var/ftp 为公开可读,/var/ftp/incoming 允许匿名上传。
- 操作:
- 公开读取:确保目录及内容标签为 public_content_t(restorecon 通常即可恢复)。
- 匿名写入:将 incoming 设为 public_content_rw_t,并在服务配置允许写入后重启服务:chcon -t public_content_rw_t /var/ftp/incoming;必要时 setsebool -P allow_ftpd_anon_write 1。
- 自定义服务端口
- 场景:某自研服务监听 8080/tcp,希望策略允许 httpd_t 绑定。
- 操作:semanage port -a -t http_port_t -p tcp 8080(若该端口类型不适用于你的服务,应改用更匹配的类型或为服务编写专用策略模块)。
四 排障与加固流程
- 快速定位被拒原因
- 查看最近拒绝事件:ausearch -m AVC -ts recent;用 audit2why -av 给出人类可读解释与修复建议;必要时用 sesearch 检索策略规则是否允许某主体域访问某客体类型。
- 变更风险控制
- 排障期可切 Permissive 验证是否为 SELinux 导致,但务必回到 Enforcing;避免直接 Disabled。对生产变更先在测试环境验证,并保留回滚方案(如备份 fcontext 规则、导出自定义模块)。
- 日志与审计
- 持续关注 /var/log/audit/audit.log(AVC 拒绝)与系统日志;对高频拒绝建立基线并优化标签/布尔值/策略,减少“噪声”。