--- created: "2026-03-08" type: resource tags: - security - openvas - vulnerability-scanning - homelab --- # OpenVAS Usage Guide Greenbone OpenVAS 漏洞扫描平台使用指南。基于 Greenbone Community Edition,部署在 [[PVE Security Scanner]] 上。 ## Access | Item | Value | |------|-------| | URL | `https://192.168.68.84` | | Backup URL | `https://192.168.68.84:9392` | | Username | `admin` | | Certificate | Self-signed (浏览器需接受警告) | ## Core Concepts | Concept | Description | |---------|-------------| | **Target** | 扫描目标,可以是单个 IP、IP 范围、子网 (CIDR) | | **Port List** | 要扫描的端口集合 (默认提供 All TCP, Top 100, Top 1000 等) | | **Scan Config** | 扫描策略,控制检测深度和范围 | | **Task** | 将 Target + Scan Config 组合成一个可执行的扫描任务 | | **Report** | 扫描结果报告,包含发现的漏洞和风险评级 | | **Schedule** | 定时执行扫描任务 | | **Alert** | 扫描完成后的通知动作 (邮件、HTTP 回调等) | | **NVT** | Network Vulnerability Test,单个漏洞检测脚本 | | **CVE** | 公共漏洞编号,OpenVAS 关联 CVE 数据库 | | **CVSS** | 漏洞评分标准 (0-10),用于风险评级 | ## Scan Configs (扫描策略) | Config | Speed | Depth | Use Case | |--------|-------|-------|----------| | **Discovery** | Fast | Low | 仅发现主机和服务,不做漏洞检测 | | **Host Discovery** | Very Fast | Minimal | 只检测主机是否存活 | | **System Discovery** | Fast | Low | 发现操作系统和服务版本 | | **Base** | Medium | Medium | 基础漏洞扫描,不含危险测试 | | **Full and fast** | Medium | High | 完整扫描,跳过慢速 NVT (推荐日常使用) | | **Full and deep** | Slow | Very High | 深度扫描,包含所有 NVT | | **Full and deep ultimate** | Very Slow | Maximum | 包含可能导致服务中断的测试 (慎用) | ## Quick Start: First Scan ### Step 1: Create Target 1. Menu: **Configuration** -> **Targets** 2. Click **New Target** (左上角星号图标) 3. Fill in: - **Name**: `Internal Network` (或具体名称) - **Hosts**: `192.168.68.0/24` (或单个 IP) - **Port List**: 选择 `All TCP and Nmap top 100 UDP` 4. Click **Save** ### Step 2: Create Task 1. Menu: **Scans** -> **Tasks** 2. Click **New Task** (左上角星号图标) 3. Fill in: - **Name**: `Internal Network Scan` - **Scan Targets**: 选择刚创建的 Target - **Scanner**: `OpenVAS Default` - **Scan Config**: 选择策略 (建议首次用 `Full and fast`) 4. Click **Save** ### Step 3: Run Scan 1. 在 Task 列表中找到刚创建的任务 2. 点击绿色 **Start** 按钮 (播放图标) 3. Status 会从 `New` -> `Requested` -> `Running` -> `Done` 4. 扫描时间取决于目标数量和策略: - 单台主机 Full and fast: 10-30 分钟 - /24 子网 Full and fast: 2-8 小时 ### Step 4: View Report 1. Task 完成后,点击 **Last Report** 日期链接 2. 报告页面展示所有发现的漏洞 3. 按 Severity 排序查看高危漏洞 ## Report Reading ### Severity Levels | Level | CVSS | Color | Action | |-------|------|-------|--------| | **Critical** | 9.0-10.0 | Purple | 立即修复 | | **High** | 7.0-8.9 | Red | 尽快修复 | | **Medium** | 4.0-6.9 | Orange | 计划修复 | | **Low** | 0.1-3.9 | Blue | 评估后决定 | | **Log** | N/A | Grey | 信息收集,无需操作 | ### Report Sections - **Results**: 所有发现的漏洞列表 - **Hosts**: 按主机分组的结果 - **Operating Systems**: 检测到的操作系统 - **Applications**: 检测到的应用程序 - **TLS Certificates**: SSL/TLS 证书信息 - **Error Messages**: 扫描过程中的错误 ### Export Report 1. 打开 Report 2. 左上角下拉选择格式: - **PDF** - 适合分享和存档 - **CSV** - 适合数据分析 - **XML** - 适合导入其他工具 - **TXT** - 纯文本摘要 3. Click download icon ## Common Scan Scenarios ### Scenario 1: Scan Single Server **Target**: `192.168.68.31` (PostgreSQL server) **Config**: `Full and fast` **Port List**: `All TCP and Nmap top 100 UDP` 重点关注: - PostgreSQL 版本漏洞 - SSH 配置问题 - 系统补丁缺失 ### Scenario 2: Scan Entire Network **Target**: `192.168.68.0/24` **Config**: `Full and fast` **Port List**: `All TCP and Nmap top 100 UDP` 首次扫描建议在非工作时间进行,扫描会产生较大网络流量。 ### Scenario 3: Web Application Scan **Target**: Web 服务器 IP **Config**: `Full and deep` **Port List**: `All TCP` 重点关注: - HTTP 相关漏洞 (XSS, SQL injection, CSRF) - TLS 配置 (弱加密、过期证书) - Web 服务器版本泄露 ### Scenario 4: Compliance Check **Target**: 所有关键服务器 **Config**: `Full and fast` 对照报告检查: - 是否有默认密码 - 是否有未打补丁的服务 - 是否有不安全的协议 (telnet, FTP, SSLv3) ## Scheduled Scans ### Create Schedule 1. Menu: **Configuration** -> **Schedules** 2. Click **New Schedule** 3. Fill in: - **Name**: `Weekly Internal Scan` - **First Run**: 选择开始时间 (建议非工作时间,如周日凌晨 2:00) - **Period**: `1 week` - **Duration**: 留空 (无时间限制) 4. Click **Save** ### Assign Schedule to Task 1. Edit existing Task 2. **Schedule** 字段选择刚创建的 Schedule 3. Save Task 会按计划自动执行,报告自动生成。 ## Alerts (通知) ### Email Alert 1. Menu: **Configuration** -> **Alerts** 2. Click **New Alert** 3. Fill in: - **Name**: `High Severity Email` - **Event**: `Task run status changed` -> `Done` - **Condition**: `Severity at least` -> `7.0` (High) - **Method**: `Email` - **To Address**: 你的邮箱 - **From Address**: `scanner@localhost` 4. Click **Save** 5. 在 Task 中关联此 Alert Note: 需要配置 VM 的 SMTP 发送邮件。 ## Credential Scans (认证扫描) 认证扫描可以检测更多漏洞(如本地提权、软件版本),因为扫描器可以登录目标系统。 ### Create SSH Credential 1. Menu: **Configuration** -> **Credentials** 2. Click **New Credential** 3. Fill in: - **Name**: `Linux SSH Scan` - **Type**: `Username + SSH Key` 或 `Username + Password` - **Username**: 目标系统的用户名 - **Password/Key**: 对应的认证信息 - **Auto Generate**: No 4. Click **Save** ### Use in Target 1. Edit Target 2. **SSH Credential** 字段选择创建的 Credential 3. Save 认证扫描会发现更多漏洞(如未打补丁的本地包、内核漏洞)。 ## Performance Tips | Tip | Effect | |-----|--------| | 缩小端口范围 | 减少扫描时间 | | 用 `Full and fast` 而非 `Full and deep` | 快 2-5x,覆盖 90% 漏洞 | | 分段扫描大网络 | 避免超时和资源耗尽 | | 避免工作时间扫描 | 减少对生产环境影响 | | 定期更新 Feed | 保持漏洞库最新 | ## Maintenance ### Update Vulnerability Feed Feed 自动通过 Docker 容器更新。手动触发: ```bash ssh kai@192.168.68.84 cd /opt/greenbone sudo docker compose pull sudo docker compose up -d ``` ### Check Feed Status Web UI: **Administration** -> **Feed Status** | Feed | Description | |------|-------------| | NVT | 漏洞检测脚本 (最重要) | | SCAP | CVE/CPE 数据 | | CERT | 安全公告 | | GVMD_DATA | 扫描策略和端口列表 | 所有 Feed 应显示 `Current`。如果显示 `Update in progress`,等待同步完成。 ### Backup ```bash # 备份所有 Docker volumes ssh kai@192.168.68.84 cd /opt/greenbone sudo docker compose down sudo tar czf /tmp/greenbone-backup-$(date +%Y%m%d).tar.gz \ /var/lib/docker/volumes/greenbone-community-edition_* sudo docker compose up -d ``` ### Reset Admin Password ```bash ssh kai@192.168.68.84 cd /opt/greenbone sudo docker compose exec -u gvmd gvmd gvmd --user=admin --new-password= ``` ## Report Workflow (报告使用流程) ### Priority Matrix | Priority | CVSS | Example | Timeline | Action | |----------|------|---------|----------|--------| | **Critical** | 9.0-10.0 | 远程代码执行、默认密码、未授权访问 | 24h 内 | 立即修复 | | **High** | 7.0-8.9 | 本地提权、敏感信息泄露、SQL 注入 | 1 周内 | 尽快修复 | | **Medium** | 4.0-6.9 | 弱加密、软件版本过旧、TLS 配置不当 | 1 月内 | 排期修复 | | **Low** | 0.1-3.9 | 信息收集、Banner 暴露、非敏感信息泄露 | 按需 | 评估后决定 | ### Step-by-Step Workflow **Step 1: Export Report** - 打开 Report -> 左上角选择格式 - 导出 **PDF** (存档分享) + **CSV** (数据分析) - 建议按日期归档: `scans/2026-03-09-full-network.pdf` **Step 2: Triage by Host** - 点 **Hosts** 标签,按漏洞数量排序 - 识别问题最多的主机,优先处理 **Step 3: Analyze Vulnerabilities** - 点进具体漏洞,关注以下字段: - **Summary**: 漏洞描述(是什么) - **Impact**: 被利用后的影响(为什么要修) - **Solution**: 修复建议(怎么修)-- 最有价值的部分 - **CVE Reference**: 关联的 CVE 编号(可查详细信息) - **Affected Software/OS**: 受影响的软件版本 **Step 4: Create Remediation Plan** - 按优先级为每个 Critical/High 漏洞创建修复任务 - 记录:主机 IP、漏洞名称、CVE、修复方案、负责人 - Medium 漏洞汇总为批量修复任务(如统一升级某软件) **Step 5: Fix and Rescan** - 修复完成后,对同一 Target 重新扫描 - 对比两次 Report,确认漏洞已消除 - Web UI: **Scans** -> **Reports** 可以看历史趋势 ### Recurring Scan Process 建议建立周期性扫描流程: ``` 周日凌晨 2:00 自动全网扫描 (OpenVAS Schedule) | 周一上午 查看报告,按优先级分类 | 周一-周五 修复 Critical 和 High 漏洞 | 下周日 自动复扫,对比改善情况 | 每月最后一周 导出月度报告,归档存储 ``` Setup: **Configuration** -> **Schedules** -> 创建 Weekly Schedule (Sunday 02:00) ### Report Comparison (趋势分析) 跟踪安全改善情况: | Metric | How to Track | |--------|-------------| | Critical/High 漏洞数量变化 | 每周报告对比 | | 平均修复时间 | 记录发现日期和修复日期 | | 新增 vs 已修复 | 对比相邻两次扫描 | | 最高风险主机 | 按 Host 的 Severity Score 排序 | ### Common Findings and Fixes | Finding | Typical Fix | |---------|------------| | SSH weak algorithms | 更新 `/etc/ssh/sshd_config` 加密套件 | | SSL/TLS outdated | 升级到 TLS 1.2+,禁用弱密码套件 | | Default credentials | 修改默认密码,禁用默认账户 | | Missing patches | `apt upgrade` / 系统补丁更新 | | Open unnecessary ports | 关闭不需要的服务,配置防火墙 | | HTTP without HTTPS | 配置 TLS 证书,强制 HTTPS 重定向 | | SMBv1 enabled | 禁用 SMBv1,启用 SMBv2/v3 | | SNMP public community | 修改 community string 或禁用 SNMP | ## CLI Access (gvm-tools) 除了 Web UI,也可以通过命令行操作: ```bash ssh kai@192.168.68.84 cd /opt/greenbone # 进入 gvm-tools 容器 sudo docker compose exec gvm-tools bash # 列出所有 task gvm-cli --gmp-username admin --gmp-password \ socket --socketpath /run/gvmd/gvmd.sock \ --xml '' # 列出所有 target gvm-cli --gmp-username admin --gmp-password \ socket --socketpath /run/gvmd/gvmd.sock \ --xml '' ``` ## Troubleshooting | Problem | Solution | |---------|----------| | Web UI 打不开 | `sudo docker compose ps` 检查容器状态 | | 登录失败 | Reset admin password (见上方) | | Feed 一直 updating | 首次同步需 30-60 分钟,耐心等待 | | 扫描卡在 Requested | 检查 ospd-openvas 容器日志: `sudo docker compose logs ospd-openvas` | | 扫描结果为空 | 确认 Feed 已同步完成;检查目标网络是否可达 | | 只扫到本机 | ospd-openvas 需要 `network_mode: host` 才能到达局域网 | | Feed is syncing | 漏洞库同步中,等几分钟到半小时,Feed Status 全部 Current 后再扫 | | 扫描速度很慢 | 减少目标范围;使用 `Full and fast` 策略 | | 容器反复重启 | `sudo docker compose logs ` 查看错误 | | 磁盘空间不足 | `df -h` 检查;清理旧报告和 Docker 无用镜像 `sudo docker system prune` | ## Related - [[PVE Security Scanner]] - 部署文档和安全架构 - [[Security Best Practices]]