温馨提示×

ubuntu selinux怎么入门

小樊
42
2026-10-21 21:39:27
栏目: 智能运维

在 Ubuntu 上入门 SELinux,需要先明确一个关键点:

Ubuntu 默认使用的是 AppArmor,而不是 SELinux。
如果你想“入门 SELinux”,通常有两种情况:

  1. 单纯学习 SELinux 概念(建议用 CentOS/RHEL)
  2. 在 Ubuntu 上强行启用 SELinux(不推荐新手)

下面我分 概念入门 + Ubuntu 实操 两部分讲。


一、SELinux 是什么(先建立认知)

SELinux(Security-Enhanced Linux)是 强制访问控制(MAC) 系统:

  • 传统 Linux:用户 + 文件权限(DAC)
  • SELinux:进程有什么“身份”,能访问什么“资源”

三个核心概念

  1. Subject(主体):进程
  2. Object(客体):文件、端口、设备等
  3. Policy(策略):规定谁可以访问谁

三种模式

enforcing   # 强制执行,违规直接拒绝
permissive  # 只记录不拒绝(排错用)
disabled    # 关闭

二、Ubuntu 上能不能用 SELinux?

✅ 可以,但要手动装,而且 和 AppArmor 冲突

1. 查看当前安全模块

cat /sys/kernel/security/lsm

Ubuntu 通常是:

lockdown,capability,apparmor

三、在 Ubuntu 上启用 SELinux(仅学习用)

⚠️ 建议用 虚拟机

1. 安装 SELinux 相关包

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

2. 禁用 AppArmor

sudo systemctl disable apparmor
sudo reboot

3. 激活 SELinux

sudo selinux-activate
sudo reboot

4. 查看状态

sestatus

输出示例:

SELinux status: enabled
Current mode: permissive
Mode from config file: permissive

四、SELinux 入门常用命令

查看状态

getenforce
sestatus

切换模式(临时)

sudo setenforce 0   # permissive
sudo setenforce 1   # enforcing

查看文件上下文

ls -Z
ps -Z

修改文件上下文

semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
restorecon -Rv /web

查看拒绝日志

sudo ausearch -m avc -ts recent
sudo sealert -a /var/log/audit/audit.log

五、新手学习路径(非常重要)

✅ 推荐学习顺序

  1. 先理解 DAC vs MAC
  2. 学会 sestatus / getenforce
  3. 理解 context(上下文)
  4. 学会看 avc denied 日志
  5. 用 permissive 模式排错
  6. 再尝试写简单策略

六、我的真心建议(很重要)

如果你是入门 SELinux,不要用 Ubuntu。

✅ 更好的系统:

  • CentOS 7 / 8
  • Rocky Linux
  • AlmaLinux
  • RHEL

这些系统:

  • 默认启用 SELinux
  • 文档完善
  • 排错体验好

七、如果你想,我可以继续教你

你可以直接说:

  • “给我一个 SELinux 实战例子”
  • “httpd 被 SELinux 拦截怎么排查”
  • “SELinux 和 AppArmor 有什么区别”
  • “帮我写一个简单的 SELinux 策略”

我可以从零带你练。

0 踩