75 lines
3.0 KiB
Markdown
75 lines
3.0 KiB
Markdown
---
|
||
title: "SE Linux Enforcing Mode"
|
||
type: concept
|
||
tags:
|
||
- Security
|
||
- Linux
|
||
- MAC
|
||
- Access Control
|
||
sources:
|
||
- public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
|
||
last_updated: 2026-04-24
|
||
---
|
||
|
||
# SE Linux Enforcing Mode
|
||
|
||
SE Linux(Security-Enhanced Linux)是美国国家安全局(NSA)开发的 Linux 内核安全模块,通过强制访问控制(MAC,Mandatory Access Control)机制,在传统的自主访问控制(DAC,Discretionary Access Control)之上增加了一层细粒度的安全策略。
|
||
|
||
## DAC vs MAC
|
||
|
||
| 维度 | DAC(传统 Linux 权限) | MAC(SE 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` | 系统管理员类型 |
|
||
|
||
## 与其他安全机制的协同
|
||
|
||
- **与 AppArmor**:AppArmor 是 SE Linux 的替代方案,Ubuntu 默认使用 AppArmor
|
||
- **与 seccomp**:seccomp 限制进程可调用的系统调用,SE Linux 控制对系统对象的访问
|
||
- **与 capabilities**:Linux capabilities 将 root 特权拆分为多个独立能力,SE Linux 在此基础上进一步限制能力的使用场景
|
||
|
||
## 故障排查
|
||
|
||
SE Linux enforcing 模式下,常见故障表现为"Permission denied"即使文件权限看起来正确:
|
||
|
||
```bash
|
||
# 查看文件的安全上下文
|
||
ls -Z /path/to/file
|
||
|
||
# 查看进程的 SE Linux 上下文
|
||
ps -Z
|
||
|
||
# 临时切换为 Permissive 模式(调试用)
|
||
setenforce 0
|
||
|
||
# 查看 SE Linux 拒绝日志
|
||
ausearch -m avc -ts recent
|
||
```
|