Skip to content

Latest commit

 

History

History
178 lines (140 loc) · 5.4 KB

README.md

File metadata and controls

178 lines (140 loc) · 5.4 KB

veinmind-runner

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