AgentHarness 课程

第二十三课: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 使用三层防护:

  1. Landlock:文件系统访问控制
  2. seccomp:系统调用过滤
  3. bubblewrap:容器隔离

五、本课小结

要点说明
Landlock文件系统访问控制
seccomp系统调用过滤
bubblewrap轻量级容器
三层防护Landlock + seccomp + bwrap

下一步

下一课我们将了解审批机制。