---
created: "2026-03-08"
type: resource
tags:
  - resource
  - 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=<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 <PASSWORD> \
    socket --socketpath /run/gvmd/gvmd.sock \
    --xml '<get_tasks/>'

# 列出所有 target
gvm-cli --gmp-username admin --gmp-password <PASSWORD> \
    socket --socketpath /run/gvmd/gvmd.sock \
    --xml '<get_targets/>'
```

## 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 <service>` 查看错误 |
| 磁盘空间不足 | `df -h` 检查；清理旧报告和 Docker 无用镜像 `sudo docker system prune` |

## Related

- [[PVE Security Scanner]] - 部署文档和安全架构
- [[Security Best Practices]]
