Secure Computing Mode(seccomp)是一个内核功能,允许您过滤容器到内核的系统调用。可以向不同的容器传递不同的配置文件。Seccomp提供比功能更精细的控制,使攻击者在容器只能获得有限数量的系统调用。
Docker的默认seccomp profile是一个JSON文件,可以在这里查看:Docker profile.json。
Docker在300多个可用系统调用中封锁了44个。是否更加严格限制,需要在应用程序兼容性方面做出权衡。一些重要的,被阻系统调用及其理由,记录在这个表里: Seccomp security profiles for Docker。
Seccomp使用伯克利数据包过滤器(BPF)系统,该系统可在运行时进行编程,用于创建自定义过滤器。还可以通过自定义限制某个系统调用的条件或时间来限制该系统调用。
Seccomp 过滤器使用BPF程序的指针替换容器内发起的系统调用, 当容器发起系统调用时,将执行该BPF程序而不是系统调用。r容器进程的所有子进程也将继承该过滤器。用于操作Seccomp 的Docker 选项是--security-opt
。要明确使用容器的默认策略, 使用如下命令:
docker run --security-opt seccomp=/path/to/default/profile.json <container>