以下是详细的 SIEM(安全信息与事件管理)部署步骤,涵盖从需求分析到日常运维的核心流程,帮助您高效构建安全监控体系:
一、部署前准备
1. 需求分析与规划
- 明确目标:
- 合规要求(如等保2.0、GDPR、PCI-DSS)。
- 威胁检测场景(如暴力破解、横向移动、数据泄露)。
- 日志保留周期(通常90天以上)。
- 日志源清单:
- 服务器(Windows/Linux事件日志)。
- 网络设备(防火墙、交换机、路由器)。
- 应用系统(数据库、Web服务器、ERP)。
- 终端设备(EDR、杀毒软件日志)。
- 资源评估:
- 硬件:SIEM服务器配置(建议至少16核CPU、64GB RAM、2TB SSD,支持横向扩展)。
- 网络:确保日志源与SIEM服务器间带宽充足(预估日志量:每设备日均1-5GB)。
2. SIEM工具选型
- 开源方案(适用于中小规模):
- Elastic Stack:灵活、成本低,需自行开发规则。
- Wazuh:集成HIDS(主机入侵检测)功能。
- 商业方案(适用于企业级):
- Splunk Enterprise:支持复杂查询和机器学习。
- Microsoft Sentinel:云原生,无缝集成Azure生态。
二、部署步骤
1. 环境准备
- 服务器部署:
- 安装操作系统(推荐Linux如CentOS/Ubuntu)。
- 配置静态IP,关闭防火墙或开放必要端口(如TCP 514/Syslog、TCP 9200/Elasticsearch)。
- 安装依赖组件(如Java、Python、Docker)。
- 存储规划:
- 使用RAID 10或分布式存储(如Ceph)确保数据冗余。
- 分区建议:
/var
目录存储日志数据(独立磁盘)。
2. 安装与配置SIEM核心组件
以 Elastic Stack 为例:
- 安装Elasticsearch:
# 添加Elastic仓库 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list sudo apt update && sudo apt install elasticsearch # 配置elasticsearch.yml cluster.name: siem-cluster node.name: node-1 network.host: 0.0.0.0 discovery.seed_hosts: ["localhost"]
- 安装Kibana:
sudo apt install kibana # 配置kibana.yml server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"]
- 安装Logstash(可选):
sudo apt install logstash # 示例管道配置(/etc/logstash/conf.d/syslog.conf) input { syslog { port => 514 } } filter { grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:host} %{DATA:program}: %{GREEDYDATA:message}" } } } output { elasticsearch { hosts => ["http://localhost:9200"] } }
3. 日志收集器部署
- Windows日志收集:
- 下载并安装 Winlogbeat。
- 配置
winlogbeat.yml
:winlogbeat.event_logs: - name: Security processors: - script: lang: javascript id: security source: > function process(event) { event.Put("event.action", event.Get("winlog.event_data.TargetUserName")); } output.elasticsearch: hosts: ["http://siem-server:9200"]
- 启动服务:
.\winlogbeat.exe setup --pipelines --modules windows Start-Service winlogbeat
- Linux日志收集:
- 安装 Filebeat:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.10.0-linux-x86_64.tar.gz tar xzvf filebeat-8.10.0-linux-x86_64.tar.gz
- 配置
filebeat.yml
:filebeat.inputs: - type: filestream paths: [/var/log/*.log] output.elasticsearch: hosts: ["http://siem-server:9200"]
- 安装 Filebeat:
- 网络设备日志:
- 配置防火墙(如FortiGate)转发Syslog到SIEM服务器:
config log syslogd setting set status enable set server "siem-server" set port 514 end
- 配置防火墙(如FortiGate)转发Syslog到SIEM服务器:
4. 日志解析与标准化
- 自定义Grok模式(Logstash):
filter { grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{DATA:class} - %{GREEDYDATA:message}" } } date { match => [ "timestamp", "ISO8601" ] } }
- 字段映射(Elastic Common Schema):
- 统一字段命名:如
source.ip
、user.name
、event.action
。
- 统一字段命名:如
5. 配置检测规则
- 内置规则启用:
- 在Kibana中导入预定义规则(SIEM App > Detection Rules):
# 下载Elastic预定义规则库 git clone https://github.com/elastic/detection-rules
- 在Kibana中导入预定义规则(SIEM App > Detection Rules):
- 自定义规则示例(检测异常登录):
// Kibana Detection Rule JSON { "name": "Multiple Failed Logins from Single Source", "query": "event.category:authentication AND event.outcome:failure", "threshold": { "field": "source.ip", "value": 10, "interval": "5m" } }
6. 告警与自动化响应
- 配置邮件告警(Kibana):
- 进入 Stack Management > Connectors,创建SMTP连接器。
- 在检测规则中关联告警动作,设置触发条件。
- 联动防火墙自动阻断(通过API):
# 示例:调用FortiGate API封锁IP(需API Token) import requests blocked_ip = "192.168.1.100" url = f"https://firewall/api/v2/cmdb/firewall/address?access_token=YOUR_TOKEN" data = { "name": "blocked_ip", "subnet": f"{blocked_ip}/32" } requests.post(url, json=data)
7. 构建监控仪表盘
- Kibana Dashboard:
- 进入 Dashboard > Create New,添加可视化组件。
- 常用视图:
- 事件时间线:折线图显示事件频率。
- 地理位置热图:展示攻击源IP分布。
- TOP 10威胁指标:柱状图显示高频恶意IP/域名。
8. 备份与灾难恢复
- Elasticsearch快照:
# 创建S3存储库 PUT _snapshot/my_backup { "type": "s3", "settings": { "bucket": "siem-backup" } } # 手动触发快照 PUT _snapshot/my_backup/snapshot_1
三、维护与优化
1. 性能调优
- Elasticsearch优化:
- 调整JVM堆大小(不超过物理内存50%)。
- 分片策略:每个索引主分片数=节点数,副本分片数=1。
- 日志过滤:
- 丢弃调试日志(Logstash配置
drop { }
)。
- 丢弃调试日志(Logstash配置
2. 规则持续更新
- 订阅威胁情报:
- 集成MISP、AlienVault OTX,自动标记恶意IP。
- 定期审查误报:
- 添加白名单(如合法扫描IP、自动化任务账号)。
3. 安全加固
- 访问控制:
- 使用Elasticsearch角色限制用户权限。
- 启用HTTPS和客户端证书认证。
- 监控SIEM自身日志:
- 审计SIEM管理操作(如规则修改、数据删除)。
四、常见问题与解决
- 日志延迟高:
- 检查网络带宽,优化Logstash批处理大小(
pipeline.batch.size
)。
- 检查网络带宽,优化Logstash批处理大小(
- 存储空间不足:
- 启用ILM(索引生命周期管理),自动删除旧数据。
- 规则漏报:
- 结合EDR数据丰富上下文(如进程树、文件哈希)。
通过以上步骤,您可以完成SIEM系统的完整部署,实现从日志采集到威胁响应的全流程覆盖。建议初期选择关键日志源试点,逐步扩展覆盖范围。