本文目录导读:

《Nessus漏洞扫描实战指南:从安装到自动化报告的全流程解析》
目录导读
- Nessus漏洞扫描核心价值与适用场景
- 环境准备与安装部署(Windows/Linux双平台)
- 首次扫描配置:目标、策略与凭证设置
- 扫描结果分析与漏洞分级解读
- 常见问题问答(FAQ)
- 进阶技巧:定时扫描与报告自动化
Nessus漏洞扫描核心价值与适用场景
Nessus由Tenable公司开发,是目前企业最广泛使用的漏洞扫描工具之一,其核心价值在于能够自动探测网络资产中的安全弱点,包括系统补丁缺失、弱口令、服务配置错误、Web应用漏洞等,并提供可操作的修复建议。
适用场景包括:
- 企业内网安全基线检查
- 合规审计(如等级保护、PCI-DSS)
- 新系统上线前安全评估
- 云环境与容器化部署的持续监控
与OpenVAS或Qualys相比,Nessus的优势在于插件库更新快(每周超10万条签名)、扫描速度快且误报率较低,同时支持自定义策略与API集成。
环境准备与安装部署
1 系统要求
- 支持平台:Windows Server 2016+、Ubuntu 18.04/20.04、CentOS 7/8、RHEL 8+
- 硬件最低需求:2核CPU、4GB内存、20GB磁盘空间(推荐4核/8GB/100GB)
- 网络要求:目标主机必须能与Nessus服务器建立TCP连接(扫描端口通常为默认的8834)
2 安装步骤(以Ubuntu为例)
# 1. 下载Nessus(请替换最新版本号) wget https://www.tenable.com/downloads/nessus/Nessus-10.7.0-ubuntu1804_amd64.deb # 2. 安装依赖 sudo apt update && sudo apt install -y dpkg # 3. 安装Nessus sudo dpkg -i Nessus-10.7.0-ubuntu1804_amd64.deb # 4. 启动服务 sudo systemctl start nessusd.service sudo systemctl enable nessusd.service # 5. 访问Web控制台 # 浏览器打开 https://<主机IP>:8834 # 首次访问需注册Tenable账户获取激活码
注意:Windows安装只需运行.msi安装包,安装完成后系统会提示重启,重启后通过浏览器访问即可。
首次扫描配置:目标、策略与凭证设置
1 创建扫描策略
输入以下关键参数:
- Name:自定义名称,如“Production-Server-Scan”
- Template:若扫描内网Windows/Linux服务器,选择“Advanced Scan”;若扫描Web应用,选择“Web Application Tests”
- Targets:支持单IP、IP段(如192.168.1.0/24)或域名列表,每行一个目标
- Credentials(凭证):具备管理员权限的账号密码(Linux需要root或sudo权限,Windows需要Local Administrator),凭证可大幅提升扫描深度
2 扫描配置最佳实践
- 端口扫描:建议选择“All Ports”(全端口)或“Common Ports”(服务常用端口)
- 扫描速度:生产环境建议使用“Normal”(正常)或“Polite”(礼貌)模式,避免对业务产生影响
- 排除列表:填写不需要扫描的IP(如网络打印机、备份服务器)
3 执行扫描
点击“Launch”按钮,扫描进度可在“Scans”页查看,扫描完成后系统自动生成结果。
扫描结果分析与漏洞分级解读
Nessus将漏洞按严重程度分为四级:
| 等级 | 颜色 | 含义 | 示例 |
|---|---|---|---|
| Critical | 红 | 立刻修复 | 远程代码执行、默认管理员口令 |
| High | 橙 | 尽快修复 | SQL注入点、弱SSL加密套件 |
| Medium | 黄 | 计划修复 | 服务信息泄露、非必要端口开放 |
| Low | 蓝 | 可选修复 | 未捕获日志记录、TLS版本不推荐 |
分析步骤:
- 优先处理Critical/High漏洞,点击漏洞名查看“Description(描述)”、“Solution(解决方案)”和“Plugin Output(取证输出)”。
- 利用“Risk Information”了解CVSS评分。
- 使用“Hosts”视图按IP过滤,避免重复修复。
小提示:误报处理可将该漏洞标记为“Accept Risk”并添加理由,避免下次扫描再次报警。
常见问题问答(FAQ)
Q1:Nessus扫描会影响业务吗?
A:使用默认配置可能触发WAF阻断或对老旧设备造成性能压力,建议在非峰值时段扫描,并开启“Perform safe checks”选项,如需扫描关键业务,建议导入白名单并启用“Stress test”为Disabled。
Q2:为什么不提供凭证就无法检测到某些漏洞?
A:无凭证扫描只能进行“黑盒”检测(如开放端口、Web路径爆破等),凭证扫描可以登录系统检查注册表、补丁安装状态、本地用户权限等,发现更多配置类漏洞(如弱口令、SMB共享配置错误)。
Q3:扫描结果导出为PDF后格式混乱怎么办?
A:在Nessus报告模板中选择“Executable Summary”,然后导出为HTML或CSV格式更易于阅读,也可使用API导出JSON后再用Python脚本美化。
Q4:Nessus免费版有哪些限制?
A:Nessus Essentials(免费版)限制只能扫描16个IP地址,不支持多用户协作、不提供报告排程,且部分高级插件(如Active Directory审计)受限。
Q5:扫描报告中的“Plugin 00000 timeout”是什么意思?
A:表示某个插件因网络延迟、目标主机防火墙截断Nessus连接或系统负载过高而超时,可通过调整“Plugin”设置中的超时值(默认60秒)或先进行端口开放检测来解决。
进阶技巧:定时扫描与报告自动化
1 设置定时扫描
- 点击“Policies” → “New Policy” → “Advanced Scan”。
- 在“Schedule”选项卡勾选“Enable Scheduled Scan”。
- 选择“每天/每周/每月”并指定具体时间(推荐每周日凌晨3点)。
- 作用范围选择“All Scans”或特定策略。
2 使用API自动生成报告
Nessus提供了RESTful API,可用Python实现自动化:
import requests
access_key = "YOUR_ACCESS_KEY"
secret_key = "YOUR_SECRET_KEY"
nessus_host = "https://192.168.1.100:8834"
headers = {
"X-ApiKeys": f"accessKey={access_key}; secretKey={secret_key}",
"Content-Type": "application/json"
}
# 导出最新扫描结果为JSON
scan_id = "123"
export_url = f"{nessus_host}/scans/{scan_id}/export"
response = requests.post(export_url, headers=headers)
# 获取下载链接并保存
token = response.json()["token"]
download_url = f"{nessus_host}/tokens/{token}/download"
report = requests.get(download_url, headers=headers)
with open("scan_result.json", "w") as f:
f.write(report.text)
3 报告差异化对比
安排两次扫描(如月初和月尾),使用“Compare Scans”功能可直观显示新增、已修复或重复出现的漏洞。