OpenVAS(Greenbone Community Edition)部署操作手册
一、概述
OpenVAS 现已并入 Greenbone Community Edition(GCE),是一套开源的漏洞扫描与管理框架,主要由以下组件构成:
| 组件 | 作用 |
|---|---|
| gvmd (GVM Daemon) | 核心管理进程,负责任务调度、用户/权限管理 |
| gsa / gsad (Greenbone Security Assistant) | Web 管理界面 |
| ospd-openvas | 扫描引擎调度服务,实际调用 openvas-scanner |
| openvas-scanner | 漏洞探测引擎本体 |
| pg-gvm (PostgreSQL) | 数据存储 |
| notus-scanner | 基于产品/版本的本地漏洞匹配 |
| NVT / SCAP / CERT Feed | 漏洞特征库与知识库数据 |
推荐使用官方维护的 Docker Compose 方式部署,避免手工编译依赖带来的兼容性问题。
二、环境要求
- 操作系统:Linux(推荐 Ubuntu 22.04 / 24.04 或 Debian 12,x86_64)
- CPU:≥ 4 核(Feed 同步和扫描期间 CPU 占用较高)
- 内存:≥ 8 GB(生产环境建议 16 GB 以上)
- 磁盘:≥ 30 GB 可用空间(漏洞特征库随时间增长)
- 网络:需能访问 Greenbone 官方 Feed 源(或已配置内网镜像/代理)
- 已安装 Docker Engine ≥ 20.10 与 Docker Compose Plugin ≥ 2.x
检查 Docker 环境:
docker --version
docker compose version
三、部署方式一:Docker Compose 部署
1. 获取官方 Compose 文件
mkdir -p /opt/gvm && cd /opt/gvm
curl -O https://raw.githubusercontent.com/greenbone/openvas-docker/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/greenbone/openvas-docker/main/.env
建议以 GitHub 上
greenbone/gvm-compose(或docker-compose.yml官方样例)为准,具体文件名以官方仓库当前发布为准,部署前先核对版本对应关系(gvmd / gsa / ospd-openvas 需匹配同一发行周期)。
2. 检查并调整 .env 配置
关键变量说明:
# 各组件镜像 Tag,建议锁定具体版本号而非 latest,便于回滚
GVMD_VERSION=stable
GSA_VERSION=stable
OPENVAS_SCANNER_VERSION=stable
OSPD_OPENVAS_VERSION=stable
# Web 界面监听端口
HTTPS_PORT=443
# 数据卷路径(如需持久化到指定磁盘可修改)
生产环境建议:
- 将
latest替换为固定版本号,避免升级引入未知变更 - 数据卷(
gvmd_data、vt_data、scap_data、cert_data、psql_data、psql_socket_vol)建议挂载到独立磁盘或分区
3. 首次启动并同步 Feed
cd /opt/gvm
docker compose up -d
首次启动会自动拉起 Feed 同步容器(gvmd、notus-scanner、nvt、scap、cert 等),下载漏洞特征库,耗时较长(视网络情况 30 分钟至数小时不等)。
查看同步进度:
docker compose logs -f gvmd
可通过以下方式确认 Feed 是否就绪:
docker compose exec gvmd gvmd --get-scanners
4. 获取初始管理员密码
官方镜像首次启动会在 gvmd 容器内自动创建 admin 用户,密码可通过日志获取:
docker compose logs gvmd | grep -i "User created"
若未自动生成,可手动创建:
docker compose exec gvmd gvmd --create-user=admin --new-password='<强密码>'
5. 访问 Web 管理界面
浏览器访问:
https://<服务器IP或域名>:443
首次访问会提示自签名证书告警(默认使用自签证书),生产环境建议替换为企业内部 CA 签发证书或通过 Nginx 反向代理接入正式证书。
四、部署方式二:OVA 虚拟设备导入
除 Docker Compose 自建方式外,Greenbone 官方也以 OVA(Open Virtualization Appliance) 格式提供预制虚拟设备,可直接导入主流 Hypervisor。适合快速搭建测试环境,或已有虚拟化平台、不想自行维护 Docker 栈的场景。
1. OVA 来源说明
| 类型 | 说明 |
|---|---|
| OPENVAS FREE(官方入门版) | Greenbone 官方提供,需通过官网表单申请获取,使用 Community Feed,功能相对精简,适合个人/非生产环境 |
| Greenbone Enterprise Appliance | 官方商业设备,需订阅密钥(Subscription Key)激活,使用 Enterprise Feed,面向企业客户 |
| 第三方预制 OVA(如 NetmanageIT) | 非 Greenbone 官方维护,内置 Ubuntu + Docker + 已同步 GCE 全家桶,导入即用,仅建议用于个人测试,不建议用于生产 |
纯开源 Community Edition(自建、非订阅)路线没有官方直接发布的"开箱即用 OVA",Docker Compose 仍是官方持续维护的开源交付方式;OVA 主要对应 Greenbone 的设备化产品线。
2. VMware ESXi / VirtualBox 导入(官方标准流程)
- VMware ESXi:登录 Web 管理界面 → Virtual Machines → Create/Register VM → Deploy a virtual machine from an OVF or OVA file → 选择 OVA 文件 → 按向导完成
- VirtualBox:菜单栏 File → Import Appliance → 选择 OVA 文件 → 按向导完成
- 导入前建议校验文件完整性(官方会提供 checksum,Windows 下可用 PowerShell 计算比对,防止文件被篡改)
- 首次开机会进入设备自带的 First Setup Wizard,完成网络、密码等初始化配置(此流程与 Hypervisor 无关,更换平台仍需走一遍)
3. Proxmox VE(PVE)导入
PVE 没有像 VMware/VirtualBox 那样的"图形界面直接导入 OVA"入口(较新版本 Web UI 已部分支持),标准方式是命令行导入。
方式 A:CLI 导入(通用,推荐)
# 1. 上传 OVA 到 PVE 宿主机
scp greenbone-appliance.ova root@pve-host:/var/lib/vz/template/iso/
# 2. OVA 本质是 tar 包,解压出 .ovf 描述文件和 .vmdk 磁盘
cd /var/lib/vz/template/iso/
tar xvf greenbone-appliance.ova
# 得到类似 xxx.ovf / xxx.vmdk / xxx.mf
# 3. 导入(未使用的 VMID + ovf 文件 + 目标存储名,建议转 qcow2)
qm importovf <VMID> ./xxx.ovf <目标存储名,如local-lvm> --format qcow2
导入后检查并调整 VM 配置:
qm config <VMID> # 查看导入结果
qm set <VMID> --scsihw virtio-scsi-pci # 使用 VirtIO SCSI 控制器
qm set <VMID> --net0 virtio,bridge=vmbr0 # 使用 VirtIO 网卡
qm set <VMID> --ostype l26 # Linux 2.6+ 内核
qm set <VMID> --agent enabled=1 # 启用 QEMU Guest Agent
qm set <VMID> --boot order=scsi0 # 设置启动盘
方式 B:PVE 8.x/9.x Web UI 导入
在 数据中心 → 存储 → 目录类型存储 启用 "Import" 内容类型,将 OVA 放入对应目录后,可在创建 VM 向导中直接选择"从 OVF/OVA 导入"。
4. PVE 导入 Greenbone OVA 的注意事项
| 事项 | 说明 |
|---|---|
| 磁盘体积 | 已同步 Feed 的镜像可能数十 GB,转换耗时与体积成正比,导入前用 qemu-img info xxx.vmdk 先确认大小 |
| 网卡驱动 | 官方 OVA 面向 VMware/VirtualBox,导入后网卡需手动改为 virtio,若系统内未识别 virtio 驱动,可临时回退为 e1000 |
| UEFI/Secure Boot | 若原设备要求 Secure Boot,需在 PVE 中配置 OVMF + Secure Boot,并确认 Guest OS 类型(至少 Debian 11 64-bit)匹配,否则可能无法启动 |
| 控制台显示异常 | 开机后黑屏但 CPU 有负载,通常是设备默认走串口输出,需在硬件中添加 Serial 设备并将显示类型改为 Serial terminal |
| 完整性校验 | 建议对比官方发布的 checksum,避免因传输不完整(如 scp 中断)导致导入报错或系统异常 |
| 订阅激活 | 若导入的是 Enterprise/Free 系列官方设备,首次开机仍需完成其自带的 First Setup Wizard(网络、密钥等),与更换 Hypervisor 无关 |
5. 两种部署方式对比
| 维度 | Docker Compose 自建 | OVA 导入 |
|---|---|---|
| 适用场景 | 生产环境、需要精细化运维和版本控制 | 快速搭建测试环境、已有虚拟化平台 |
| 版本可控性 | 高(可锁定各组件镜像版本) | 依赖厂商发布节奏 |
| 维护成本 | 需自行维护容器编排、备份、升级 | 官方/第三方设备自带初始化流程,维护相对简单 |
| 开源合规性 | 完全对应开源 Community Edition | Free 版为官方精简版;企业版需订阅;第三方 OVA 非官方维护 |
| 生产可用性 | 推荐 | 官方 Free/Enterprise 可用;第三方 OVA 不建议用于生产 |
五、初始化配置
1. 修改管理员密码
登录后立即在 Administration → Users 中修改初始密码,并按需创建独立运维账号(避免共用 admin)。
2. 确认 Feed 数据状态
Administration → Feed Status 中检查:
- NVT Feed(漏洞检测脚本)
- SCAP Feed(CVE/CPE 数据)
- CERT Feed(安全通告)
三者均应显示"最新(Current)"状态,否则扫描结果可能不准确。
3. 配置扫描凭据(Credentials)
用于认证扫描(登录后深度检测),路径:Configuration → Credentials → New Credential,支持:
- SSH(用户名/密码或密钥)
- SMB(Windows 域账号)
- SNMP
建议使用最小权限专用扫描账号,而非管理员账号。
4. 配置扫描目标(Targets)
Configuration → Targets → New Target:
- 填写 IP/网段/主机名
- 选择端口范围(默认全端口耗时较长,可先用常用端口列表)
- 关联已创建的凭据(用于认证扫描)
5. 创建扫描任务(Tasks)
Scans → Tasks → New Task:
- 关联 Target
- 选择扫描配置(Scan Config),常用:
Full and fast:常规全面扫描(推荐日常使用)Discovery:仅做资产发现Host Discovery:存活探测
- 可设置定时调度(Schedule)实现周期性扫描
六、日常运维
1. Feed 更新
Feed 数据每日更新,容器内置定时任务会自动同步,也可手动触发:
docker compose exec gvmd greenbone-feed-sync --type NVT
docker compose exec gvmd greenbone-feed-sync --type SCAP
docker compose exec gvmd greenbone-feed-sync --type CERT
2. 版本升级
cd /opt/gvm
docker compose pull
docker compose up -d
升级前建议:
- 备份 PostgreSQL 数据卷
- 核对 gvmd / gsa / ospd-openvas 版本兼容矩阵(官方 Release Notes)
3. 数据备份
# 备份数据库
docker compose exec pg-gvm pg_dumpall -U gvmd > /backup/gvm_$(date +%Y%m%d).sql
# 备份数据卷(容器停止状态下更安全)
docker compose stop
tar czf /backup/gvm_volumes_$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/gvm_*
docker compose start
4. 日志与故障排查
# 查看各服务日志
docker compose logs -f gvmd
docker compose logs -f ospd-openvas
docker compose logs -f gsa
# 查看容器健康状态
docker compose ps
常见问题:
| 现象 | 排查方向 |
|---|---|
| 无法登录 Web 界面 | 检查 gsad 容器是否启动、443 端口是否被占用/防火墙放行 |
| 扫描一直排队不执行 | 检查 ospd-openvas 与 openvas-scanner 容器是否正常、Feed 是否同步完成 |
| 扫描结果为空 | 确认凭据配置正确、目标主机端口开放、Feed 数据是否最新 |
| Feed 同步失败 | 检查出网策略是否放通 Greenbone Feed 源,或配置代理/内网镜像 |
七、安全加固建议
- 网络隔离:扫描服务器建议部署在独立管理网段,仅开放必要端口(443)给运维终端。
- 访问控制:Web 界面前置 Nginx/WAF,限制访问来源 IP,启用双因素认证(如支持)。
- 凭据管理:扫描凭据使用最小权限专用账号,定期轮换密码。
- 日志审计:开启操作日志留存,定期审查用户登录与任务创建记录。
- 合规扫描授权:对外部网段扫描前务必获得书面授权,避免误扫产生业务影响或法律风险。
- 数据备份:定期备份数据库与配置,制定恢复演练计划。
八、参考资料
- Greenbone 官方文档:https://greenbone.github.io/docs/
- OpenVAS/GVM GitHub 仓库:https://github.com/greenbone
- 社区版部署仓库:https://github.com/greenbone/openvas-docker