Notes about Seccomp filter
本文将mark下Seccomp(SECure COMPuting) filtering的相关notes。
Seccomp filtering provides a means for a process to specify a filter for incoming system calls.
以下内容源于deepseek。
Overview
Seccomp filter 是 Linux 内核提供的一种安全机制,用于限制进程能够执行的系统调用(syscall),从而减少潜在的攻击面。它通过自定义过滤规则(基于 BPF 程序)动态允许或拦截系统调用,常用于沙箱、容器等需要严格隔离的场景。
核心概念
Seccomp 模式
- Strict Mode:仅允许
read
,writ
e,
exit,
sigreturn四个系统调用,其他调用会触发
SIGKILL`。 - Filter Mode(Seccomp-BPF):允许通过 BPF(Berkeley Packet Filter)规则自定义允许或拒绝的系统调用列表,提供更灵活的过滤。
BPF 规则
- 使用类汇编的指令定义过滤逻辑(例如基于系统调用号、参数值等条件)。
- 规则在内核中执行,确保高效和安全。
工作原理
规则设置
- 进程通过
prctl()
或seccomp()
系统调用加载 BPF 规则。 - 规则定义哪些系统调用被允许(
ALLOW
)、记录(LOG
)或拒绝(KILL
/ERRNO
)。
执行流程
- 当进程发起系统调用时,内核触发 Seccomp 过滤器。
- BPF 规则对系统调用号、参数等进行检查。
- 根据规则决定放行、终止进程,或返回错误(如
EPERM
)。
主要用途
沙箱化应用
- 浏览器(如 Chrome)用 Seccomp 限制渲染进程的权限。
- 游戏反作弊系统防止用户态程序滥用内核功能。
容器安全
Docker 和 Kubernetes 默认启用 Seccomp,限制容器内进程的系统调用(如禁止 mount
或 reboot
)。
特权进程降权
服务启动后通过 Seccomp 丢弃不必要的系统调用权限。
参考资料: