
最近大家都在聊Nessus这东西,我最近也在折腾这个漏洞扫描工具,跑了几次下来,发现这玩意儿的速度真不是盖的,有时候扫描个大网段,比我预期的要快不少。不过也有时候感觉它...
最近大家都在聊Nessus这东西,我最近也在折腾这个漏洞扫描工具,跑了几次下来,发现这玩意儿的速度真不是盖的,有时候扫描个大网段,比我预期的要快不少。不过也有时候感觉它慢得像老牛拉破车,同一个范围,上次三小时搞定,这回能磨磨蹭蹭跑一天。
我这个人做事比较轴,遇到这种性能起伏大的情况,总得琢磨琢磨是咋回事,不能稀里糊涂地用。我就把这些跑下来的记录翻出来,仔细对比了一下,发现影响Nessus扫描速度的因素,还真不少,不是光看网速那么简单。
我一开始就是随便找了个中等规模的公司内网环境,大概几百台设备,操作系统五花八门,有Windows、Linux,还有点物联网设备。我用的就是默认配置,选了个最全的扫描策略,然后就启动了。第一次跑下来,用了差不多六个小时,跑完之后我一看报告,发现很多设备压根就没啥高危漏洞,但是扫描时间还是那么长。
我当时就觉得,这默认配置是不是太保守了?啥都扫一遍,肯定慢。于是我开始调整我的策略。

我发现,Nessus最花时间的地方,在于它要对每一个端口、每一个服务进行深度检查。尤其是一些默认不开放的端口,它都要去试探一下,浪费时间不说,有时候还容易被防火墙或者入侵检测系统(IDS)给拦下来。
我做了两件事:
后来我把扫描范围缩小,只扫我们测试部门的几台服务器,结果发现,同样的配置,扫这几台服务器比扫整个部门要快得多。这就让我意识到,目标主机本身的性能和配置,对扫描速度影响太大了。
我记录了两组数据对比:

所以说,如果目标主机处理能力差,扫描器就得在那里干等着,这时间消耗的,比它自己跑检查还多。
我还得考虑网络带宽和扫描器本身的性能。我试过把Nessus装在虚拟机里跑,也试过直接装在物理机上跑。装在物理机上,资源分配更直接,跑起来明显比虚拟机稳定,尤其是在高并发扫描的时候,虚拟机的IO争抢很明显。
网络延迟和丢包率也是隐形杀手。有一次我远程跑扫描,连接网络不太稳定,进度条爬得慢不说,还报错了好几次,不得不重新跑。对比之下,在我办公室局域网内直接跑,基本很少出岔子。
Nessus想跑快,得是策略精简、目标健壮、网络稳定三者结合。默认配置只是个起点,要想用得顺手、效率高,还得根据实际环境去调教它。