名称: siem-logging 描述: 配置安全信息和事件管理(SIEM)系统进行威胁检测、日志聚合和合规。用于实施集中式安全日志记录、编写检测规则或满足云和本地基础设施的审计要求。
SIEM日志记录
目的
使用SIEM平台(Elastic SIEM、Microsoft Sentinel、Wazuh、Splunk)配置全面的安全日志基础设施,以检测威胁、调查事件和保持合规审计轨迹。此技能涵盖平台选择、日志聚合架构、检测规则开发(SIGMA格式和平台特定)、警报调整以及符合法规(GDPR、HIPAA、PCI DSS、SOC 2)的保留策略。
何时使用此技能
使用此技能当:
- 跨基础设施实施集中式安全事件监控
- 编写身份验证失败、权限提升、数据外泄的威胁检测规则
- 为多云环境(AWS、Azure、GCP、Kubernetes)设计日志聚合
- 满足日志保留和审计轨迹的合规要求
- 调整安全警报以减少误报和警报疲劳
- 计算高容量安全日志(TB/天级别)的成本
- 将安全日志记录与事件响应工作流程集成
SIEM平台选择
快速决策框架
根据以下选择SIEM平台:
预算考虑:
- 无限制预算 → Splunk Enterprise Security(企业功能、已验证规模)
- 中等预算(每年5万-50万美元) → Microsoft Sentinel或Elastic SIEM(云原生、灵活)
- 紧张预算(每年<5万美元) → Wazuh(免费、开源XDR/SIEM)
基础设施上下文:
- 大量Azure投资 → Microsoft Sentinel(原生集成、内置SOAR)
- 大量AWS投资 → AWS Security Lake + OpenSearch(AWS原生)
- 多云或本地 → Elastic SIEM或Wazuh(平台无关)
数据容量:
- >1 TB/天 → Splunk或Elastic Cloud(已验证规模)
- 100 GB - 1 TB/天 → Microsoft Sentinel或Elastic SIEM
- <100 GB/天 → Wazuh或Sentinel 50 GB层级
团队专业知识:
- Elasticsearch经验 → Elastic SIEM(熟悉工具)
- Microsoft/Azure专业知识 → Microsoft Sentinel(Azure生态系统)
- 通才或有限资源 → Wazuh(学习曲线最易)
平台比较摘要
| 平台 | 成本 | 部署 | 最适合 |
|---|---|---|---|
| Elastic SIEM | $$$ | 云/自托管 | 多云、定制需求、DevOps团队 |
| Microsoft Sentinel | $$$ | 云(Azure) | 重度Azure组织、内置SOAR、云优先 |
| Wazuh | 免费 | 自托管 | 成本敏感、中小企业、合规要求 |
| Splunk ES | $$$$$ | 云/本地 | 大型企业、大规模、无限制预算 |
详细功能比较,请见references/platform-comparison.md。
检测规则
通用格式:SIGMA规则
SIGMA提供通用检测规则格式,可编译为任何SIEM查询语言(Elastic EQL、Splunk SPL、Microsoft KQL)。
SIGMA规则结构:
title: 单一源多次登录失败尝试
id: 8a9e3c7f-4b2d-4e8a-9f1c-2d5e6f7a8b9c
status: stable
description: 检测潜在暴力攻击(10分钟内10+次失败登录)
author: 安全团队
date: 2025/12/03
references:
- https://attack.mitre.org/techniques/T1110/
tags:
- attack.credential_access
- attack.t1110
logsource:
category: authentication
product: linux
detection:
selection:
event.type: authentication
event.outcome: failure
timeframe: 10m
condition: selection | count() by source.ip > 10
level: high
编译SIGMA到平台特定:
# 安装SIGMA编译器
pip install sigma-cli
# 编译到Elastic EQL
sigmac -t es-eql sigma_rule.yml
# 编译到Splunk SPL
sigmac -t splunk sigma_rule.yml
# 编译到Microsoft KQL
sigmac -t kusto sigma_rule.yml
平台特定检测格式
Elastic EQL(事件查询语言):
sequence by user.name with maxspan=5m
[process where process.name == "powershell.exe" and
process.args : ("Invoke-WebRequest", "iwr", "wget")]
[process where process.parent.name == "powershell.exe"]
Microsoft Sentinel KQL:
SigninLogs
| where TimeGenerated > ago(1h)
| where ResultType != 0 // 失败登录
| summarize FailedAttempts=count() by UserPrincipalName, IPAddress
| where FailedAttempts >= 10
Splunk SPL:
index=web_logs sourcetype=access_combined
| rex field=uri "(?<sql_keywords>union|select|insert|update|delete)"
| where isnotnull(sql_keywords)
| stats count by src_ip, uri
| where count > 5
全面检测规则示例,请见:
examples/sigma-rules/- 通用SIGMA检测规则examples/elastic-eql/- Elastic特定查询examples/microsoft-kql/- Microsoft Sentinel查询examples/splunk-spl/- Splunk搜索references/detection-rules-guide.md- 完整指南
日志聚合架构
集中式架构
所有日志使用单一SIEM实例。适用于:
- 单区域部署
- 小到中等容量(<1 TB/天)
- 单一云提供商或本地
- 有限安全团队(1-10分析师)
架构:
应用服务器 → 日志传输器(Filebeat/Fluentd)
↓
日志聚合器(Logstash/Fluentd)
↓
SIEM平台(Elasticsearch/Splunk/Sentinel)
↓
安全分析师(仪表板/警报)
分布式架构(多区域)
区域SIEM实例与全局聚合。适用于:
- 多区域全局部署
- 数据驻留要求(GDPR、主权)
- 高容量(>1 TB/天每区域)
- 低延迟区域分析需求
架构:
全局SIEM(关联、威胁情报)
↓
区域SIEM(美国东部) | 区域SIEM(欧洲西部) | 区域SIEM(亚太)
↓ ↓ ↓
本地日志 本地日志 本地日志
云原生架构
利用托管云服务。适用于:
- 云优先组织(AWS/Azure/GCP)
- 避免管理基础设施
- 弹性工作负载,可变日志容量
- 云服务成本预算
AWS示例:
CloudTrail + VPC流日志 + GuardDuty
↓
AWS Security Lake(S3数据湖)
↓
OpenSearch(分析) | Athena(SQL查询)
部署示例,请见:
examples/architectures/elk-stack-docker-compose.ymlexamples/architectures/fluentd-kubernetes-daemonset.yamlexamples/architectures/aws-security-lake-terraform/examples/architectures/wazuh-docker-compose.ymlreferences/cloud-native-logging.md
日志聚合工具
Fluentd(云原生): CNCF项目,用于Kubernetes和多云环境。适用于容器化应用。
Logstash(Elastic堆栈): 原生Elasticsearch集成。适用于高级解析(grok模式)和数据丰富。
完整配置示例,请见examples/logstash-pipelines/和references/cloud-native-logging.md。
日志保留与合规
合规要求
| 框架 | 最小保留 | 热存储 | 温存储 | 冷存储 |
|---|---|---|---|---|
| GDPR | 30-90天 | 7天 | 30天 | 60天 |
| HIPAA | 6年 | 30天 | 180天 | 6年 |
| PCI DSS | 1年 | 90天 | 180天 | 1年 |
| SOC 2 | 1年 | 30天 | 90天 | 1年 |
存储分层策略
热层(SSD,实时):
- 最近7-30天
- 实时索引和快速查询
- 最昂贵($0.10/GB/月)
温层(HDD,近期):
- 30-90天
- 只读索引,偶尔搜索
- 中等成本($0.05/GB/月)
冷层(S3/Blob,归档):
- 90天至保留限
- 可搜索快照,罕见查询
- 最便宜($0.01/GB/月)
成本优化示例:
500 GB/天日志容量,1年保留
热(30天): 15 TB @ $0.10/GB = $1,500/月
温(60天): 30 TB @ $0.05/GB = $1,500/月
冷(275天): 137.5 TB @ $0.01/GB = $1,375/月
总计:$4,375/月 = $52,500/年
vs. 仅热层:$18,250/月 = $219,000/年
节省:76%($166,500/年)
详细保留策略和成本优化,请见:
references/log-retention-policies.mdreferences/cost-optimization.mdscripts/cost-calculator.py
记录什么(安全事件)
关键事件(必须记录):
- 身份验证:登录尝试、MFA、密码更改、权限提升
- 授权:权限更改、角色修改、访问拒绝
- 数据访问:敏感数据库/文件访问、API调用、导出
- 网络:连接、防火墙拒绝、VPN、DNS查询
- 系统:服务更改、配置修改、软件安装
严重级别: 身份验证失败(3+次):高警报 | 权限提升:关键警报 | 数据导出:高警报 | 配置更改:中(无警报)
警报调整与噪声减少
警报生命周期
- 检测规则创建 - 保守阈值,部署到生产
- 基线期(2-4周) - 收集警报数据,标记真/假阳性
- 调整阶段 - 添加白名单、调整阈值、优化关联
- 持续改进 - 每周指标审查、月度有效性审查
噪声减少技术
白名单(已知安全模式):
# 示例:允许扫描器IP
- rule_id: brute_force_detection
whitelist:
- source_ip: "10.0.0.100" # 安全扫描器
- user_agent: "Nagios" # 监控系统
阈值调整:
# 之前:过于敏感(500警报/天,5%真阳性率)
- rule: failed_login_attempts
threshold: 5分钟内3次尝试
# 之后:调整后(50警报/天,40%真阳性率)
- rule: failed_login_attempts
threshold: 10分钟内10次尝试
多事件关联:
# 替代:单一事件警报
- alert_on: "身份验证失败"
# 使用:关联模式
- alert_on:
- "身份验证失败(5+次)"
- AND "来自新IP地址"
- AND "后续成功身份验证"
- WITHIN: 30分钟
目标警报指标
| 指标 | 目标 |
|---|---|
| 总警报/天 | <100 |
| 真阳性率 | >30% |
| 平均调查时间 | <15分钟 |
| 假阳性率 | <50% |
| 关键警报/天 | <10 |
全面警报调整策略,请见references/alert-tuning-strategies.md。
快速开始
部署Wazuh: git clone https://github.com/wazuh/wazuh-docker.git && cd wazuh-docker/single-node && docker-compose up -d(见examples/architectures/wazuh-docker-compose.yml)
创建SIGMA规则: 见examples/sigma-rules/brute-force-detection.yml SSH暴力检测模板
Elastic Cloud: 在cloud.elastic.co注册,创建安全层部署,在端点安装Elastic Agent
与相关技能集成
可观测性技能:
- 路由安全日志到SIEM,性能日志到可观测性平台
- 共享日志聚合基础设施(Fluentd/Logstash)
- 不同分析目的(安全vs.性能)
事件管理技能:
- SIEM警报触发事件响应工作流程
- 与PagerDuty、Opsgenie、ServiceNow集成
- 关键安全事件的自动化事件创建
安全强化技能:
- SIEM监控安全配置和合规
- 检测CIS基准的配置漂移
- 警报安全策略违规
构建CI流水线技能:
- 记录CI/CD安全事件(部署、密钥访问)
- GitHub Actions/GitLab CI与SIEM集成
- 供应链安全监控
密钥管理技能:
- 审计所有密钥访问操作
- HashiCorp Vault/AWS Secrets Manager日志到SIEM
- 检测未授权密钥访问尝试
参考文档
详细指南
references/platform-comparison.md- 全面SIEM平台功能比较references/detection-rules-guide.md- 检测规则格式(SIGMA、EQL、KQL、SPL)references/log-retention-policies.md- 合规要求和保留策略references/cloud-native-logging.md- AWS、Azure、GCP、Kubernetes日志设置references/alert-tuning-strategies.md- 误报减少和警报优化references/cost-optimization.md- 存储分层和成本管理
工作示例
examples/sigma-rules/- 通用SIGMA检测规则(10+示例)examples/elastic-eql/- Elastic事件查询语言查询examples/microsoft-kql/- Microsoft Sentinel Kusto查询examples/splunk-spl/- Splunk搜索处理语言examples/architectures/- 完整部署示例(Docker、Kubernetes、Terraform)examples/logstash-pipelines/- Logstash流水线配置
实用脚本
scripts/sigma-to-elastic.sh- 转换SIGMA规则到Elastic EQLscripts/cost-calculator.py- 基于容量和保留估计SIEM成本
官方文档
- Elastic SIEM: https://www.elastic.co/security
- Microsoft Sentinel: https://azure.microsoft.com/en-us/products/microsoft-sentinel
- Wazuh: https://wazuh.com/
- Splunk Enterprise Security: https://www.splunk.com/en_us/products/enterprise-security.html
- SIGMA Rules Repository: https://github.com/SigmaHQ/sigma
- MITRE ATT&CK Framework: https://attack.mitre.org/