GVM/OpenVAS 漏洞扫描部署教程

GVM(Greenbone Vulnerability Management)是 OpenVAS 的后续版本,是目前最流行的开源漏洞扫描平台。它拥有超过 10 万条漏洞测试(NVT),能够全面检测系统和网络中的安全漏洞。本文将介绍如何在搬瓦工 VPS 上通过 Docker 快速部署 GVM,并创建扫描任务进行安全评估。

一、GVM 架构概述

GVM 由多个组件构成:

  • OpenVAS Scanner:实际执行漏洞扫描的引擎。
  • GVM Daemon(gvmd):核心管理服务,负责任务调度和数据存储。
  • GSA(Greenbone Security Assistant):Web 管理界面。
  • PostgreSQL:数据库,存储扫描结果和配置。
  • Redis:用于 OpenVAS Scanner 的缓存。
  • Notus Scanner:本地安全检查引擎。

二、系统要求

  • 内存:至少 4GB,建议 8GB(NVT 数据库非常大)。
  • 磁盘:至少 20GB 可用空间。
  • CPU:至少 2 核,建议 4 核。
  • Docker:需要预先安装 Docker 和 Docker Compose。

GVM 对资源需求较高,建议选择搬瓦工 4GB 以上内存的方案。如尚未购买,可参考全部方案,使用优惠码 NODESEEK2026 享受 6.77% 折扣。Docker 安装可参考Docker 安装教程

三、Docker Compose 部署

3.1 创建项目目录

mkdir -p /opt/gvm
cd /opt/gvm

3.2 创建 docker-compose.yml

cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  vulnerability-tests:
    image: greenbone/vulnerability-tests
    environment:
      STORAGE_PATH: /var/lib/openvas/22.04/vt-data/nasl
    volumes:
      - vt_data_vol:/mnt

  notus-data:
    image: greenbone/notus-data
    volumes:
      - notus_data_vol:/mnt

  scap-data:
    image: greenbone/scap-data
    volumes:
      - scap_data_vol:/mnt

  cert-bund-data:
    image: greenbone/cert-bund-data
    volumes:
      - cert_data_vol:/mnt

  dfn-cert-data:
    image: greenbone/dfn-cert-data
    volumes:
      - cert_data_vol:/mnt

  data-objects:
    image: greenbone/data-objects
    volumes:
      - data_objects_vol:/mnt

  redis-server:
    image: greenbone/redis-server
    restart: on-failure
    volumes:
      - redis_socket_vol:/run/redis/

  pg-gvm:
    image: greenbone/pg-gvm:stable
    restart: on-failure
    volumes:
      - psql_data_vol:/var/lib/postgresql
      - psql_socket_vol:/var/run/postgresql

  gvmd:
    image: greenbone/gvmd:stable
    restart: on-failure
    volumes:
      - gvmd_data_vol:/var/lib/gvm
      - scap_data_vol:/var/lib/gvm/scap-data/
      - cert_data_vol:/var/lib/gvm/cert-data
      - data_objects_vol:/var/lib/gvm/data-objects/gvmd
      - vt_data_vol:/var/lib/openvas/plugins
      - psql_socket_vol:/var/run/postgresql
      - gvmd_socket_vol:/run/gvmd
    depends_on:
      - pg-gvm

  gsa:
    image: greenbone/gsa:stable
    restart: on-failure
    ports:
      - "9392:80"
    volumes:
      - gvmd_socket_vol:/run/gvmd
    depends_on:
      - gvmd

  ospd-openvas:
    image: greenbone/ospd-openvas:stable
    restart: on-failure
    hostname: ospd-openvas.local
    cap_add:
      - NET_ADMIN
      - NET_RAW
    security_opt:
      - seccomp=unconfined
      - apparmor=unconfined
    volumes:
      - gpg_data_vol:/etc/openvas/gnupg
      - vt_data_vol:/var/lib/openvas/plugins
      - notus_data_vol:/var/lib/notus
      - ospd_openvas_socket_vol:/run/ospd
      - redis_socket_vol:/run/redis/
    depends_on:
      - redis-server

  notus-scanner:
    image: greenbone/notus-scanner:stable
    restart: on-failure
    volumes:
      - notus_data_vol:/var/lib/notus
      - gpg_data_vol:/etc/openvas/gnupg
    depends_on:
      - ospd-openvas

