centos selinux安全增强实践
小樊
36
2025-11-25 18:21:01
CentOS SELinux 安全增强实践
一 基线状态与模式管理
- 检查运行状态与策略:使用命令查看 SELinux 是否启用、当前模式与策略类型,例如执行 sestatus 或 getenforce。常见模式包括 Enforcing(强制)、Permissive(宽容,仅记录不阻断)、Disabled(禁用)。
- 临时切换模式:在排障或演练时可临时切换,命令为 setenforce 0(宽容)或 setenforce 1(强制)。该变更重启后失效。
- 永久配置模式与策略:编辑 /etc/selinux/config,设置 SELINUX=enforcing(推荐)或 permissive;策略类型通常为 SELINUXTYPE=targeted。如从 Disabled 改为 Enforcing,需要重启系统以生效。
- 运维提示:生产环境建议长期保持 Enforcing,排障期可短时使用 Permissive 定位问题,避免直接 Disabled 导致安全能力缺失。
二 文件与目录上下文管理
- 查看上下文:使用 ls -Z 查看文件/目录的安全上下文,例如 ls -dZ /var/www/html。
- 临时修改上下文:使用 chcon 调整类型标签,例如将目录设为网页内容类型:chcon -R -t httpd_sys_content_t /var/www/html。该方式在 restorecon 或策略刷新后可能被覆盖。
- 永久修改上下文:使用 semanage fcontext 添加路径到上下文映射,再用 restorecon 应用,例如:
- 添加映射:semanage fcontext -a -t httpd_sys_content_t “/var/www(/.*)?”
- 应用修复:restorecon -Rv /var/www
- 典型场景:自建网站目录、数据卷挂载点、日志目录等非默认路径,需要显式打上对应类型标签(如 httpd_sys_content_t、httpd_log_t 等),确保进程仅能访问被授权的资源。
三 布尔值与端口放行
- 管理布尔值:使用 getsebool/setsebool -P 开关策略细项,例如:
- 允许 httpd 访问用户家目录:setsebool -P httpd_enable_homedirs 1
- 允许 httpd 连接数据库:setsebool -P httpd_can_network_connect_db 1
- 允许 httpd 发送邮件:setsebool -P httpd_can_sendmail 1
- 端口类型与放行:除布尔值外,部分服务还需为端口设置正确的 SELinux 类型(如 http_port_t)。例如将 Nginx/Apache 监听 8080/tcp,应先执行:
- 端口打标:semanage port -a -t http_port_t -p tcp 8080
- 如命令不可用,先安装策略工具包(如 policycoreutils-python-utils)。
- 原则:优先使用“最小权限”布尔值与精确端口类型,避免开启不必要的网络能力。
四 日志审计与自定义策略
- 审计日志与排障:SELinux 拒绝事件记录在 /var/log/audit/audit.log。常用检索与分析命令:
- 查看最近 AVC 拒绝:ausearch -m avc -ts recent
- 解释拒绝原因:ausearch -m avc -ts recent | audit2why
- 定制策略模块:基于审计日志生成并加载本地策略模块,例如:
- 生成模块:ausearch -c ‘httpd’ --raw | audit2allow -M my_httpd_policy
- 加载模块:semodule -i my_httpd_policy.pp
- 故障处置流程建议:先在 Permissive 验证是否为 SELinux 导致,定位后通过 semanage/restorecon/setsebool 优先修复,确需放行时再生成最小化的自定义模块,避免“过度放行”。
五 与防火墙及系统加固的协同
- 与防火墙协同:使用 firewalld/iptables 实施“默认拒绝、按需放行”的边界防护,例如仅开放 80/tcp、443/tcp 等必要端口;SELinux 在内核层限制进程行为,两者互补,不可相互替代。
- 纵深防御建议:
- 系统层面:坚持最小化安装、清理无用服务与账户、强化 SSH(禁用 root 直连、启用密钥登录、合理配置 sudo)。
- 监控审计:集中收集与分析 auditd 日志,关注登录异常、权限提升与策略变更。
- 完整性监测:部署 AIDE 等文件完整性工具,建立关键文件基线并定期校验。