当前位置:首页 > 娱乐

openvas漏洞扫描工具

OpenVAS这个名字,洞扫搞安全的描工人不会陌生。它最早是洞扫Nessus的一个分支——2005年Nessus闭源之后,开源社区从旧代码里fork出来继续维护,描工后来几经辗转,洞扫现在归Greenbone公司管,描工正式名称叫Greenbone Vulnerability Management,洞扫但大家还是描工习惯叫它OpenVAS。名字换了,洞扫内核没变,描工依然是洞扫那套基于插件的漏洞检测引擎。

我最早接触它是描工在一台Ubuntu Server上,装完Greenbone Security Assistant,洞扫浏览器打开9392端口,描工界面朴素得有点劝退。洞扫但配置好扫描目标之后跑一轮,报告出来,漏洞条目按CVSS分数排得清清楚楚,那一刻觉得这工具确实能干活。

它到底怎么工作的

OpenVAS的核心逻辑不复杂:先做端口扫描和服务识别,再根据识别结果匹配对应的Network Vulnerability Tests(NVTs)。每个NVT本质上是一个脚本,用NASL(Nessus Attack Scripting Language)写的,专门检测某一类漏洞。比如目标开了Apache 2.4.49,扫描器就会调用针对CVE-2021-41773的检测脚本,发一个特制请求看能不能路径穿越。能,就报;不能,就跳过。

这套机制的好处是插件库更新快。Greenbone的社区feed每天推新NVTs,新漏洞爆出来通常几天内就有检测规则。坏处也明显——扫描结果里误报不少。我遇到过好几次,某个服务版本号被backport补丁改过,但NVT只认版本号,照样报高危。所以看报告不能只看数量,得逐条确认。

部署方式的选择

官方推荐用Greenbone Enterprise Feed配合Greenbone OS,但那套是商业版。开源用户一般走两条路:一是用Docker跑greenbone/community-edition镜像,省事,但资源占用不小,光PostgreSQL加Redis加扫描引擎,没4GB内存跑不顺畅;二是在Debian/Ubuntu上手动装GVM组件,麻烦,但可控性强。

我自己偏向Docker方案。拉镜像、起容器、等feed同步完,大概半小时能开始扫。feed同步这一步经常卡住,尤其是国内网络环境,Greenbone的服务器连不上就得换镜像源或者挂代理。这个坑几乎每个新手都会踩一次。

扫描策略的调优

默认配置扫出来的东西太多太杂。生产环境里我一般会做几件事:把不必要的高危检测项关掉,比如那些会触发目标服务崩溃的拒绝服务类NVT;调整并发数,默认的max_hosts和max_checks在大型网络里容易把扫描器自己拖垮;还有超时设置,有些NVT默认超时太短,网络稍微抖一下就报“无法检测”,结果里全是灰色条目。

另外提一句,OpenVAS的“Full and fast”策略并不适合所有场景。它跳过了部分可能影响服务稳定性的检测,换来的速度提升在小型网络里感知不强,但在几百台主机的环境里差别就大了。我通常先跑一轮fast摸清底数,再针对关键资产单独跑深度扫描。

报告怎么看

扫描完成后的报告分两种格式:XML和PDF。XML适合导入SIEM或者用脚本二次处理,PDF适合直接发给运维团队。但PDF报告里有个问题——它会把所有漏洞按主机分组列出来,同一类漏洞在不同主机上重复出现,看起来很长,实际去重之后可能就十几个问题。我习惯先把XML导出来,用Python脚本按CVE去重统计,再决定修复优先级。

CVSS分数高不等于必须马上修。一个CVSS 9.8的漏洞,如果目标服务只监听内网、有防火墙隔离、又没有可利用的公开EXP,实际风险可能低于一个CVSS 6.5但暴露在公网、EXP满天飞的漏洞。OpenVAS给的分数是参考,不是命令。

用久了会发现,这工具最大的价值不在于它能扫出多少漏洞,而在于它逼着你把资产台账理清楚。扫描目标填什么、排除哪些IP、用什么凭证做本地检测——这些问题想明白了,漏洞管理才真正开始。

分享到: