Featured image of post OpenVAS/GVM 漏洞扫描:从原生安装到 Docker 化部署

OpenVAS/GVM 漏洞扫描:从原生安装到 Docker 化部署

OpenVAS / GVM(Greenbone Vulnerability Management)漏洞扫描平台的两种部署方式:apt 一键安装与 docker-compose 集群化

一、为什么 2023 年要聊 OpenVAS / GVM

OpenVAS(Open Vulnerability Assessment Scanner)是开源界最老牌的网络漏洞扫描器之一,2017 年改名 GVM(Greenbone Vulnerability Management),由 Greenbone 维护。GVM 21.4+ 开始把组件名从 openvas 改成 gvm,但核心扫描引擎还是 OpenVAS。

2022-04 发布的 GVM 22.4 是当前主流生产版本——本篇示例基于这个版本。gvm-check-setup 跑出来的就是:

1
It seems like your GVM-23.11.0 installation is OK.

本文写于 2023-04-15。示例基于 GVM 22.04(Ubuntu 22.04 LTS)+ 9 万+ NVT 漏洞库。Greenbone 在 2023-2024 年陆续把 gvm-setup 改造成 greenbone-feed-sync,新版本会越来越 Docker 化。

二、GVM 是什么、能做什么

核心能力

  • 漏洞扫描:扫描目标主机的开放端口、运行服务、CVE 漏洞,9 万+ NVT(Network Vulnerability Tests)覆盖
  • 合规检查:PCI DSS、HIPAA、CIS 等基线
  • CVE 库自动更新:默认每天从 Greenbone 社区 feed 同步

典型使用场景

  • 内部网络定期漏扫(季度/半年)
  • 重要业务上线前的安全验收
  • 等保 2.0 二级 / 三级测评的漏洞证据
  • 攻防演练 / 红蓝对抗的攻击面梳理

架构(多个 daemon 协作):

组件作用
gvmd主管理进程,API 服务
gsadWeb UI(Greenbone Security Assistant)
openvas-scanner / ospd-openvas实际扫描引擎
pg-gvmPostgreSQL 后端
redis-server任务队列
notus-scanner轻量存活/服务检测

三、方式一:apt 一键安装(Ubuntu 22.04)

3.1 装 GVM 包

1
2
3
sudo apt update
sudo apt install gvm -y
# 依赖:greenbone-security-assistant gsad gvm-tools libmicrohttpd12t64

3.2 初始化

1
2
sudo gvm-setup
# 初始化要下载漏洞库,时间 30-90 分钟(看带宽)

初始化成功后会输出默认 admin 密码(一串 UUID):

1
[*] User created with password '3ffd4efb-d181-4201-ae4d-5126584f5461'.

一定要记下来,或者立即改密:

1
sudo runuser -u _gvm -- gvmd --user=admin --new-password=123456

3.3 检查

1
sudo gvm-check-setup

如果中途某一步失败,按提示执行修复命令。最常见的失败redis-server 没启动:

1
sudo systemctl enable --now redis-server@openvas.service

3.4 同步漏洞库

1
2
3
sudo gvm-feed-update
# 较新的 GVM 版本会提示用:
# sudo greenbone-feed-sync

gvm-feed-update 已 deprecated,新版本 GVM(22.4+)推荐 greenbone-feed-sync

3.5 启停

1
2
sudo gvm-start       # 启动
sudo gvm-stop        # 停止

检查 GVM 服务状态:

1
systemctl status ospd-openvas gvmd gsad

3.6 改 Web UI 监听地址

默认只监听 127.0.0.1:9392远程访问需要改 0.0.0.0:443

1
2
3
4
5
sudo systemctl edit gsad.service
# 写入:
# [Service]
# ExecStart=
# ExecStart=/usr/local/sbin/gsad --foreground --listen=0.0.0.0 --port=443

或直接改 service 文件:

1
2
3
4
5
6
sudo vi /usr/lib/systemd/system/gsad.service
# -ExecStart=/usr/local/sbin/gsad --foreground --listen=127.0.0.1 --port=9392
# +ExecStart=/usr/local/sbin/gsad --foreground --listen=0.0.0.0 --port=443

sudo systemctl daemon-reload
sudo systemctl restart gsad

3.7 加新用户

1
sudo runuser -u _gvm -- gvmd --create-user=<新用户名> --new-password=<密码>

3.8 日志

1
sudo tail -f /var/log/gvm/gvmd.log

四、方式二:docker-compose 集群化部署

生产环境强烈推荐 Docker 部署——方便升级、数据持久化、跟其他服务(反向代理、监控)集成。

4.1 拉取 yml 和镜像

