温馨提示×

Ubuntu下SELinux如何配置

小樊
44
2026-08-24 09:44:04
栏目: 智能运维

Ubuntu 上,SELinux 默认是不启用的,Ubuntu 传统上使用的是 AppArmor。如果你确实需要在 Ubuntu 上配置 SELinux,需要手动安装并启用。下面给你一个从安装到基本配置的完整说明。


一、确认当前安全模块

cat /proc/1/attr/current
  • 如果看到 system_u:system_r:kernel_t 之类 → SELinux 已启用
  • 如果看到 unconfined 或 AppArmor 相关 → 当前不是 SELinux

查看是否启用了 AppArmor:

aa-status

二、安装 SELinux

1️⃣ 安装 SELinux 相关包

sudo apt update
sudo apt install selinux selinux-utils selinux-basics auditd

常用包说明:

  • selinux:SELinux 核心
  • selinux-utils:semanage、getenforce、setenforce
  • selinux-basics:基础工具
  • auditd:SELinux 审计日志(非常重要)

三、启用 SELinux

1️⃣ 激活 SELinux

sudo selinux-activate

这会自动修改:

  • /etc/default/grub
  • 更新 grub

然后更新 grub:

sudo update-grub

2️⃣ 设置 SELinux 模式

编辑配置文件:

sudo nano /etc/selinux/config

推荐初始配置(先不要直接 enforcing):

SELINUX=permissive
SELINUXTYPE=default

模式说明:

模式 说明
enforcing 强制,违反规则会拒绝
permissive 只记录,不拒绝(推荐首次使用)
disabled 关闭

3️⃣ 重启系统

sudo reboot

四、验证 SELinux 状态

getenforce

输出应为:

  • Permissive
  • Enforcing
sestatus

示例输出:

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 31

五、SELinux 基本配置

1️⃣ 查看安全上下文

ls -Z
ps -Z

示例:

system_u:object_r:usr_t:s0

2️⃣ 修改文件上下文

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -Rv /var/www/html

3️⃣ 允许端口(如 Web 8080)

sudo semanage port -a -t http_port_t -p tcp 8080

查看端口规则:

semanage port -l | grep http

4️⃣ 查看 SELinux 拒绝日志

sudo ausearch -m avc -ts recent

或用:

sudo journalctl -t audit

5️⃣ 生成策略模块(常见做法)

sudo ausearch -m avc -ts recent | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp

六、从 permissive 切换到 enforcing

确认日志中无明显错误后:

sudo setenforce 1

永久生效:

SELINUX=enforcing

七、Ubuntu 使用 SELinux 的注意事项 ⚠️

  1. Ubuntu 官方支持不完善
    • 很多策略是为 RHEL/CentOS 设计的
  2. 可能与 AppArmor 冲突
    • 建议关闭 AppArmor:
      sudo systemctl disable apparmor
      sudo reboot
      
  3. 桌面环境可能出问题
  4. 服务器环境更合适

八、推荐方案(重要)

场景 建议
Ubuntu 桌面 ✅ 使用 AppArmor
Ubuntu 服务器 ⚠️ SELinux 可用,但需经验
学习 SELinux ✅ 推荐 CentOS / Rocky / Alma
生产环境 ✅ RHEL 系更稳妥

如果你愿意,我可以:

  • ✅ 针对 某个服务(Nginx / MySQL / Docker) 配置 SELinux
  • ✅ 帮你 排查 SELinux 拒绝问题
  • ✅ 对比 SELinux vs AppArmor

只要告诉我你的使用场景即可。

0