Files
knowledge-base/4 - Resources/OpenVAS Usage Guide.md
Yaojia Wang ad79665527 Sync
2026-03-14 20:23:32 +01:00

404 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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=<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]]