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 可享受折扣。技术问题可通过搬瓦工官网提交工单。