温馨提示×

Ubuntu SELinux与云服务部署

小樊
46
2025-11-30 17:29:54
栏目: 云计算

Ubuntu 上 SELinux 与云部署实践指南

一 关键认知与取舍

  • Ubuntu 默认不启用 SELinux,常见做法是继续使用 AppArmor;若需启用 SELinux,需安装组件并进行策略调优。
  • Kubernetes 场景中,许多入门与平台文档会建议将节点设置为 SELinux=permissive 或临时关闭,以避免与容器网络/卷挂载等机制产生冲突;但这会降低安全基线,生产环境应优先通过策略定制来解决兼容问题。
  • 云迁移/迁云工具 流程中,常见做法是要求关闭 SELinux 以简化权限与路径访问的兼容性;上线前应恢复并加固策略。

二 在 Ubuntu 上启用与日常管理 SELinux

  • 安装与启用
    • 安装组件:sudo apt update && sudo apt install selinux-basics selinux-policy-default auditd
    • 首次启用流程:
      1. 编辑 /etc/selinux/config,设置 SELINUX=permissive(建议先宽容模式验证)
      2. 执行 sudo selinux-activate
      3. 重启:sudo reboot
      4. 重启后执行文件重标记:sudo touch /.autorelabel && sudo reboot(确保新策略标签生效)
  • 常用运维
    • 查看状态:sestatusgetenforce
    • 切换模式:sudo setenforce 0(Permissive),sudo setenforce 1(Enforcing)
    • 策略与端口:
      • 管理文件上下文:sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" && sudo restorecon -Rv /var/www/html
      • 管理端口标签:sudo semanage port -a -t http_port_t -p tcp 8080
    • 故障排查:
      • 查看拒绝日志:sudo ausearch -m avc -ts recent
      • 生成自定义模块:grep avc /var/log/audit/audit.log | audit2allow -M mypol && sudo semodule -i mypol.pp

三 云上部署的常见场景与建议

场景 推荐 SELinux 做法 关键注意点
通用 Ubuntu 服务器(非容器) 建议保持或迁移到 Enforcing,按服务逐步定制策略 先 Permissive 验证,利用 audit2allowsemanage 逐步放行,避免一次性放宽过多权限
Kubernetes 节点 入门/兼容性需求可用 Permissive;生产优先定制策略以恢复 Enforcing 与容器网络、卷挂载、主机路径访问相关的拒绝需通过端口/类型/布尔值精细化放行
云迁移/迁云工具 迁移前可 临时关闭 以简化访问;迁移完成后恢复并加固 迁移工具完成后再启用 SELinux,按需设置上下文与端口标签,避免业务中断

上述取舍与做法可兼顾 兼容性安全基线;在 K8s 环境中,优先通过策略定制而非长期关闭来解决问题。

四 故障排查与回退

  • 快速定位
    • 查看是否启用与当前模式:sestatusgetenforce
    • 检索最近拒绝:sudo ausearch -m avc -ts recent
    • 生成最小可用策略模块:grep avc /var/log/audit/audit.log | audit2allow -M mypol && sudo semodule -i mypol.pp
  • 回退与重标记
    • 临时回退:sudo setenforce 0(Permissive)
    • 永久回退:编辑 /etc/selinux/config,设 SELINUX=permissiveSELINUX=disabled,必要时重启
    • 大规模标签变更或首次启用后:执行 sudo touch /.autorelabel && sudo reboot 以完成全量重标记

五 云侧安全与最小暴露面

  • 即便在启用 SELinux 的前提下,仍应依赖云厂商的 安全组/防火墙 做网络层最小暴露面控制,避免直接对公网开放管理端口;在变更前备份关键配置,变更后逐步验证业务连通性与安全事件日志。

0