深入理解Seccomp、BPF及其实践应用
1. 进程能力与容器应用
在进程运行过程中,第五列代表进程所需的能力。输出中包含非审计事件,我们能看到所有非审计检查,以及审计标志置为 1 时所需的能力。我们关注的CAP_NET_BIND_SERVICE能力,在 Linux 内核源码的include/uapi/linux/capability.h文件中被定义为常量,其 ID 为 10,具体描述如下:
/* Allows binding to TCP/UDP sockets below 1024 */ /* Allows binding to ATM VCIs below 32 */ #define CAP_NET_BIND_SERVICE 10在容器运行时,如runC或Docker,能力机制常被用于使容器以非特权模式运行,仅赋予运行大多数应用所需的能力。若应用需要特定能力,在Docker中可使用--cap-add参数实现。例如,以下命令为容器赋予CAP_NET_ADMIN能力,使其能够设置 netlink 以添加dummy0接口:
docker run -it --rm --cap-add=NET_ADMIN ubuntu ip link add dummy0 typ