1
2
3
4
5
6
# 拉 docker-compose.yml(22.4 官方)
curl -f -L https://greenbone.github.io/docs/latest/_static/docker-compose-22.4.yml \
     -o docker-compose.yml

# 拉镜像(约 3GB)
docker-compose -f docker-compose.yml -p greenbone-community-edition pull

镜像清单(约 18 个容器):

镜像用途
greenbone/scap-dataSCAP 数据
greenbone/vulnerability-testsNVT 漏洞测试
greenbone/data-objects数据对象
greenbone/report-formats报告格式
greenbone/notus-datanotus 漏洞数据
greenbone/cert-bund-dataCERT-Bund 漏洞
greenbone/dfn-cert-dataDFN-CERT 漏洞
greenbone/redis-server任务队列
greenbone/pg-gvmPostgreSQL 后端
greenbone/gvmd主管理
greenbone/gsaWeb UI
greenbone/ospd-openvas扫描引擎
greenbone/openvas-scanner扫描 daemon
greenbone/gvm-tools命令行工具
greenbone/gpg-dataGPG 签名

4.2 启动

1
docker-compose -f docker-compose.yml -p greenbone-community-edition up -d

第一次启动要等所有 feed 同步(5-30 分钟),看日志:

1
docker-compose -f docker-compose.yml -p greenbone-community-edition logs -f

4.3 Web UI 访问

默认 https://localhost:9392(docker-compose yml 里绑定了 127.0.0.1:9392:80)。

默认 admin 密码:admin——第一次登录必须立即改密

1
2
docker-compose -f docker-compose.yml -p greenbone-community-edition \
  exec -u gvmd gvmd gvmd --user=admin --new-password=123456

4.4 改远程访问

docker-compose.yml 里:

1
2
3
4
5
6
services:
  gsa:
    ports:
      - 9392:80       # 改成 0.0.0.0:9392:80
      # 或者
      - 443:80        # 标准 HTTPS 端口

坑提醒:把 9392 直接暴露到公网极不安全——GVM 有 RCE 历史漏洞。必须走 Nginx 反代 + Basic Auth + IP 白名单。

4.5 删除环境(危险操作)

1
2
docker-compose -f docker-compose.yml -p greenbone-community-edition down -v
# -v 会删所有 volume,漏洞库、扫描结果、用户数据全清

五、gvm-check-setup 详解

跑完 gvm-setup / docker 启动后,建议跑一次:

1
sudo gvm-check-setup

典型输出(成功):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
gvm-check-setup 23.11.0
  Test completeness and readiness of GVM-23.11.0
Step 1: Checking OpenVAS (Scanner)...
        OK: OpenVAS Scanner is present in version 23.0.1.
        OK: Notus Scanner is present in version 22.6.3.
        OK: Server CA Certificate is present as /var/lib/gvm/CA/servercert.pem.
        OK: _gvm owns all files in /var/lib/openvas/gnupg
        OK: redis-server is present.
        OK: scanner (db_address setting) is configured properly using the redis-server socket
        OK: the mqtt_server_uri is defined in /etc/openvas/openvas.conf
        OK: _gvm owns all files in /var/lib/openvas/plugins
        OK: NVT collection in /var/lib/openvas/plugins contains 91760 NVTs.
        OK: The notus directory /var/lib/notus/products contains 464 NVTs.
Step 2: Checking GVMD Manager ...
        OK: GVM Manager (gvmd) is present in version 23.5.2.
...
It seems like your GVM-23.11.0 installation is OK.

NVT 数量是核心指标——9 万+ 才算健康,低于 5 万说明漏洞库同步失败。

六、典型任务:扫描一个网段

登录 Web UI 后:

  1. Configuration → Targets → New Target
    • Name: 内网服务器网段
    • Hosts: 192.168.1.0/24
    • Port List: All IANA Assigned TCP and UDP
    • Alive Test: Consider Alive
  2. Configuration → Scan Configs → 选一个基线
    • Full and fast:常用
    • Base:快,弱扫
  3. Scans → Tasks → New Task
    • Name: 季度漏扫-2023Q2
    • Target: 内网服务器网段
    • Scanner: OpenVAS Default
    • Scan Config: Full and fast
  4. Save → Start
  5. 扫描结果:Dashboard / Reports

坑提醒

  1. 第一次跑完整扫描很慢(24-48 小时,9 万 NVT × 254 个 IP)
  2. 大规模扫描分批做,避免被目标网络的 IDS/IPS 拉黑
  3. 重要业务先打招呼再扫——避免触发告警 / 业务中断

七、生产环境建议

