veinmind-runner 是由长亭科技自研的一款问脉容器安全工具平台
长亭团队以丰富的研发经验为背景, 在 veinmind-sdk 中设计了一套插件系统。
在该插件系统的支持下,只需要调用 veinmind-sdk 所提供的API,即可自动化的生成符合标准规范的插件。(具体代码示例可查看example)
veinmind-runner
作为插件平台,会自动化的扫描符合规范的插件,并将需要扫描的镜像信息传递给对应的插件。
- 自动扫描并注册当前目录下(含子目录)的插件
- 统一运行基于不同语言实现的问脉插件
- 插件可以和
runner
进行通信,如上报事件进行告警等
- linux/amd64
- linux/386
- linux/arm64
- linux/arm
请先安装libveinmind
,安装方法可以参考官方文档
可以选择手动编译 veinmind-runner
,
或者在Release页面中找到已经编译好的 veinmind-runner
进行下载
基于平行容器的模式,获取 veinmind-runner
的镜像并启动
docker run --rm -it --mount 'type=bind,source=/,target=/host,readonly,bind-propagation=rslave' \
-v `pwd`:/tool/resource -v /var/run/docker.sock:/var/run/docker.sock veinmind/veinmind-runner
或者使用项目提供的脚本启动
chmod +x parallel-container-run.sh && ./parallel-container-run.sh
基于Kubernetes
环境,使用Helm
安装veinmind-runner
,定时执行扫描任务
请先安装Helm
, 安装方法可以参考官方文档
安装veinmind-runner
之前,可配置执行参数,可参考文档
使用Helm
安装 veinmind-runner
cd ./veinmind-runner/script/helm_chart/veinmind
helm install veinmind .
1.指定镜像名称或镜像 ID 并扫描 (需要本地存在对应的镜像)
./veinmind-runner scan-host [imagename/imageid]
2.扫描所有本地镜像
./veinmind-runner scan-host
3.扫描远程仓库中的centos
镜像(不指定仓库默认为index.docker.io
)
./veinmind-runner scan-registry centos
4.扫描远程私有仓库中的镜像registry.private.net/library/nginx
镜像,其中auth.toml
为认证信息配置文件,里面包含了对应的认证信息
./veinmind-runner scan-registry -c auth.toml registry.private.net/library/nginx
auth.toml
的格式如下, registry
代表仓库地址, username
代表用户名, password
代表密码或 token
[[auths]]
registry = "index.docker.io"
username = "admin"
password = "password"
[[auths]]
registry = "registry.private.net"
username = "admin"
password = "password"
5.指定容器运行时类型
./veinmind-runner scan-host --containerd
容器运行时类型
- dockerd
- containerd
6.使用glob
筛选需要运行插件
./veinmind-runner scan-host -g "**/veinmind-malicious"
7.列出当前插件列表
./veinmind-runner list plugin
8.指定容器运行时路径
./veinmind-runner scan-host --docker-data-root [your_path]
./veinmind-runner scan-host --containerd-root [your_path]
9.支持 docker 镜像阻断功能
# first
./veinmind-runner authz -c config.toml
# second
dockerd --authorization-plugin=veinmind-broker
其中config.toml
,包含如下字段
字段名 | 字段属性 | 含义 | |
---|---|---|---|
policy | action | string | 需要监控的行为 |
enabled_plugins | []string | 使用哪些插件 | |
plugin_params | []string | 各个插件的参数 | |
risk_level_filter | []string | 风险等级 | |
block | bool | 是否阻断 | |
alert | bool | 是否报警 | |
log | report_log_path | string | 插件扫描日志 |
authz_log_path | string | 阻断服务日志 |
- action 原则上支持DockerAPI所提供的操作接口
- 如下的配置表示:当
创建容器
或推送镜像
时,使用veinmind-weakpass
插件扫描ssh
服务,如果发现有弱密码存在,并且风险等级为High
则阻止此操作,并发出警告。最终将扫描结果存放至plugin.log
,将风险结果存放至auth.log
。
[log]
plugin_log_path = "plugin.log"
auth_log_path = "auth.log"
[listener]
listener_addr = "/run/docker/plugins/veinmind-broker.sock"
[[policies]]
action = "container_create"
enabled_plugins = ["veinmind-weakpass"]
plugin_paramas = ["veinmind-weakpass:scan.serviceName=ssh"]
risk_level_filter = ["High"]
block = true
alert = true
[[policies]]
action = "image_push"
enabled_plugins = ["veinmind-weakpass"]
plugin_params = ["veinmind-weakpass:scan.serviceName=ssh"]
risk_level_filter = ["High"]
block = true
alert = true
[[policies]]
action = "image_create"
enabled_plugins = ["veinmind-weakpass"]
plugin_params = ["veinmind-weakpass:scan.serviceName=ssh"]
risk_level_filter = ["High"]
block = true
alert = true