volumes:
  vt_data_vol:
  notus_data_vol:
  scap_data_vol:
  cert_data_vol:
  data_objects_vol:
  psql_data_vol:
  psql_socket_vol:
  gvmd_data_vol:
  gvmd_socket_vol:
  ospd_openvas_socket_vol:
  redis_socket_vol:
  gpg_data_vol:
EOF

3.3 启动服务

docker compose up -d

首次启动需要下载大量数据(NVT、SCAP、CERT 数据),可能需要 30-60 分钟。可以通过以下命令查看进度:

docker compose logs -f

四、初始配置

4.1 设置管理员密码

docker compose exec -u gvmd gvmd gvmd --user=admin --new-password=YourStrongPassword

4.2 访问 Web 界面

在浏览器中打开 http://YOUR_VPS_IP:9392,使用以下凭据登录:

  • 用户名:admin
  • 密码:上一步设置的密码

4.3 检查数据同步状态

# 检查 NVT 数据
docker compose exec -u gvmd gvmd greenbone-feed-sync --type nvt

# 检查 SCAP 数据
docker compose exec -u gvmd gvmd greenbone-feed-sync --type scap

# 检查 CERT 数据
docker compose exec -u gvmd gvmd greenbone-feed-sync --type cert

所有数据同步完成后才能获得完整的扫描能力。

五、创建扫描任务

5.1 创建目标

在 GSA Web 界面中,导航到 Configuration > Targets,点击新建按钮,填写:

  • Name:为目标起一个名称
  • Hosts:输入要扫描的 IP 地址或域名
  • Port List:选择端口范围(如 All IANA assigned TCP and UDP)

5.2 创建扫描任务

导航到 Scans > Tasks,点击新建,配置:

  • Name:任务名称
  • Scan Targets:选择上面创建的目标
  • Scanner:选择 OpenVAS Default
  • Scan Config:选择扫描深度(Full and fast 为推荐配置)

5.3 运行扫描

创建完成后点击任务旁边的播放按钮启动扫描。扫描时间取决于目标范围和端口数量,通常需要几十分钟到几小时不等。

六、扫描报告解读

扫描完成后可以在 Scans > Reports 查看报告。漏洞按严重程度分为:

  • High(高危):CVSS 评分 7.0-10.0,需要立即修复。
  • Medium(中危):CVSS 评分 4.0-6.9,建议尽快修复。
  • Low(低危):CVSS 评分 0.1-3.9,可以计划修复。
  • Log:信息性发现,不一定是漏洞。

每条漏洞记录都包含详细的描述、影响范围和修复建议,按照建议逐一处理即可。

七、定时扫描

在创建任务时可以设置定时执行:

  • 在任务设置中选择 Schedule,点击新建
  • 设置扫描频率(每天、每周或每月)
  • 设置开始时间(建议选择低峰时段)

定时扫描可以帮助持续监控系统安全状态,及时发现新出现的漏洞。

八、安全加固建议

GVM 本身包含敏感的扫描数据,需要做好安全防护:

# 限制 GSA 端口只允许特定 IP 访问
iptables -A INPUT -p tcp --dport 9392 -s YOUR_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 9392 -j DROP

或者使用 Nginx 反向代理加上 HTTPS 和认证。

九、维护与更新

# 更新所有容器镜像
docker compose pull

# 重新启动服务
docker compose up -d

# 手动同步漏洞数据
docker compose exec -u gvmd gvmd greenbone-feed-sync --type nvt
docker compose exec -u gvmd gvmd greenbone-feed-sync --type scap
docker compose exec -u gvmd gvmd greenbone-feed-sync --type cert

建议每周至少同步一次漏洞数据库,确保能检测到最新的漏洞。

十、常见问题

Web 界面无法访问

检查容器运行状态和端口映射:

docker compose ps
docker compose logs gsa

确认防火墙已开放 9392 端口。

扫描结果为空

通常是因为 NVT 数据尚未同步完成。检查 gvmd 日志确认数据同步进度:

docker compose logs gvmd | grep -i "sync\|feed\|update"

总结

GVM/OpenVAS 是功能最全面的开源漏洞扫描平台,能够帮助你全面评估搬瓦工 VPS 的安全状况。虽然资源需求较高,但通过 Docker 部署可以大大简化安装过程。定期扫描并修复发现的漏洞,是保障服务器安全的重要措施。更多安全工具可参考 Nuclei 漏洞扫描Nmap 网络扫描教程。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受折扣。技术问题可通过搬瓦工官网提交工单。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。