2. SIEM平台与日志源接入
检测规则写得再好,如果日志没有稳定、完整、字段一致地进入SIEM,规则要么不触发,要么触发后无法解释。本章聚焦“日志如何从产生点走到规则引擎”这条链路,讲清常见SIEM架构、采集方式、关键日志源以及字段规范化,为后续规则开发打好数据基础。
一、常见SIEM架构:从采集到检索的四段链路
无论商业SIEM还是开源组合(如Elastic Stack、Wazuh、Splunk),逻辑架构基本一致,可拆为四段:采集层负责从终端、服务器、网络设备、云平台取日志;传输与缓冲层负责可靠搬运,常用Syslog、Kafka、Redis、Beats;解析与存储层负责字段提取、规范化、索引与保留;检测与应用层运行关联规则、告警、仪表盘与调查界面。理解这条链路的意义在于:规则不触发时,能快速判断问题出在“日志没到”“字段没解析”还是“规则逻辑错”。
二、日志采集方式:按对象选通道
采集方式的选择取决于日志产生形态。Windows环境常用Windows事件转发(WEF)或Agent直采,前者适合集中收集安全日志,后者可同时采集Sysmon;Linux服务器多用rsyslog/Filebeat读取/var/log/;网络设备与防火墙普遍支持Syslog,需注意UDP会丢包、TCP更可靠;代理与Web服务器日志可用Filebeat或Fluentd按行解析;云平台(AWS CloudTrail、Azure Activity Log、阿里云ActionTrail)通常通过API轮询或事件总线投递到对象存储后再拉取。EDR则通过厂商API或Syslog导出检测事件与遥测。
实际接入时,建议先确认三件事:日志时间戳是UTC还是本地时间、事件是否带唯一ID、传输是否加密。例如防火墙Syslog默认可能用本地时间,若SIEM按UTC解析,跨时区检索就会错位。一个可参考的Filebeat采集片段如下:
filebeat.inputs:
- type: filestream
id: win-sysmon
paths:
- C:\ProgramData\Sysmon\sysmon.log
fields:
log_source: sysmon
env: prod
fields_under_root: true
output.kafka:
hosts: ["kafka01:9092"]
topic: "siem-raw"
三、关键日志源:规则开发的“原料清单”
不同日志源提供不同检测视角,规则开发前应明确每类日志能回答什么问题:
- Windows安全事件:登录成功/失败(4624/4625)、特权分配(4672)、账户变更(4720/4726)、进程创建(4688)。适合检测暴力破解、横向移动、账户滥用。
- Sysmon:进程创建(Event ID 1)、网络连接(3)、镜像加载(7)、注册表修改(12/13)、DNS查询(22)。字段比4688丰富,含命令行、哈希、父进程,是端点检测的核心。
- 防火墙:允许/拒绝连接、源目的IP与端口、字节数。适合检测扫描、C2外联、异常端口访问。
- 代理/Web日志:URL、User-Agent、响应码、上传下载量。适合检测恶意下载、数据外传、可疑UA。
- EDR:进程树、文件落地、内存行为、检测告警。适合补充Sysmon未覆盖的行为链。
- 云审计:API调用者、源IP、资源、操作结果。适合检测AK泄露、权限提升、异常地域登录。
四、字段规范化:让规则只写一次
同一语义在不同日志里字段名各异:Windows叫IpAddress,防火墙叫src_ip,云审计叫sourceIPAddress。若规则直接绑定原始字段,换一个日志源就要重写。字段规范化就是建立统一字段模型,常见映射如下:
| 统一字段 | 含义 | Windows示例 | 防火墙示例 | 云审计示例 |
|---|---|---|---|---|
| event_time | 事件发生时间(UTC) | SystemTime | timestamp | eventTime |
| user_name | 主体账户 | TargetUserName | src_user | userIdentity.userName |
| src_ip | 源IP | IpAddress | src_ip | sourceIPAddress |
| dst_ip | 目的IP | — | dst_ip | — |
| process_name | 进程名 | NewProcessName | — | — |
| command_line | 命令行 | CommandLine | — | — |
| action | 动作/结果 | Keywords | action | eventName |
规范化通常在解析层完成:用正则或GROK提取原始字段,再通过映射表写入统一字段。例如把Windows 4625的IpAddress映射为src_ip,把防火墙的src也映射为src_ip。这样规则只需写src_ip,就能同时覆盖多源。需要提醒的是,规范化不是“改名”那么简单,还要统一时间格式、IP类型、大小写和空值处理,否则规则里src_ip = "10.0.0.1"可能因类型不一致而匹配失败。
总结来看,SIEM接入的核心是“通道选对、字段统一、时间一致”。只有日志稳定到达且字段可预期,后续的关联规则、阈值规则和异常检测才有可靠基础。