3. 资产盘点方法论:自动化扫描工具、人工盘点流程、CMDB建设思路

资产盘点这事儿,说白了就是回答三个问题:我们有什么?在哪儿?谁负责?很多团队一上来就买扫描工具,结果扫出一堆IP,却不知道哪个是核心业务系统。我见过最夸张的案例,某公司资产清单上还有五年前就下线的测试服务器。

所以这一章,咱们把方法论拆开揉碎了讲。我个人习惯把资产盘点分成三个层面:自动化扫描(解决“有什么”)、人工盘点(解决“在哪儿和谁负责”)、CMDB建设(解决“持续管理”)。

3.1 自动化扫描工具:快速摸清家底

自动化扫描是第一步。它的价值在于快,能在几小时内覆盖上千台设备。但你要清楚——扫描工具只能发现“在线”的资产,而且依赖网络可达性。

3.1.1 常用扫描工具对比

工具 扫描类型 优势 局限
Nmap 端口/服务探测 轻量、灵活、脚本扩展强 无资产关联分析
Masscan 大规模端口扫描 每秒百万级包 精度不如Nmap
Nessus 漏洞+资产识别 深度指纹识别 商业授权贵
Zmap 全互联网扫描 极速、单端口扫描 容易被封IP

我个人习惯先用 Masscan 做快速存活探测,再用 Nmap 做精细服务识别。举个例子:

# 第一步:快速发现存活主机
masscan 10.0.0.0/16 -p80,443,22,3389 --rate=10000 -oL alive.txt

# 第二步:对存活主机做深度扫描
nmap -sV -sC -O -iL alive.txt -oA deep_scan

这里有个坑——扫描频率别太高。我曾经在客户现场用默认速率扫内网,结果把核心交换机的CPU打到了90%,差点造成生产中断。嗯,从那以后我都在扫描命令里加 --max-rate=5000 限速。

3.1.2 指纹识别与资产分类

光扫出IP和端口不够,你得知道跑的是什么。比如端口443上可能是Nginx、Apache、IIS,也可能是某个自研的Java应用。这时候就需要指纹识别。

我常用的指纹库:

  • Wappalyzer:Web技术栈识别,适合前端框架、CMS
  • WhatWeb:命令行工具,识别超过1800种Web应用
  • Nmap NSE脚本:http-server-header.nse、http-title.nse
小技巧: 把指纹识别结果打上标签,比如“Web服务器”、“数据库”、“中间件”。这样后续做漏洞评估时,能快速定位高危资产。

3.2 人工盘点流程:补上工具的盲区

自动化工具再强,也有扫不到的东西。你想想看——内网隔离的设备、未上线的备机、云上临时创建的实例,这些工具根本发现不了。所以人工盘点必须跟上。

3.2.1 人工盘点的四个步骤

  1. 访谈业务负责人:问清楚“你们部门有哪些系统?跑在什么服务器上?谁在维护?”
  2. 现场核对:去机房或看云控制台,对照清单逐项确认。
  3. 补充遗漏资产:比如测试环境、开发环境、临时搭建的演示系统。
  4. 确认归属:每个资产必须有一个明确的负责人和联系方式。

我记得有一次做金融客户的人工盘点,发现一个没人认领的Oracle数据库,里面存着三年前的交易流水。问了一圈,原来是离职员工自己搭的测试库,交接文档里根本没写。这种幽灵资产最危险。

3.2.2 人工盘点模板示例

资产名称 IP地址 操作系统 业务系统 负责人 联系方式 备注
核心交易DB 10.1.1.10 CentOS 7.9 交易系统 张三 138xxxx 生产环境,禁止直连
Web前端01 10.1.2.20 Ubuntu 20.04 官网 李四 139xxxx 有WAF防护
注意: 人工盘点不是一次性工作。我建议每季度做一次增量盘点,每年做一次全量盘点。否则半年后清单就过时了。

3.3 CMDB建设思路:从清单到活数据

有了自动化扫描和人工盘点的结果,下一步就是把这些数据结构化、持续化地管理起来。这就是CMDB(配置管理数据库)要做的事。

很多公司把CMDB做成了“死库”——上线时导入一次,之后就再也没人更新。为什么会这样?因为CMDB的建设思路错了。

3.3.1 CMDB的核心模型

我个人习惯用 CI(配置项) 作为最小管理单元。每个CI包含:

  • 基础属性:IP、主机名、操作系统、CPU/内存/磁盘
  • 关系属性:属于哪个业务系统?依赖哪些其他CI?
  • 生命周期:创建时间、最后变更时间、计划退役时间

下面这张图展示了CMDB中CI之间的典型关系:

CMDB 核心CI关系图 业务系统 应用服务 数据库服务 中间件服务 Web服务器 应用服务器 数据库服务器 缓存服务器 交换机/路由器 防火墙/负载均衡 说明:每个CI通过关系属性关联到上层业务系统,形成完整的资产拓扑

3.3.2 CMDB建设的三个关键原则

  1. 自动化发现优先:能通过API、Agent、扫描工具自动采集的数据,绝不手动录入。手动录入是CMDB腐烂的根源。
  2. 关系比属性重要:知道一台服务器的IP不如知道它属于“交易系统”且依赖“Oracle主库”。关系决定了影响面分析。
  3. 持续更新机制:每次变更(上线、下线、配置修改)都要同步到CMDB。我建议用变更工单触发CMDB更新,而不是等人想起来再去改。
核心观点: CMDB不是IT资产台账,而是安全运营的“数据底座”。没有准确的CMDB,漏洞管理、事件响应、合规审计都是空中楼阁。

3.3.3 常见CMDB工具选型

工具 类型 适用场景 成本
iTop 开源 中小型企业,可定制 免费
ServiceNow 商业SaaS 大型企业,ITSM一体化 高
Zabbix + 自建 开源组合 运维团队自运维 低(需人力)
阿里云CMDB 云原生 阿里云环境 按量计费

我个人在中小企业更推荐 iTop,它内置了CI关系模型,而且支持通过REST API做自动化同步。你只需要写个脚本,把Nmap扫描结果推进去就行。

避坑提醒: 别一开始就想把CMDB做得“大而全”。我曾经见过一个团队花了三个月设计CI模型,结果上线时发现数据根本填不满。我的建议是——先管住IP、主机名、业务归属、负责人这四样,其他的后面慢慢补。

3.4 三者的协同关系

自动化扫描、人工盘点、CMDB不是三个独立的工作,而是一个持续循环:

  • 自动化扫描产出原始数据,推送到CMDB
  • 人工盘点补充CMDB中缺失的关系和负责人信息
  • CMDB反过来指导扫描策略(比如哪些网段需要重点扫描)

你想想看,如果这三者能跑通,资产盘点就不再是“一次性项目”,而是变成了安全运营的基础能力。下次做漏洞扫描时,你就能直接问CMDB:“交易系统有哪些服务器?”而不是翻Excel表格了。