之前测试一个针对 Docker 容器的项目 —— confine,它可以针对特定业务容器,生成对应的 seccomp 配置文件,限制容器所能使用的系统调用,从而增强容器的安全属性。
但是目标主机环境受限,需要在容器中部署此项目,然后再对宿主机上的其它容器开展检测。
可以通过运行特权容器的方式,实现在一个容器隔离环境中对宿主机上其它容器的探测,下面是运行特权容器的命令行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$ docker run -it --name test-confine --privileged \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run:/var/run:ro \
-v /var/lib/docker:/var/lib/docker:ro \
-v /dev:/dev \
-v /boot:/boot:ro \
-v /lib/modules:/lib/modules:ro \
-v /usr/bin/docker:/usr/bin/docker:ro \
-v /etc:/ect:ro \
--net=host \
--pid=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
--cap-add=SYS_PTRACE \
--cap-add=AUDIT_CONTROL \
confine-env:1.0 bash
|
其中 confine-env:1.0
是已经部署好 confine 项目的容器再打包后生成的本地镜像。
-v /var/lib/docker:/var/lib/docker:ro
使得可以在特权容器中使用 docker 命令行
--pid=host
使得特权容器可以查看到宿主机上的进程
--cap-add=SYS_PTRACE
赋予特权容器使用 ptrace 系统调用的能力