4. 扫描策略设计基础

一次 Nessus 扫描并不是“填个 IP 就开跑”的单动作,而是由四个前后衔接的阶段组成:主机发现(Host Discovery)、端口扫描(Port Scanning)、服务识别(Service Identification)和漏洞检测(Vulnerability Detection)。每个阶段都有自己的配置项,也都有自己的时间成本。策略设计的本质,是在“扫得全”和“扫得快”之间找到与当前任务匹配的平衡点。

四个阶段各自在做什么

主机发现回答的是“哪些 IP 是活的”。Nessus 默认会先做一轮存活探测,常用手段包括 ICMP Echo、TCP SYN 到常见端口(如 80、443、22)、TCP ACK 以及 ARP(同网段时)。如果目标主机禁 ping 或防火墙丢弃 ICMP,仅靠 ICMP 就会漏掉它。此时可启用“不依赖 ICMP 的发现”,或直接关闭主机发现、对所有目标做端口扫描——代价是扫描量成倍增加。

端口扫描回答的是“活主机上哪些端口开着”。Nessus 提供两种端口范围策略:一是只扫常见端口(如内置的 common ports 列表),二是自定义范围(如 1-65535 全端口)。全端口扫描能发现非标准端口上的服务,但单主机耗时可能从几十秒上升到数分钟。

服务识别回答的是“这个端口后面跑的是什么”。Nessus 会发送探测报文,结合 banner、响应特征和版本指纹判断服务类型与版本,例如识别出 8080 端口上是 Apache Tomcat 9.0.x 而非普通 HTTP。识别越精确,后续漏洞检测越有针对性。

漏洞检测回答的是“这个服务存在哪些已知问题”。Nessus 根据识别结果匹配插件(Plugin),执行对应的检测逻辑。插件数量、目标服务数量、超时设置共同决定了这一阶段的耗时。

性能权衡的核心变量

影响扫描速度的主要参数有四个:最大并发主机数(Max Hosts)、每主机最大并发检查数(Max Checks Per Host)、网络超时(Timeout)和重试次数。并发越高,单位时间扫描的主机越多,但对网络设备、目标主机和 Nessus 自身资源压力越大,容易触发丢包或误判。超时设得太短,慢速服务会被判为“未响应”,导致漏报;设得太长,遇到不可达目标时会长时间挂起。

一个实用的经验是:在稳定的内网环境中,可适当提高并发(如 Max Hosts 设为 20~30),超时保持默认或略降;在跨广域网或对稳定性要求高的生产网中,应降低并发、放宽超时,宁可慢一些也要保证结果可信。

扫描策略配置示例

下面是一份面向“内网常规资产盘点”的 Nessus 策略参数示例,可作为起点再按实际环境调整:

策略名称:内网资产盘点-标准
主机发现:启用,使用 TCP SYN(80,443,22) + ICMP
端口范围:自定义 1-1024, 3306, 3389, 6379, 8080, 8443
服务识别:启用(精确识别)
漏洞检测:启用,排除 DoS 类插件
最大并发主机数:25
每主机最大并发检查数:10
网络超时:5 秒
重试次数:2
扫描窗口:业务低峰期(如 02:00-05:00)

这份配置的思路是:用有限但覆盖常见服务的端口范围控制扫描量,用精确服务识别提升漏洞检测命中率,用排除 DoS 插件避免影响生产,用低峰期窗口降低业务干扰。

如果目标是“快速发现暴露面”,可先做一轮仅主机发现 + 常见端口 + 服务识别的轻量扫描,确认资产清单后,再对重点主机做全端口 + 全插件的深度扫描。两轮策略比一轮“又全又深”的策略更容易控制时间和风险。

四阶段关系与配置影响

下图展示了四个阶段的先后依赖关系,以及关键配置项如何影响后续阶段和整体性能。可以看到,主机发现和端口扫描决定了“扫描面”,服务识别决定了“检测精度”,漏洞检测决定了“最终产出”,而并发、超时等参数贯穿全程,直接作用于总耗时。

Nessus 扫描四阶段与性能权衡 ① 主机发现 ICMP / TCP SYN / ARP 输出:存活 IP 列表 ② 端口扫描 常见端口 / 自定义范围 输出:开放端口列表 ③ 服务识别 banner / 指纹匹配 输出:服务与版本 ④ 漏洞检测 插件匹配执行 输出:漏洞报告 贯穿全程的性能参数 最大并发主机数 ↑ 快 / 压力大 每主机并发检查数 ↑ 快 / 易丢包 网络超时 ↓ 快 / 易漏报 重试次数 ↑ 准 / 耗时增加 偏“快”的取舍 • 仅常见端口,不做全端口 • 提高并发、缩短超时 • 风险:漏资产、漏端口、漏漏洞 偏“全”的取舍 • 全端口 + 精确服务识别 • 降低并发、放宽超时 • 风险:耗时长、业务窗口受限

如何判断策略是否合适

策略调优不能只看“扫完了没有”,还要看结果是否可信。可以从三个角度检查:一是覆盖率,对照资产台账,看是否有已知主机未被发现;二是识别准确率,抽查若干主机的服务识别结果,确认端口与服务对应关系正确;三是误报与漏报,对高危漏洞做人工复核,确认不是因超时或并发过高导致的误判。

如果发现大量主机显示“未响应”,优先检查主机发现方式和超时设置;如果服务识别结果大量为“unknown”,说明探测报文可能被拦截或超时过短;如果漏洞检测阶段耗时异常长,通常是插件数量过多或目标服务响应慢,可考虑分批次扫描或排除低价值插件。

不要在生产核心业务系统上直接使用高并发、全端口、全插件的“暴力”策略。建议先在测试环境验证策略参数,再逐步应用到生产网,并始终保留业务低峰期窗口。

总结来说,主机发现决定“扫谁”,端口扫描决定“扫哪里”,服务识别决定“扫得准不准”,漏洞检测决定“扫出什么”。并发、超时、重试这些参数则像油门和刹车,控制整个过程的速度与稳定性。理解这四层关系,才能根据资产规模、网络环境和业务容忍度,设计出既高效又可靠的扫描策略。