使用 Landlock LSM 编写零依赖沙箱应用
通过 Landlock 安全模块,在用户空间为任意二进制执行进程创建文件系统白名单与网络访问限制。 · 难度:入门 · +10XP
使用 Landlock LSM 编写零依赖沙箱应用
Landlock 是 Linux 5.13+ 内置的 LSM,允许非特权进程自限制文件系统与网络访问。本教程将编写一个 sandbox 程序,在 fork 并 exec 目标应用前调用 landlock_create_ruleset 与 landlock_add_rule,使子进程只能读取 /usr 和写入 /tmp,同时阻止所有 socket 创建。无需 Docker 或 Seccomp。
struct landlock_ruleset_attr attr = {
.handled_access_fs = LANDLOCK_ACCESS_FS_EXECUTE |
LANDLOCK_ACCESS_FS_WRITE_FILE |
LANDLOCK_ACCESS_FS_READ_FILE,
};
int ruleset_fd = syscall(__NR_landlock_create_ruleset, &attr, sizeof(attr), 0);
// 然后添加路径规则,最后 landlock_restrict_self(ruleset_fd);
execvp(argv[1], &argv[1]);