温馨提示×

Ubuntu SELinux服务配置

小樊
35
2025-12-10 13:44:56
栏目: 智能运维

Ubuntu 上启用与配置 SELinux 的完整指南

一 前置说明与准备

  • Ubuntu 默认使用 AppArmor 而非 SELinux。如确需使用 SELinux,需要手动安装、启用并进行策略调优。为便于排错,建议安装审计服务并将 SELinux 初始设为Permissive(宽容)模式,确认业务稳定后再切到Enforcing(强制)
  • 建议安装的基础组件与用途如下(按发行版可用情况选择):
    • 核心与策略:selinux-basics、selinux-policy-default
    • 审计与排错:auditd、setools、audit2allow
    • 策略与布尔管理:policycoreutils、semanage(部分环境需单独安装)
  • 安装与激活示例:
    • sudo apt update
    • sudo apt install -y selinux-basics selinux-policy-default auditd setools
    • sudo selinux-activate
    • 重启后验证:getenforce、sestatus。

二 启用与模式切换

  • 配置文件路径:/etc/selinux/config,关键项为:
    • SELINUX=enforcing|permissive|disabled
    • SELINUXTYPE=default|mls|src(Ubuntu 常见为 default)
  • 临时切换(无需重启):
    • 设为宽容:sudo setenforce 0
    • 设为强制:sudo setenforce 1
  • 永久切换:
    • 编辑 /etc/selinux/config 设置 SELINUX=…,保存后重启生效
    • Enforcing ↔ Permissive 可用 setenforce 即时切换;涉及 Disabled 时必须改配置并重启
  • 首次启用或策略/文件上下文不一致时,建议创建自动重标记标志并重启:
    • sudo touch /.autorelabel
    • sudo reboot
  • 验证命令:
    • 当前模式:getenforce
    • 详细状态:sestatus。

三 策略与端口管理

  • 端口标签(示例:将 8080/tcp 加入 http 端口类型)
    • 查看端口类型:semanage port -l | grep http_port_t
    • 添加端口:sudo semanage port -a -t http_port_t -p tcp 8080
  • 文件上下文与 restorecon
    • 添加上下文规则:sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?”
    • 应用上下文:sudo restorecon -Rv /var/www/html
  • 布尔值(示例:允许 httpd 访问用户主目录)
    • sudo setsebool -P httpd_enable_homedirs 1
  • 自定义模块(从拒绝日志生成并加载)
    • 提取并生成模块:grep avc /var/log/audit/audit.log | audit2allow -M mypol
    • 加载模块:sudo semodule -i mypol.pp
  • 常用排错
    • 查看最近拒绝:sudo ausearch -m avc -ts recent
    • 生成 AVC 报告:sudo aureport -m avc。

四 常见问题与注意事项

  • 与 AppArmor 的冲突
    • Ubuntu 默认启用 AppArmor。启用 SELinux 前可先停止或卸载 AppArmor(如:sudo systemctl stop apparmor;谨慎使用 purge 以避免系统不稳定),再启用 SELinux 并重启。
  • 切换模式与重启
    • Enforcing/Permissive 间切换可用 setenforce 即时生效;涉及 Disabled 或首次从 disabled 启用时,必须修改 /etc/selinux/config 并重启;文件系统需要重标记时创建 /.autorelabel 后重启。
  • 日志与审计
    • 确保 auditd 运行,SELinux 拒绝日志位于 /var/log/audit/audit.log;结合 ausearch/audit2allow 分析并生成策略模块。
  • 备份与回滚
    • 建议备份 /etc/selinux 配置目录:
      • 备份:sudo rsync -a /etc/selinux/ ~/selinux-backup/
      • 恢复:sudo rsync -a ~/selinux-backup/ /etc/selinux/
  • 使用建议
    • 生产环境优先使用 Enforcing 并通过策略逐步收敛;若对 SELinux 不熟悉,Ubuntu 上 AppArmor 通常更易上手。

0