第二十三课:Linux 沙盒:Landlock + seccomp
1.6K字·4分钟·
bubblewrap容器Landlock LSM系统调用过滤
学习目标
- 了解 Linux Landlock 和 seccomp 机制
- 理解 bubblewrap 容器的工作方式
- 掌握 Linux 上的安全限制
一、Landlock LSM
Landlock 是 Linux 5.13 引入的安全模块(LSM),提供文件系统访问控制。
1.1 特点
- 无需 root 权限
- 用户空间可控
- 渐进式限制
- 持久化进程
1.2 工作原理
// 创建规则集
struct landlock_ruleset_attr attr = {
.handled_access_fs = LANDLOCK_ACCESS_FS_READ_FILE |
LANDLOCK_ACCESS_FS_WRITE_FILE
};
int ruleset_fd = landlock_create_ruleset(&attr, sizeof(attr), 0);
// 添加规则
struct landlock_path_beneath_attr path_attr = {
.allowed_access = LANDLOCK_ACCESS_FS_READ_FILE,
.parent_fd = open("/home/user/project", O_PATH)
};
landlock_add_rule(ruleset_fd, LANDLOCK_RULE_PATH_BENEATH, &path_attr, 0);
// 应用规则
landlock_restrict_self(ruleset_fd, 0);
二、seccomp
seccomp(Secure Computing Mode)过滤系统调用。
2.1 功能
- 白名单允许的系统调用
- 阻止危险操作(如 mount、reboot)
- 减少攻击面
2.2 Codex 中的使用
Codex 使用 seccomp 过滤:
- 允许:read、write、open、close、mmap
- 禁止:mount、reboot、kexec_load
- 限制:网络相关调用
三、bubblewrap
Codex 使用 bubblewrap(bwrap)创建轻量级容器。
3.1 功能
- 隔离文件系统视图
- 限制网络访问
- 隔离进程空间
- 无需 root 权限
3.2 使用方式
bwrap --ro-bind /usr /usr --ro-bind /lib /lib --bind /home/user/project /home/user/project --dev /dev --proc /proc --unshare-net --die-with-parent python src/test.py
四、三层防护
Linux 上的 Codex 使用三层防护:
- Landlock:文件系统访问控制
- seccomp:系统调用过滤
- bubblewrap:容器隔离
五、本课小结
| 要点 | 说明 |
|---|---|
| Landlock | 文件系统访问控制 |
| seccomp | 系统调用过滤 |
| bubblewrap | 轻量级容器 |
| 三层防护 | Landlock + seccomp + bwrap |
下一步
下一课我们将了解审批机制。