应对大规模的资产扫描一些小 Tips
近年来不少厂商的安全部门纷纷引入了大数据及分布式运算,比如安全日志分析、通过大数据反爬虫、用流量镜像中的 URL 进行 Web 扫描、分布式扫描器等。普通的扫描方式在数万或几十万台服务器的环境下会遇到以下问题:
1)单台或数台扫描器仍不足以覆盖海量 IDC,完成全网扫描需要很多资源。
2)大量的并发扫描占用网络带宽,高峰时影响用户体验,执行深度检测可能会使应用或服务直接宕掉。3)大量的误报以及中低风险漏洞会使人工解读和后续整理难上加难。
因此海量 IDC 规模下漏洞扫描需要寻求高效的方式,总体思路是减少工作量,有几个方法:
1)简化漏洞评估链,减少需要扫描的任务。
2)减少漏洞扫描的网络开销和被检查者的性能损耗。
3)减少漏洞扫描的种类。
4)减少手工确认的工作量。
在实践中,需要从以下几方面进行优化:
1)不做全网的漏洞扫描,先做端口扫描,这样做的前提是访问控制和纵深防御做到位,利用 ACL 大幅减少攻击面,把需要漏洞扫描的端口减少到 22、80、443 等,开的端口少了,全网全协议漏洞扫描就缩减为全网几个关键应用的扫描。
2)做好高危端口监控,防止“计划外”应用的滥用,这样漏洞扫描这件事就瘦身为端口监控加关键应用扫描。
3)在系统和应用扫描上,不完全依赖于网络扫描器,可同时借助于本机 agent 扫描,类似心脏滴血的漏洞与其从网络上去获取扫漏洞,不如在本地获取 OpenSSL 的版本更简单。服务器 OS 本地的 agent 除了可以扫系统型漏洞,还可以扫本地配置型漏洞,相对来说本地获取的信息比网络获取更准确,但代价是会消耗服务器资源,所以这块需要尽可能地减少性能损耗。
对于绝大多数企业而言,自研扫描器比商业产品或成熟的开源产品扫描能力更强的可能性是不高的,但是单机扫描又严重影响效率,所以对于业务有一定规模但安全团队又没能力自制扫描器的公司,可以考虑将现有的扫描器改成分布式的:
对于 Web 漏洞扫描,可以通过任务队列的方式将扫描任务发给 awvs、arachni、w3af 等扫描器,改成分布式扫描器。
对于服务器及网络漏洞扫描,可以多部署几台 Nessus 扫描器,并配置为集群模式,调用 API 进行大规模扫描。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/253331c59a6dc9b25b8ac48d6】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论