温馨提示×

ubuntu selinux怎么学习

小樊
42
2026-10-16 02:07:28
栏目: 智能运维

在 Ubuntu 上学习 SELinux,需要先明确一个常见误区:

Ubuntu 默认使用的是 AppArmor,而不是 SELinux
SELinux 主要用于 RHEL / CentOS / Rocky / Fedora 等发行版

不过,Ubuntu 也可以安装和使用 SELinux,只是不如 RHEL 系成熟。下面给你一套从入门到实战的学习路线。


一、先搞清楚:Ubuntu 和 SELinux 的关系

1. Ubuntu 默认安全机制

  • AppArmor(路径型 MAC)
  • 配置文件在:/etc/apparmor.d/

2. SELinux 在 Ubuntu 上是“可选组件”

  • 内核支持(Ubuntu 内核已带 SELinux)
  • 但默认不启用
  • 需要手动安装策略并切换模式

二、SELinux 基础概念(必学)

1. 三种模式

enforcing   # 强制执行(拦截违规)
permissive  # 只记录不拦截(调试用)
disabled    # 关闭

查看当前模式:

getenforce

2. 核心概念

  • Subject(主体):进程
  • Object(客体):文件、端口、socket
  • Type(类型):最关键(TE 模型)
  • Context(安全上下文)
    user:role:type:level
    

查看上下文:

ls -Z
ps -Z

三、在 Ubuntu 上安装 SELinux(学习用)

⚠️ 建议用虚拟机或测试机

1. 安装 SELinux 基础组件

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

2. 激活 SELinux

sudo selinux-activate

3. 设置为 Permissive(先不拦截)

编辑:

sudo nano /etc/selinux/config

内容:

SELINUX=permissive
SELINUXTYPE=default

重启:

sudo reboot

四、SELinux 常用命令(重点练)

getenforce                 # 查看模式
setenforce 0|1            # 临时切换
sestatus                  # 详细信息

ls -Z                     # 文件上下文
ps -Z                     # 进程上下文

semanage                   # 策略管理
restorecon                 # 恢复上下文
chcon                      # 临时改上下文
ausearch                   # 查审计日志
sealert                    # 错误分析(RHEL 更全)

五、实战学习路线(推荐)

阶段 1:理解上下文

  • 创建文件,看 ls -Z
  • chcon 改类型
  • restorecon 恢复

阶段 2:服务受限实验

例如:

  • 用 nginx
  • 故意改错 context
  • 看访问被拒

阶段 3:日志分析

sudo ausearch -m avc -ts recent
sudo dmesg | grep avc

阶段 4:写策略(进阶)

  • 用 audit2allow
sudo ausearch -m avc | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp

六、学习资源(质量高)

官方 / 经典

  • Red Hat SELinux Guide(最权威) https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/

书籍

  • 《SELinux by Example》
  • 《SELinux Cookbook》

视频

  • Red Hat SELinux 官方 YouTube
  • IBM / Fedora SELinux 教程

七、重要建议(避坑)

✅ 初学 SELinux 一定要用 Permissive
❌ 不要在生产 Ubuntu 直接 enforcing
✅ Ubuntu 学 SELinux,不如用 CentOS / Rocky / Fedora 更顺
✅ 如果目标是“Ubuntu 安全”,先学 AppArmor


如果你愿意,我可以:

  • 给你一套 Ubuntu SELinux 实验清单
  • 或对比 AppArmor vs SELinux
  • 或直接教你 写第一个 SELinux 策略

你更想从哪一步开始?

0 踩