3. 安全数据源接入与规范化

安全运营的检测能力,最终取决于数据是否被正确接入、解析并映射到统一语义。Splunk 的检测工程实践中,这一步通常被称为“数据接入与规范化”。如果原始日志只是被采集进来却未做字段提取和 CIM(Common Information Model,通用信息模型)映射,那么搜索、关联分析和检测规则都会变得脆弱:同一类事件在不同数据源中字段名不同,检测逻辑无法复用,仪表盘也无法统一呈现。本节围绕五类最常见的数据源——Windows 事件、防火墙、EDR、云审计和代理日志——说明接入方法、字段提取思路以及 CIM 映射的关键做法。

一、接入前先明确三件事

在动手配置输入之前,先回答三个问题,能避免后续大量返工。第一,数据以什么方式到达 Splunk?常见有 Universal Forwarder 转发文件、Syslog 接收、API 拉取(如云审计、EDR)以及 HEC(HTTP Event Collector)推送。第二,事件的时间戳来自哪里?应优先使用日志自带时间,而不是采集时间,否则回溯分析会出现时间错位。第三,数据属于哪个 CIM 数据模型?例如 Windows 登录事件对应 Authentication,防火墙流量对应 Network Traffic,代理日志对应 Web,云审计对应 Change 或 Authentication。明确这三点后,接入、解析、映射才有清晰目标。

二、五类数据源的接入要点

Windows 事件日志:通常通过 Universal Forwarder 采集,在 inputs.conf 中启用 WinEventLog,并指定需要的主机与事件通道。安全运营最关注安全通道中的登录、进程创建、账户变更等事件。接入后应确认 EventCode、Account_Name、ComputerName 等字段可被正确识别。

防火墙日志:多数设备以 Syslog 输出,可让 Splunk 监听 UDP/TCP 514 或通过转发器读取日志文件。防火墙日志字段多、格式差异大,建议在 props.conf 中为每个厂商/型号定义独立的 sourcetype,再配合 transforms.conf 做正则提取。

EDR 日志:通常通过厂商 API 或 HEC 推送。EDR 事件包含进程树、命令行、文件哈希、网络连接等丰富上下文,是端点检测的核心。接入时要关注事件类型字段(如 process_start、network_connect)和进程唯一标识,便于后续关联。

云审计日志:以 AWS CloudTrail、Azure Activity、GCP Audit Log 为代表,一般通过云厂商的 Splunk 官方 Add-on 或 SQS/S3 拉取。云审计事件的关键字段包括 userIdentity、eventName、sourceIPAddress、requestParameters,映射到 CIM 后可用于检测权限变更和异常 API 调用。

代理日志:Web 代理记录用户访问的 URL、域名、HTTP 方法、状态码和流量大小,是发现恶意下载、C2 通信和异常外联的重要来源。代理日志通常为文本或 JSON,接入后应重点提取 url、dest、http_method、status_code 等字段。

五类安全数据源接入与 CIM 映射链路 Windows 事件 UF / WinEventLog 防火墙日志 Syslog / 文件 EDR 日志 API / HEC 云审计日志 Add-on / SQS 代理日志 文件 / HEC 字段提取与解析 props.conf transforms.conf 正则 / JSON / KV_MODE 时间戳识别 sourcetype 划分 CIM 数据模型映射 Authentication Network Traffic Endpoint Processes Change Web tag / eventtype / fieldalias 检测与 关联分析 统一搜索 规则复用 仪表盘 关键字段映射示例 Windows:EventCode → signature,Account_Name → user,src → src 防火墙:src_ip → src,dst_ip → dest,dst_port → dest_port,action → action EDR:process_name → process,command_line → process,user → user 云审计:eventName → action,userIdentity → user,sourceIPAddress → src 代理:url → url,dest_host → dest,http_method → http_method,status → status

三、字段提取的常用手段

Splunk 的字段提取主要发生在索引时和搜索时。索引时提取通过 props.conf 与 transforms.conf 完成,适合高频、结构稳定的日志;搜索时提取则用 spath、rex、kv 等命令,适合临时分析或结构不固定的数据。对于 JSON 格式的 EDR 和云审计日志,优先使用 KV_MODE = json 或 spath,让 Splunk 自动展开嵌套字段;对于防火墙和代理这类半结构化文本,通常需要编写正则表达式。

一个实用的做法是先在搜索界面用 rex 验证正则,确认能稳定命中后再写入 transforms.conf。例如从代理日志中提取 URL 和状态码,可先用如下方式验证:

index=proxy sourcetype=bluecoat:proxysg
| rex field=_raw "^\S+\s+\S+\s+(?<src>\S+)\s+\S+\s+\S+\s+\S+\s+\S+\s+(?<http_method>\S+)\s+(?<url>\S+)\s+\S+\s+(?<status>\d{3})"
| table src http_method url status

验证通过后,把正则写入 transforms.conf 的 REGEX,并在 props.conf 中通过 TRANSFORMS 引用。注意正则要尽量锚定字段边界,避免误匹配;同时为每个 sourcetype 单独维护提取规则,不要用一条正则覆盖所有厂商。

四、CIM 映射的核心思路

CIM 的价值在于把不同来源的字段统一成标准名称。例如 Windows 的 Account_Name、云审计的 userIdentity、EDR 的 user,最终都应映射到 CIM 的 user 字段;防火墙的 src_ip、代理的 client_ip 都应映射到 src。映射方式主要有三种:一是通过 fieldalias 做字段别名,二是通过 tag 给事件打标签,三是通过 eventtype 定义可复用的搜索片段。

以 Windows 登录事件为例,若要让其符合 Authentication 模型,需要确保事件包含 user、src、action、signature 等字段,并打上 authentication 标签。这样后续写检测规则时,就可以直接使用 tag=authentication action=failure,而不必关心底层是 Windows 还是云审计。映射完成后,建议用 datamodel 命令验证:| datamodel Authentication Authentication search | head 10,如果能正常返回事件,说明映射基本生效。

CIM 映射不是一次性工作。新增数据源、厂商升级日志格式、字段含义变化时,都需要重新检查映射。建议把每个数据源的映射规则纳入版本管理,并在变更后跑一次 datamodel 验证。

五、接入质量的检查要点

数据接入完成后,至少检查四项:时间戳是否正确、字段是否可搜索、sourcetype 是否合理、CIM 映射是否生效。可以用如下搜索快速判断字段提取情况:

index=* sourcetype=your_sourcetype
| fieldsummary
| table field count distinct_count

如果关键字段缺失或大量为空,说明提取规则需要调整。对于云审计和 EDR,还要关注事件延迟和 API 限流,避免因拉取频率过高导致数据缺口。代理日志则要注意 URL 字段是否被截断或编码,必要时先做 urldecode 再映射。

总体而言,安全数据源接入与规范化是一条从“原始日志”到“可检测语义”的链路:接入决定数据是否完整,提取决定字段是否可用,CIM 映射决定检测逻辑能否复用。三者缺一不可,而 CIM 映射往往是区分“能搜到”和“能检测”的关键一步。