温馨提示×

怎样给ubuntu配selinux

小樊
48
2026-09-19 12:38:47
栏目: 智能运维

在 Ubuntu 上配置 SELinux 和在 RHEL/CentOS 上不太一样,因为 Ubuntu 默认使用的是 AppArmor。下面我分步骤说明,包含是否建议、安装、启用、配置、验证以及排错。


一、先说结论(重要)

  • Ubuntu 官方默认不支持 SELinux 作为主力安全模块
  • Ubuntu 桌面/服务器默认使用 AppArmor
  • 如果你只是做实验或学习 SELinux,可以装;生产环境不建议新手直接上 SELinux
  • 启用 SELinux 可能导致系统无法启动(需要谨慎)

二、检查当前安全模块

cat /proc/fs/security*
# 或
aa-status

如果看到 apparmor,说明当前是 AppArmor。


三、安装 SELinux(Ubuntu)

1. 安装必要包

sudo apt update
sudo apt install selinux selinux-basics selinux-policy-default auditd

四、从 AppArmor 切换到 SELinux

1. 禁用 AppArmor(必须)

sudo systemctl disable apparmor
sudo systemctl stop apparmor

或者内核参数方式(更彻底): 编辑 /etc/default/grub:

GRUB_CMDLINE_LINUX="apparmor=0 selinux=1"

然后:

sudo update-grub

五、启用 SELinux(关键步骤)

1. 设置 SELinux 模式

编辑:

sudo nano /etc/selinux/config

内容示例:

SELINUX=permissive
SELINUXTYPE=default

⚠️ 第一次一定要用 permissive,不要直接 enforcing


六、激活 SELinux

sudo selinux-activate
sudo reboot

七、验证 SELinux 状态

重启后执行:

sestatus

输出示例:

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

八、从 permissive 切换到 enforcing(谨慎)

确认日志无大量拒绝:

sudo ausearch -m avc -ts recent

如果没问题:

sudo setenforce 1

永久生效:

SELINUX=enforcing

九、常见问题

1. 系统无法启动

  • 进入 recovery mode
  • 修改 /etc/selinux/config
  • 设为 permissive

2. SSH 登录失败

sudo restorecon -Rv /etc/ssh

3. 文件无 SELinux 标签

sudo fixfiles onboot
sudo reboot

十、建议

场景 建议
学习 SELinux ✅ Ubuntu 可装
生产服务器 ❌ 建议用 RHEL/CentOS
不想折腾 ✅ 用 AppArmor

如果你愿意,我可以:

  • 给你 最小可行 SELinux 策略示例
  • 教你 写自定义 SELinux 模块
  • 对比 AppArmor vs SELinux

你现在是 学习 / 实验 / 生产 场景?

0 踩