7.1 走 Nginx 反代

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
    listen 443 ssl;
    server_name gvm.example.com;

    ssl_certificate     /etc/letsencrypt/live/gvm.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gvm.example.com/privkey.pem;

    # Basic Auth 二层密码
    auth_basic "GVM Admin";
    auth_basic_user_file /etc/nginx/.htpasswd;

    # IP 白名单
    allow 10.0.0.0/8;
    allow 192.168.0.0/16;
    deny all;

    location / {
        proxy_pass http://127.0.0.1:9392;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

7.2 走 LDAP/AD 集成

GVM 支持 LDAP 认证(22.4+),企业内网可对接 AD。

7.3 漏洞库同步策略

1
2
3
# 每天凌晨同步
crontab -e
0 3 * * * /usr/bin/greenbone-feed-sync

7.4 备份

  • apt 方式:备份 /var/lib/gvm/ /var/lib/openvas/ /etc/gvm/
  • docker 方式:备份所有命名 volume(docker volume ls

八、典型坑速查

现象原因处理
gvm-check-setup Step 1 失败 NVT 数量 < 5 万漏洞库没同步完重跑 greenbone-feed-sync
9392 端口访问不到默认只监听 127.0.0.1gsad.service 监听 0.0.0.0
扫描任务卡在 “Requested”扫描引擎没启动systemctl start ospd-openvas
忘记 admin 默认密码UUID 在 gvm-setup 输出里runuser -u _gvm -- gvmd --user=admin --new-password=...
扫描器报 “Host not alive”目标屏蔽 ICMP关掉 Alive Test 或改用 TCP ping
漏洞库同步巨慢没配代理greenbone-feed-syncHTTPS_PROXY 环境变量

九、2024+ 视角补充

本文写于 2023-04,2024-2026 期间 GVM / OpenVAS 关键演进:

  • GVM 23.x / 24.x(2024-2025):notus-scanner 重写(Rust 重写后性能 5x);ospd-openvas 升级GSA Web UI 全面重构(React 18 + TypeScript);PG 后端 PostgreSQL 15+
  • Greenbone Community Edition (GCE) 23.04+每月发版(vs 老版本 季度发版);greenbone-feed-sync 替代老的 gvm-feed-update(已 2024 全面 EOL)
  • Greenbone Enterprise Appliance (GEA):商业版 2024 强化 SaaS 化部署(cloud.greenbone.net),不再需要本地硬件
  • NVT 漏洞库 2024-20269 万+ → 11 万+ NVT(漏洞库持续增长);每天同步 Greenbone Community Feed
  • 漏洞扫描生态(2024+ 视角):
    • Nuclei 3.x(2024-2026):ProjectDiscovery 出品——YAML 模板定义扫描,社区模板市场(5000+ 模板),云原生漏洞扫描首选
    • Trivy 0.50+(2024-2025):容器 / IaC / 镜像 / 文件系统 一站式扫描,K8s 集成完善
    • Snyk / Aikido(2024):AI 辅助漏洞评估(判断是否真影响项目)
    • Tenable Nessus 10.7+(2025):AI 漏洞优先级排序云 connector(AWS / Azure / GCP)
    • Qualys VMDR 4.x(2024):云原生扫描资产清单 / 风险评分
  • AI 驱动的漏洞扫描(2024+ 趋势):用 LLM 做漏洞优先级排序(“哪些漏洞该先修”)——传统按 CVSS 排不科学,AI 结合业务上下文判断更准
  • 合规基线(2024+ 视角):CIS Benchmarks v8.0NIST 800-53 Rev 5等保 2.0 三级——GVM 内置基线持续更新

实战建议(2025-2026 视角)

  • 传统漏洞扫描GVM 24.x Community Edition(仍是开源首选)
  • 容器 / 云原生Trivy + Nuclei 黄金组合
  • 企业 / 合规Tenable Nessus Pro / Qualys VMDR(商业付费)
  • AI 辅助Snyk / Aikido(2024+ 趋势,AI 优先级排序
  • 免费 / 个人Trivy + Nuclei(开源 + 模板市场)

十、下一步

  • 想要更现代化的漏洞管理 → 上 Greenbone Enterprise(商业版)/ Tenable Nessus(闭源老大)/ Qualys VMDR
  • 想做基线合规扫描 → GVM 内置 CIS / PCI DSS Level 1 基线
  • 想做大规模分布式扫描 → Greenbone Enterprise Appliance 多节点集群
  • 想做自定义漏洞检测 → 写 NASL(NVT 脚本语言)
  • 想要容器 / 云原生漏洞扫描 → Trivy + Nuclei 黄金组合

参考资料

使用 Hugo 构建
主题 StackJimmy 设计