Files
nexus/wiki/concepts/SE-Linux-Enforcing.md

3.0 KiB
Raw Blame History

title, type, tags, sources, last_updated
title type tags sources last_updated
SE Linux Enforcing Mode concept
Security
Linux
MAC
Access Control
public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
2026-04-24

SE Linux Enforcing Mode

SE LinuxSecurity-Enhanced Linux是美国国家安全局NSA开发的 Linux 内核安全模块通过强制访问控制MACMandatory Access Control机制在传统的自主访问控制DACDiscretionary Access Control之上增加了一层细粒度的安全策略。

DAC vs MAC

维度 DAC传统 Linux 权限) MACSE Linux
控制方式 所有者自主决定 系统统一策略强制执行
粒度 用户/组/其他 + rwx 主体标签 + 客体标签 + 策略规则
绕过风险 root 可修改任何权限 即使 root 也受策略约束
配置难度 简单chmod/chown 复杂(需要策略编写)

关键概念

  • 主体Subject:进程,通常具有特定的安全上下文(如 system_u:system_r:container_file_t
  • 客体Object:文件、目录、端口、进程等系统资源
  • 安全上下文Security Context:格式为 user:role:type[:level] 的标签字符串
  • 策略规则Policy Rules:定义哪些主体可以对哪些客体执行哪些操作的规则集合
  • Enforcing 模式:强制执行策略,违反策略的操作被拒绝并记录
  • Permissive 模式:仅记录违反策略的操作,不实际阻止

Bottlerocket 中的 SE Linux

Bottlerocket OS 默认启用 SE Linux enforcing 模式:

  • 容器隔离:每个容器运行在独立的安全上下文中,防止容器逃逸后影响宿主机或其他容器
  • 最小权限原则:即使容器内获得 root 权限,其操作仍受 SE Linux 策略限制
  • 与容器运行时集成containerd、docker 等容器运行时通过 SE Linux 标签隔离不同容器的工作负载

常见 SE Linux 标签

标签 用途
unconfined_t 不受限制的进程
container_file_t 容器管理的文件(如 volume 挂载点)
svirt_sandbox_file_t SELinux 虚拟沙箱文件标签
admin_t 系统管理员类型

与其他安全机制的协同

  • 与 AppArmorAppArmor 是 SE Linux 的替代方案Ubuntu 默认使用 AppArmor
  • 与 seccompseccomp 限制进程可调用的系统调用SE Linux 控制对系统对象的访问
  • 与 capabilitiesLinux capabilities 将 root 特权拆分为多个独立能力SE Linux 在此基础上进一步限制能力的使用场景

故障排查

SE Linux enforcing 模式下,常见故障表现为"Permission denied"即使文件权限看起来正确:

# 查看文件的安全上下文
ls -Z /path/to/file

# 查看进程的 SE Linux 上下文
ps -Z

# 临时切换为 Permissive 模式(调试用)
setenforce 0

# 查看 SE Linux 拒绝日志
ausearch -m avc -ts recent