当前位置:首页 > 时尚

主机漏洞扫描工具nessus

Nessus 的主机安装包大概 50MB,装完之后第一件事是漏洞等它初始化插件库。那个过程能急死人——屏幕上滚动着几千个 .nasl 文件的扫描解压日志,CPU 风扇狂转,工具你只能盯着终端刷新的主机行数发呆。我第一次在 CentOS 上部署的漏洞时候,等了将近二十分钟,扫描还以为卡死了。工具

这玩意儿是主机 Tenable 公司做的,商业漏洞扫描器里市场占有率最高的漏洞一款。很多人用它的扫描免费版 Nessus Essentials,限制 16 个 IP,工具家庭实验室够用。主机企业版按 IP 数收费,漏洞价格不便宜,扫描但功能完整——合规审计、恶意软件检测、配置基线检查这些模块都开着。

扫描策略决定了你能看到什么

新建一个 Scan,Nessus 会给你一堆模板选。最常用的是 Basic Network Scan,但我不太推荐直接用默认配置跑。默认策略会开一大堆插件族,扫一台 Linux 主机能跑出上百条结果,其中一半是信息收集类的,比如检测到 SSH 版本、HTTP 头信息。真正的高危漏洞可能就藏在第三页。

我习惯先做一次 Host Discovery,确认哪些 IP 活着、开了哪些端口。然后针对性地选插件族。比如只关心远程代码执行类的漏洞,就在 Plugins 里勾选 Gain a shell remotely 和 Gain a shell locally,把其他全关掉。扫描速度能快好几倍,报告也干净。

credentialed scan 是另一个关键点。不提供 SSH 或 SMB 凭据的扫描,Nessus 只能从外部探测,漏报率很高。给了凭据之后,它会登录到目标系统上直接读补丁列表、检查配置文件、比对本地软件版本。同一个漏洞,有凭据扫描报的是 “Patch missing”,没凭据扫描可能只报 “Version detected”。

那些让人头疼的误报

Nessus 的误报率在商业扫描器里算低的,但绝对数量不少。尤其在内网环境里,很多服务跑在非标准端口上,插件匹配逻辑会出错。我遇到过好几次:Nessus 报某台机器存在 Apache Struts2 远程命令执行漏洞,实际上那台机器跑的是 Tomcat,只是 HTTP 响应头里有个字段碰巧匹配上了插件的正则。

处理误报的办法是看插件输出里的证据。Nessus 每个漏洞条目下面都有 “Plugin Details” 和 “Risk Information”,点开能看到它具体匹配了哪个 banner、哪个文件路径。如果证据只是一行 HTTP 头,大概率是误报。真正靠谱的漏洞,插件会给出具体的 payload 响应或者文件内容片段。

还有个坑是插件更新。Tenable 每周更新插件库,有时候新插件会引入新的误报。我一般不会自动更新生产环境的 Nessus,先在一个测试实例上跑一周,确认没有大面积误报再推。

报告导出和 API

Nessus 的 Web 界面导报告挺方便,.nessus 格式是 XML,可以导入其他工具做二次分析。PDF 报告适合给领导看,但格式固定,改不了。我更喜欢用 REST API 拉数据,写个脚本把结果推到内部资产管理系统里,按主机名和 CVE 编号做去重。

API 的认证方式是 accessKey 和 secretKey,在用户设置里生成。调 /scans/{ scan_id}/export 接口拿 .nessus 文件,然后用 Python 的 xml.etree 解析。每个 ReportItem 节点里有 pluginID、severity、cve 这些字段,提取出来存数据库就行。

扫描频率这事没有标准答案。互联网暴露面大的,一周一次不算多。内网核心系统,一个月扫一次,配合变更窗口做。关键是别扫完就完了——把结果导进 Jira 或者 DefectDojo,跟踪到修复关闭,不然 Nessus 就是个制造 PDF 的机器。

分享到: