尧图精选

从零编写Nessus自定义扫描策略:插件集配置与性能调优实战

🕒 发布时间:2026/10/1 9:45:06 📁 来源:尧图网络
1. 为什么默认策略总是“差点意思”先聊个日常。干安全评估这几年Nessus基本是随身工具了。但说实话大部分人的用法就是装完开默认策略直接扫出个报告就算交差。这个流程应付常规巡检没问题真到实战项目里就捉襟见肘了。举几个例子默认策略全端口扫描跑一个C段可能要好几个小时紧急漏洞排查时根本等不起内网资产里有ESXi、网络打印机、数据库中间件默认策略的探测方式和插件选择不见得匹配容易漏报合规基线检查需要按特定标准核查配置项默认模板里根本没这功能。这些场景下自定义扫描策略模板就成了绕不开的选项。我在实际项目里吃了不少亏之后才正儿八经把Nessus的策略模板体系摸清楚。这篇文章就把我从零编写自定义策略的完整路径、参数配置逻辑、插件筛选思路和排坑经验都整理出来。内容主要基于Nessus 10.x版本界面和功能在10.9.4上验证过老版本可能菜单名略有差异但核心逻辑完全通用。适合人群刚接触Nessus但发现默认策略不够用的人、需要做内网深度评估的安全工程师、运维团队想建立可复用扫描模板的。这篇文章不是教你怎么点按钮出报告而是讲清楚每个配置项背后的逻辑让你能独立设计出贴合自身环境的策略模板。2. 策略模板设计前的核心思路2.1 先搞清楚策略、模板、插件集三者的关系Nessus里有个容易混淆的概念Policy、Template和Plugin Set。Policy是整套扫描配置的集合包含目标范围、端口扫描方式、插件启用状态、性能参数等Template是Policy的载体Nessus启动扫描时选择一个模板其实就是在加载一套Policy配置Plugin Set则是插件知识库里的一个子集你选了哪些插件族、哪些具体插件决定了扫描器实际执行哪些检测。关系可以这样理解模板是外壳策略是内核插件集是内核里真正干活的组件。你在新建策略时做的所有设置最终都围绕这三层展开。设计策略前先回答几个问题这次扫描的目标是主机漏洞还是Web应用重点在基线合规还是入侵痕迹排查目标环境是隔离网段还是核心业务区允许的扫描时长和带宽消耗上限是多少这些问题直接决定后续所有配置方向。还有一点值得注意策略模板不是写得越多越好。我见过有人建了二三十套策略结果团队成员根本搞不清哪套该用哪套最后全部退回默认模板。我的习惯是建四到五套核心策略覆盖常见的应急扫描、Web评估、合规基线、全量深度和快速探测每个策略的差异点写清楚用途这样团队协作时才能达成一致。2.2 策略配置的三大板块逻辑打开Nessus的Policy配置界面你会发现配置项分了好几块。核心三大板块分别是发现配置Discovery、评估配置Assessment、报告配置Report。Discovery板块管的是“怎么找到目标、识别目标是什么”包括主机发现方式、端口探测策略、服务识别深度。这里的配置直接决定扫描的“广度”和“速度”。Assessment板块管的是“找到目标后做什么检测”包括启用的插件族、凭据扫描设置、Web爬虫策略、合规基线选择。这里的配置决定检测的“深度”。Report板块管的是“结果怎么呈现”包括报告语言、漏洞分级标准、输出格式细节。还有底部的Performance和Advanced选项属于“扫描行为控制”管理并发数、超时时间、重试次数、丢包容忍度等。很多新手只看前三大板块性能参数完全不动导致高并发下扫描器自身被拖垮或者目标主机网络被扫崩。这块后面实操部分会详细拆解。3. 从零创建自定义策略的完整流程3.1 新建策略模板的正确入口Nessus 10.x的Web界面里进入Policies页面点击New Policy按钮会弹出模板选择框。这里列了很多预设模板Basic Network Scan、Advanced Scan、Web Application Tests、Credentialed Patch Audit、Host Discovery等等。需要注意直接选Basic Network Scan之类的基础模板你虽然能改一些配置但很多高级选项被限制了。要完全自定义应该选Advanced Scan作为起点。我在项目里基本都这么做因为Advanced Scan开放了全部配置维度其他模板都是它的子集变体从Advanced Scan改写效率最高。选定Advanced Scan后进入策略编辑页左侧是配置分组右侧是具体参数。整个编辑流程可以按发现配置、评估配置、性能参数、报告输出四条线推进。3.2 发现阶段配置的关键参数发现阶段在漏洞检测之前。这里常见误解是“端口扫得越全越好”实际上端口扫描方式的选择对结果影响极大。Nessus支持多种端口扫描方式TCP SYN、TCP Connect、TCP FIN、UDP、ACK等。默认的SYN扫描速度远快于Connect扫描但对于部分老旧的网络设备或者防火墙策略严格的服务器SYN包会被直接丢弃反而Connect扫描更可靠。我在扫描混合内网时端口探测常用“SYN 部分UDP TOP50”的组合TCP用SYN快速摸清开放端口UDP只扫常见服务端口比如DNS的53、SNMP的161、NTP的123这样效率高又不会太慢。端口范围配置也很有学问。全端口1-65535扫描慢且容易触发目标防护系统报警应急场景完全不适合。常规巡检我用默认列表常用端口约1000多个重点目标或合规项目才开全端口。在自定义策略模板里端口范围应该做成可变参数扫描前根据目标重要性和时间窗口临时调整而不是死写固定值。服务识别Service Detection建议开启。Nessus识别出具体服务版本后才能精准匹配各版本对应的漏洞插件。如果关闭服务识别很多检测逻辑只能靠猜误报率会明显上升。代价是扫描时间增加但收益远超成本。3.3 主机存活探测的取舍主机发现方式中Nessus提供ARP、ICMP Ping、TCP Ping、UDP Ping等多种组合方式。跨网段扫描时ARP不好使ICMP被禁的环境中TCP Ping就派上用场。我常用的组合是ARP ICMP TCP 80/443/22等常见端口。这个组合对绝大多数内网环境都有效如果目标网络禁ping且封禁了常见端口说明极其注重隐蔽性这种网络环境通常也不会让你随便扫。根据我的经验主机发现策略不用贪多求全把常见的三到四种方式搭配好足够应对开太多反而增加扫描时长对结果没实质帮助。还有个细节主机发现和端口扫描的节奏可以分开控制。第一轮先快速定位存活主机第二轮只对存活主机做全量检测。这个“分阶段扫描”思路在大型内网中能大幅减少无效流量和扫描时间。3.4 插件集配置是策略的灵魂设置完发现方式接下来就是评估配置这部分的核心是插件集。Nessus插件按家族Family分类包括CentOS Local Security Checks、Windows、Databases、DNS、Firewalls、Web Servers、Misc等几十个大类。策略模板里你可以按需启用或禁用整个家族也可以精确到单个插件级别。在建自定义策略时我的思路不是“全选然后等结果”而是“按场景裁剪插件集”。做Web应用评估时Web Servers、Web Application Tests这些家族必须开但网络设备专属插件可以关掉。做数据库基线核查时Databases家族和相关插件全部开启桌面软件类插件直接排除。这样既加快扫描速度也减少无关插件引发的噪声。判断哪些插件该启用还有一个更精细的维度——按照CVE时间线。Nessus插件库每天都会更新新漏洞CVE对应的插件会逐步加入。你在做应急排查时可以只启用最近30天新增的插件快速定位新曝出的高危项。具体做法是在插件搜索框里用“plugin_modification_date 某个日期”的条件过滤然后保存为一个自定义插件组下次直接用。3.5 进阶配置凭据扫描与合规基线默认的远程扫描是从外部视角探测漏洞很多安全问题只有拿到系统权限后做本地核查才能发现。Nessus支持凭据扫描Credential Scan给你提供SSH账号、Windows远程账号、数据库账号后扫描器登录系统内部执行本地检查项。这个能力极大提升检测深度尤其对补丁缺失、配置弱点这类问题比纯黑盒扫描准确几个量级。凭据信息在策略模板里可以预先配置好也可以留在扫描时输入。我的建议是模板里留占位变量实际扫描时输入具体凭据避免模板文件泄露账号信息。合规审计Compliance部分是另一个重头。Nessus内置了多种合规基准包括CIS Benchmark、等保基础要求、行业合规配置项等。自定义策略中可以挂载这些审计文件扫描结束后直接输出“合规判定”结果对于做等级保护、CIS基线核查的项目特别好用。需要注意合规审计扫描依赖凭据采集系统配置项。在策略模板中同时启用Credential Scan和Compliance Check两者配合才能输出有效的合规结果。只开合规检查不给凭据结果基本是空的。4. 三种典型场景的策略模板解剖4.1 应急排查场景模板应急场景的核心需求是“快”快速定位存活主机、快速判断是否存在指定漏洞、避免过度扫描导致目标机压力过大。我的应急模板参数主机发现开启ARP、ICMP、TCP 80/443/3389/22组合探测端口范围暂时设为常用高危端口列表涵盖Web服务、远程管理、数据库默认端口等约300个插件集只启用最近15天新增且Critical级别以上插件同时手动加入当前已被公开利用的CVE对应插件。性能参数上最大并行主机数调到中低档相当于每台目标只分配较少的并发扫描线程。目标机器如果是生产业务服务器过高的并发容易触发OS层面的资源竞争极端情况下会把服务扫挂。这模板的核心逻辑是基于“时间窗口”筛选插件而不是全量检测。我已在多个真实应急事件中验证过整段C段从开始扫描到产出结果能控制在十分钟内而默认策略同等条件下至少要四十分钟以上。配置项应急模板推荐值备注主机发现ARP ICMP TCP Top5端口快速锁定存活目标端口范围自定义高危端口列表约300个不扫全端口速度优先插件过滤最近15天新增 已利用CVE对应插件聚焦最新威胁最大并发主机10~15避免压垮业务目标开放端口超时默认即可无需改动4.2 Web应用安全评估模板Web场景要单独走一套逻辑。Nessus的Web应用检测能力虽然不如专业DAST工具但做常规Web安全巡检足够用。Web评估模板要重点关注评估设置里的Web Crawling配置。爬虫深度设置影响可被检测的URL数量深度太高会爬出大量动态URL导致扫描时间失控太低会漏掉深层页面。我通常设置爬虫深度为3到5层同时启用“跟随动态URL中的链接”选项但要限制外部域名的请求数量避免扫描器被带偏去请求外部站点。另外必须在插件集里启用“Web Application Tests”全家族同时开启“Generic SQL Injection”和“XSS”两个专项检测插件组。Nessus的Web漏洞检测插件有不少是基于行为探测的关闭专项插件组后检测效果会大幅缩水。还有一个容易被忽略的点Web扫描时必须开启“模拟浏览器用户代理”选项。很多WAF和登录页面会通过User-Agent识别爬虫直接拒绝非浏览器UA的请求。Nessus提供“浏览器UA”预设选项开启后检测结果接近真实攻击者视角。Web模板我是作为专项检测工具使用的不会拿它代替完整的渗透测试流程但在安全开发上线测试和第三方系统巡检场景中它可以提供一个稳定可复用的自动化评估基线。4.3 合规基线核查模板合规场景的重点在于“标准化输出”即每次扫描结果都能按同样的标尺对照基线要求逐项判定。策略配置上开启Credential Scan提供系统凭据在合规设置中挂载对应的CIS Benchmark或其他合规审计文件并将输出格式设置为带“Compliance Summary”的报告模板。插件集方面启用Local Security Checks族这是本地核查的核心插件族同时保留少量远程漏洞检测插件作为环境信息补充。合规基线要明确基线版本。CIS Benchmark有不同系统版本和不同的基线版本号同样一台Windows Server 2016挂载的基准版本不同判定结果可能有明显差异。我会在策略模板名称上直接标注基线版本比如“Windows_CIS_v2.0.0_template”避免用错版本导致后期结果争议。这种模板适合构建团队内部的统一检测标准。我搭建这套机制后新加入的安全人员只需按模板执行得到的报告字段和格式保持一致统计纵向趋势也方便很多。5. 插件ID、插件组与自定义过滤规则5.1 插件ID到底怎么用Nessus每个检测项都对应一个唯一插件ID。掌握插件ID的查阅方法等于拿到了策略灵活定制的钥匙。查询插件有两种方式插件搜索框输入ID精确查找也可以用规则表达式过滤。比如要筛选所有Apache相关插件输入“Apache”即可联查。如果我看中某个插件但在策略编辑界面不知道它在哪个插件族直接在搜索框搜ID选中后Nessus自动帮你定位到对应的族。自定义插件组功能在建策略时很重要。你可以把多个插件ID组合成一个组比如“等保三级关键项插件组”把等级保护涉及的核心核查插件放在一个组里策略模板只引用这个组而不是逐个开关。后续要调整检测范围只需要维护插件组模板保持不动。5.2 过滤规则的正确打开方式除了按IDNessus还支持用CVSS分数、插件类型、漏洞类型远程/本地、发现时间等维度做过滤。推荐优先熟悉“按CVSS过滤”的场景全量扫描只保留CVSS 7.0以上的高危插件输出报告噪声大幅减少。过滤规则的边界也值得注意。有些漏洞很少单独触发高严重级别但组合起来就是真实风险。所以纯按CVSS过滤可能错过低危漏洞的组合攻击链。我的折中方案是日常巡检按CVSS 7.0以上过滤月度深度扫描则禁用过滤条件做全量核查靠报告模块的筛选能力做二次分析。5.3 插件依赖问题自定义插件集时还有一个隐藏问题插件依赖。某些漏洞检测插件依赖前置检查项的结果比如操作系统类型识别、端口服务确认、补丁包枚举结果等。你手动禁用了“Misc”或“Service Detection”相关插件表面上看只是少了一些探测项实际会导致大量依赖它的检测插件“有依赖未满足”而被跳过。Nessus中可以通过查看插件的依赖链来确认。插件信息界面会显示Dependencies字段列出所有依赖插件ID。建议不要随意禁用Service Detection、OS Identification这类的公共前置插件它们是很多检测逻辑的地基。我在一次内网扫描中就踩过类似的坑为了压缩时间把“Misc”插件族整个关了结果大量Web安全检测插件没执行报告看起来“干净”得反常。当时排查原因花了整整半天。后来养成了习惯插件选择是精心挑选结果不是不要哪些全删掉。6. 性能调优与参数计算6.1 并行度参数计算逻辑Nessus性能参数中有Max Simultaneous Hosts最大并发主机数、Max Checks Per Host每主机最大并发插件数、Max Simultaneous TCP Sessions最大TCP会话数三个关键值。三者之间不是独立项而是乘积关系。算一笔账并发主机数设为20每主机并发插件数设为5TCP会话数上限设为50。那么满负载时扫描器同时发起的TCP连接数约等于20乘以5等于100个潜在连接而会话数上限50意味着实际最多只有50个TCP会话同时进行。这里的瓶颈是TCP会话数。所以在调整参数时不要只调某一项要看三者共同作用下的实际瓶颈。我的经验值内网千兆带宽条件下Max Simultaneous Hosts设为30Max Checks Per Host设为4到6Max Simultaneous TCP Sessions设为100到150整体扫描效率和稳定性比较平衡。这套参数在C段规模约250个存活主机的全量检测中能在两小时内完成主要检测峰值流量也不会把交换机端口打满。6.2 扫描速度与准确度的平衡扫描速度变快通常意味着发包频率更高目标应用压力更大。压测实验来看同样的内网网段高并发参数的完成时间比低并发参数快三倍多但如果目标包含老旧的Windows Server 2003、打印机等低配置设备高并发模式会导致这些设备响应超时甚至宕机。稳妥做法是分设备类型跑策略。服务器区用高并发模板办公区和IoT设备区用低并发模板并适当调大超时时间。低并发参数配置可以参考最大并发主机数10每主机并发插件数3TCP会话数上限60。对大量老旧设备来说这套参数能从瓶颈流量和超时重试两个维度降低风险。6.3 超时与重试设置Nessus支持设置连接超时、读超时、重试次数。默认超时值兼容性好但在网络质量差的环境里重试次数不够会导致大量“端口状态未知、检测跳过”的结果。跨网段远距离扫描时我习惯把Connect Timeout从默认的5秒上调到10秒Read Timeout保持默认重试次数设为2次。网络丢包率超过5%的链路这个调整能显著减少误报“不可达”。内网正常环境就不用动默认值盲目调大超时只会拖慢整体进度。重试次数也不是越多越好一次扫描里同一个端口反复尝试三次以上基本说明该端口实际不可用或防火墙拦截了探测继续重试只是浪费时间。7. 常见问题与排查技巧实录7.1 为什么扫描结果大量“服务信息缺失”一次用自定义策略扫描后发现报告里主机虽然有开放端口但“服务指纹”字段大面积空白连带漏洞检测结果也很少。排查过程发现策略里端口扫描选了TCP FIN方式。这种扫描方式能判断端口开放状态但不建立完整TCP握手抓不到服务Banner信息。服务识别阶段的插件需要Banner数据来匹配指纹自然大面积失效。正确做法是服务识别依赖的端口扫描方式应选择SYN或Connect而不是FIN。或者单独增加一轮服务识别扫描专门抓Banner。7.2 插件开太多把扫描拖到“天荒地老”有次全量扫描开了所有插件族结果跑了两天半还没完。问题在于没有理解插件规模和扫描时间的线性关系。Nessus全插件库在两万个检测项以上全部启用后目标每开一个端口扫描器就要逐个跑完对应检测项耗时自然爆炸。压缩方案是启用Top 20关键插件族覆盖系统漏洞、Web漏洞、弱口令等主力检测项关闭冗余的外围类族如桌面软件、娱乐设备类总检测项压缩到六七千扫描时间降到原来的五分之一关键漏洞检出量基本不受影响。所以自定义策略一定要根据业务类型裁剪插件集。全插件扫描不是默认选项而是有特定目的才会启用的深度模式。7.3 凭据扫描一直提示认证失败SSH凭据设置正确但Nessus持续报“Authentication failure”。常见原因有三个一是Nessus扫描器到目标主机的SSH端口被防火墙限制二是目标系统SSH配置禁用了密码认证只允许密钥登录三是账号有跳转目录限制或Shell是nologin类型导致SSH会话无法正常运行命令。逐一排查时先确认扫描器到目标22端口连通性再检查目标系统sshd_config的PasswordAuthentication配置如果确实是密钥认证环境就需要给Nessus配置私钥文件路径。这个坑在加固过的Linux服务器上遇到不少次多数情况不是账号密码错而是远程登录策略本身拒绝了密码认证。7.4 扫描器自身崩溃或无响应Nessus服务运行时若遭遇并发过高Web界面会出现长时间转圈、扫描任务无响应。生产环境的扫描器建议单独部署一台独立的虚拟机或者低配服务器分配至少4核8GB内存磁盘预留200GB以上给插件库和扫描结果缓存。不要把Nessus装在正在运行的业务服务器上插件库的持续更新和扫描任务的临时文件都会干扰业务运行。7.5 策略模板无法保存或报错自定义策略保存时偶尔提示“Policy validation failed”。大多是指定端口范围格式不正确或者端口和服务识别参数之间出现冲突。我习惯在修改策略后立即保存并做一次小范围试扫一两台主机确认没有报错后再用于正式范围。这个习惯帮我避免过几次在大型扫描前才发现模板问题的情况。8. 小技巧用变量模板团队复用策略最后分享一个实际带团队时验证过的小技巧在自定义策略里善用Targets和Credential变量。把目标IP段在扫描任务创建时动态输入不在模板里写死这样同一套策略可以反复用于不同项目。凭据变量同理模板里不保存明文账号每次扫描前输入或者调用本地的凭据库。团队内部还可以建立策略模板的命名规范比如格式统一为“使用场景_基线版本_创建日期”配上简短说明写清适用范围。这样成员之间查看模板列表时很快能理解差异不用一个个打开看配置才知道哪套是哪套。策略多了之后这个习惯的省事效果很明显我建了十几套模板后靠命名规范也能快速定位目标模板。折腾Nessus自定义策略这些年我最大的感受是工具本身的能力只占一半另一半在操作者对自己环境和目标的判断。策略模板不是越复杂越好配置项也不一定都要动贴合场景、输出有效结果才是核心价值。写出来的模板建议结合自身项目持续复盘和迭代每个季度花点时间重新审视当前的模板是否够用随着资产变化和检测需求演进模板肯定也需要调整。希望这篇文章能帮你在自定义策略这条路上少走点弯路。如果你在实际配置中遇到了本文没覆盖的奇怪问题欢迎在评论区留言我看到了会尽量回复。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →