| name | scanning-infrastructure-with-nessus |
| description | Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。 |
| domain | cybersecurity |
| subdomain | vulnerability-management |
| tags | ["vulnerability-management","cve","nessus","tenable","infrastructure-scanning","risk"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 Nessus 扫描基础设施
概述
Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。本技能涵盖配置扫描策略、运行认证和未认证扫描、解读结果,以及将 Nessus 集成到持续漏洞管理工作流中。
前置条件
- 已安装并激活 Nessus Professional 或 Essentials 许可证
- 目标系统的网络访问权限(防火墙规则允许扫描器 IP)
- 用于认证扫描的管理员凭据
- 了解 TCP/IP 网络和常见服务
- 扫描目标环境的书面授权
核心概念
Nessus 架构
Nessus 作为客户端-服务器应用程序运行,Nessus 扫描引擎在主机系统上以服务(nessusd)形式运行。它使用基于插件的架构,拥有超过 200,000 个插件,由 Tenable 研究团队每周更新。每个插件测试特定漏洞、错误配置或合规性检查。
扫描类型
- 主机发现 - 使用 ICMP、TCP、UDP 和 ARP 识别存活主机
- 基础网络扫描 - 覆盖常见漏洞的默认策略
- 高级扫描 - 可精细选择插件的自定义策略
- 认证补丁审计 - 检查已安装补丁的认证扫描
- Web 应用测试 - 扫描 Web 特定漏洞
- 合规审计 - 对照 CIS、DISA STIG、PCI DSS 基准检查
插件族
Nessus 将插件组织为以下族:
- 操作系统:Windows、Linux、macOS、Solaris
- 网络设备:Cisco、Juniper、Palo Alto、Fortinet
- Web 服务器:Apache、Nginx、IIS、Tomcat
- 数据库:Oracle、MySQL、PostgreSQL、MSSQL
- 服务:DNS、SMTP、FTP、SSH、SNMP
工作流程
步骤 1:初始配置
sudo systemctl start nessusd
sudo systemctl enable nessusd
/opt/nessus/sbin/nessuscli update --all
/opt/nessus/sbin/nessuscli fix --list
/opt/nessus/sbin/nessuscli update --plugins-only
步骤 2:创建扫描策略
通过 Nessus Web UI(https://localhost:8834)配置自定义扫描策略:
- 导航至"策略" > "新建策略" > "高级扫描"
- 配置常规设置:名称、描述、目标
- 设置发现设置:
- 主机发现:Ping 方法(ICMP、TCP SYN 端口 22、80、443)
- 端口扫描:对常用端口或全部 65535 端口进行 SYN 扫描
- 服务发现:探测所有端口以发现服务
- 配置评估设置:
- 精度:覆盖正常精度(减少假阳性)
- Web 应用:如果扫描 Web 服务器则启用
- 选择与目标环境相关的插件族
步骤 3:配置凭据
对于认证扫描,在"凭据"选项卡下配置凭据:
- SSH:用户名/密码或 SSH 密钥对
- Windows:通过 SMB、WMI 的域凭据
- SNMP:社区字符串(v1/v2c)或 USM 凭据(v3)
- 数据库:Oracle、MySQL、PostgreSQL 连接字符串
- VMware:vCenter 或 ESXi 凭据
步骤 4:运行扫描
# 通过 curl 使用 Nessus REST API
# 认证并获取令牌
curl -k -X POST https://localhost:8834/session \
-d '{"username":"admin","password":"password"}' \
-H "Content-Type: application/json"
# 创建扫描
curl -k -X POST https://localhost:8834/scans \
-H "X-Cookie: token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"uuid": "<TEMPLATE_UUID>",
"settings": {
"name": "基础设施扫描 Q1",
"text_targets": "192.168.1.0/24",
"enabled": true,
"launch": "ON_DEMAND"
}
}'
# 启动扫描
curl -k -X POST https://localhost:8834/scans/<SCAN_ID>/launch \
-H "X-Cookie: token=<TOKEN>"
# 检查扫描状态
curl -k -X GET https://localhost:8834/scans/<SCAN_ID> \
-H "X-Cookie: token=<TOKEN>"
步骤 5:分析结果
Nessus 按严重性对发现进行分类:
- 严重(CVSS 9.0-10.0):需要立即修复
- 高(CVSS 7.0-8.9):在 7-14 天内修复
- 中(CVSS 4.0-6.9):在 30 天内修复
- 低(CVSS 0.1-3.9):在下次维护窗口期修复
- 信息性:无需立即操作
步骤 6:导出和报告
curl -k -X POST "https://localhost:8834/scans/<SCAN_ID>/export" \
-H "X-Cookie: token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"format":"nessus"}'
最佳实践
- 在维护窗口期安排扫描以最小化对生产环境的影响
- 使用认证扫描可多检测 45-60% 的漏洞
- 从激进扫描中排除脆弱系统(医疗设备、旧版 SCADA)
- 为不同网络分段维护单独的扫描策略
- 每次扫描前更新插件以捕获最新披露的 CVE
- 上报修复团队前手动验证关键发现
- 实施扫描结果趋势分析以跟踪修复进度
- 在 Tenable.sc 或 Tenable.io 中存储扫描结果以进行集中管理
常见陷阱
- 仅运行未认证扫描(遗漏 45-60% 的漏洞)
- 未经书面授权扫描(法律和道德违规)
- 忽视扫描对生产系统的性能影响
- 未调整插件导致过多假阳性
- 启动扫描前未验证扫描器网络连通性
- 未针对环境定制即使用默认扫描策略
相关技能
- performing-authenticated-vulnerability-scan
- prioritizing-vulnerabilities-with-cvss-scoring
- implementing-continuous-vulnerability-monitoring
- performing-network-vulnerability-assessment