第238篇:日志服务器 Syslog 与安全事件关联

关键词

Syslog服务器、日志关联分析、SIEM、安全事件告警、日志聚合、租户隔离、事件响应


一、集中日志管理

1.1 为什么需要集中日志

分散的设备日志无法有效分析,需要集中管理:

分散日志的困境:

防火墙有自己的日志 → 只能看防火墙 交换机有自己的日志 → 只能看交换机 服务器有自己的日志 → 只能看服务器 IDS/IPS 有自己的日志 → 只能看 IDS

一个问题需要登录 5 台设备查询 无法进行关联分析

集中日志的价值:

日志服务器(SIEM 平台) Syslog ◄── 防火墙 Syslog ◄── 交换机 Syslog ◄── IPS Syslog ◄── 服务器 API ◄── 云服务 全景视图:统一搜索、关联分析

1.2 日志源整合

典型的日志源接入清单:

日志源 协议 端口 日志量(日)
防火墙 交换机 路由器 IPS/IDS 服务器 OS Web 服务器 数据库 云服务 API EDR 平台 Syslog Syslog Syslog Syslog Syslog Syslog Syslog HTTPS API UDP 514 UDP 514 UDP 514 UDP 514 UDP 514 TCP 1468 TCP 1468 443 HTTPS 5-50 GB 1-10 GB 500 MB - 2 GB 2-20 GB 1-5 GB 5-50 GB 1-5 GB 1-10 GB 500 MB - 2 GB

二、日志归一化与解析

2.1 日志格式差异

不同厂商的日志格式不同,需要归一化处理:

日志格式差异示例:

华为防火墙:
  <134>2024-03-15 10:00:01 FW-01 %%01SESSION/6/PERMIT:
    session=12345 permit TCP 10.0.1.100:50001 -> 93.184.216.34:80

Cisco ASA:
  %ASA-6-302013: Built outbound TCP connection 12345 for outside:93.184.216.34/80
    (10.0.1.100/50001) to inside:10.0.1.100/50001 (93.184.216.34/80)

Palo Alto:
  1,2024/03/15 10:00:01,TRAFFIC,end,1,2024/03/15 10:00:01,10.0.1.100,
    93.184.216.34,10.0.1.100,93.184.216.34,allow,50001,80,tcp

归一化后的通用格式(Common Event Format):
  {
    "timestamp": "2024-03-15T10:00:01Z",
    "vendor": "Huawei",
    "device": "USG6600",
    "event_type": "session",
    "action": "permit",
    "protocol": "TCP",
    "src_ip": "10.0.1.100",
    "src_port": 50001,
    "dst_ip": "93.184.216.34",
    "dst_port": 80,
    "bytes": 1234
  }

2.2 Logstash 解析配置示例

# Logstash 解析华为防火墙日志示例

input {
  syslog {
    port => 514
    type => "huawei-firewall"
  }
}

filter {
  if [type] == "huawei-firewall" {
    grok {
      match => {
        "message" => [
          # 会话日志
          "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:device} .*SESSION/%{DATA:severity}/%{GREEDYDATA:action}.*:
            session log: %{WORD:action2} %{WORD:protocol} %{IP:src_ip}:%{INT:src_port} -> %{IP:dst_ip}:%{INT:dst_port}",
          # 安全日志
          "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:device} .*ATTACK/%{DATA:severity}/%{DATA:attack_type}:
            %{GREEDYDATA:message}"
        ]
      }
    }
    date {
      match => ["timestamp", "MMM dd HH:mm:ss"]
      timezone => "Asia/Shanghai"
    }
    mutate {
      remove_field => ["message", "timestamp"]
    }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "firewall-logs-%{+YYYY.MM.dd}"
  }
}

三、安全事件关联分析

3.1 关联规则类型

日志关联分析的典型规则:

1. 时间关联
   规则:同一源 IP 在 60 秒内产生 10 次以上阻断
   来源:防火墙阻断日志
   告警:可能的扫描攻击

   SQL-like:SELECT src_ip, count(*) 
             FROM firewall_logs 
             WHERE action='deny' 
             GROUP BY src_ip 
             HAVING count(*) > 10 
             WITHIN 60 seconds

2. 顺序关联
   规则:IDS 告警 → 防火墙阻断 → 源 IP 再次尝试
   来源:IDS + 防火墙日志
   告警:持续攻击尝试

3. 多源关联
   规则:同一源 IP 在防火墙有阻断,同时在 EDR 有告警
   来源:防火墙 + EDR 日志
   告警:失陷终端嫌疑

4. 偏离基线
   规则:某 IP 的 DNS 查询量突然增长 10 倍
   来源:DNS 日志
   告警:可能是 DGA(域名生成算法)通信

3.2 典型关联场景

场景 1:横向移动检测

  日志源:防火墙 + EDR + AD

  关联逻辑:
    Step 1: EDR 报告终端 A 有可疑进程
    Step 2: 防火墙显示终端 A 在 5 分钟内 SSH 到 10 台服务器
    Step 3: AD 显示终端 A 的账户在服务器 B 上登录失败 5 次

  结论:终端 A 已失陷,正在横向移动
  响应:自动隔离终端 A + 阻断 SSH

场景 2:数据外泄检测

  日志源:防火墙 + DLP + DNS

  关联逻辑:
    Step 1: DLP 检测到大量数据通过 HTTPS 上传
    Step 2: DNS 日志显示解析了未知域名 data-exfil.example.com
    Step 3: 威胁情报显示该域名与 APT 组织关联

  结论:可能的数据外泄事件
  响应:阻断该域名 + 调查受影响终端

场景 3:暴力破解检测

  日志源:防火墙 + 服务器

  关联逻辑:
    Step 1: 防火墙显示 SSH 端口 22 的连接尝试来自同一 IP
    Step 2: 服务器 SSH 日志显示认证失败 50 次
    Step 3: 地理 IP 显示来源为境外异常区域

  结论:SSH 暴力破解
  响应:自动阻断该 IP 24 小时

四、SIEM 平台构建

4.1 开源 SIEM 方案(ELK)

ELK Stack 搭建日志分析平台:

防火墙 Syslog 交换机 Syslog 服务器 Syslog
│ │ │
└──────────────────┼──────────────────┘
┌──────┴──────┐
│ Logstash │
│ 解析+归一化 │
└──────┬──────┘
┌──────┴──────┐
│ Elasticsearch│
│ 存储+索引 │
└──────┬──────┘
┌──────┴──────┐
│ Kibana │
│ 可视化+搜索 │
└─────────────┘

部署步骤: 1. 安装 Elasticsearch(存储引擎) 2. 安装 Logstash(日志处理管道) 3. 安装 Kibana(Web 可视化平台) 4. 配置防火墙发送 Syslog 5. 创建告警规则

4.2 告警规则配置

# ElastAlert 告警规则示例

# 规则:检测暴力破解
name: SSH_BruteForce_Alert
type: frequency
index: firewall-logs-*

timeframe:
  minutes: 5

filter:
  - query:
      query_string:
        query: "dst_port: 22 AND action: deny"

num_events: 50

alert:
  - "slack"
  - "email"
slack_webhook_url: "https://hooks.slack.com/services/xxx"
email:
  - "security@company.com"

alert_text: |
  SSH 暴力破解检测
  源 IP: {0[src_ip]}
  阻断次数: {0[num_events]}
  时间窗口: 5 分钟

# 华为 SecoManager 内置规则
# 在 SecoManager 界面直接配置关联规则
# 支持图形化拖拽配置

五、安全事件响应

5.1 事件等级分类

安全事件分级响应:

等级 事件类型 响应时间 响应动作
P0 紧急 勒索软件 数据外泄 15 分钟 立即隔离 启动应急
P1 高危 APT 通信 批量暴力破解 1 小时 阻断 + 调查
P2 中危 单次攻击 违规访问 4 小时 日志分析 策略优化
P3 低危 策略命中 安全设备告警 24 小时 审计记录 定期报告

5.2 事件响应流程

标准事件响应流程:

检测 → 分析 → 抑制 → 根除 → 恢复 → 复盘

Step 1: 检测
  日志关联触发的告警 → SOC 分析员确认

Step 2: 分析
  收集相关日志(防火墙 + EDR + DNS)
  确认攻击类型和影响范围

Step 3: 抑制
  └─ 阻断攻击源 IP(防火墙)
  └─ 隔离失陷终端(EDR/交换机)
  └─ 停止受影响的服务(如必要)

Step 4: 根除
  └─ 清除恶意软件
  └─ 修复漏洞
  └─ 重置密码

Step 5: 恢复
  └─ 恢复服务
  └─ 确认无后门残留
  └─ 持续监控 48 小时

Step 6: 复盘
  └─ 根因分析
  └─ 改进检测规则
  └─ 完善安全策略

六、日志安全性

6.1 日志保护

日志本身需要安全保护:

1. 防止日志被篡改
   使用 Syslog over TCP + TLS(加密传输)
   日志服务器只写不删

   # 配置加密传输
   info-center loghost 10.0.100.50 transport tls
   info-center loghost 10.0.100.50 ssl-policy log-policy

2. 防止日志被删除
   日志服务器权限分离:
     └─ 管理员:只能查询
     └─ 审计员:只能查看
     └─ 系统账户:只能写入
   日志写入 WORM(一次写多次读)存储

3. 日志完整性校验
   使用日志签名定期校验
   # 生成日志哈希
   sha256sum /var/log/firewall/*.log > checksum.txt

6.2 日志访问控制

# 华为日志服务器权限配置

# 创建审计员角色(只读)
aaa
 role auditor
  rule 1 permit command display logbuffer    # 只能查看日志
  rule 2 permit command display loghost
  rule 100 deny command system-view          # 不能进入配置模式
!

# 创建操作员角色(可配置日志相关)
aaa
 role operator
  rule 1 permit command display log*
  rule 2 permit command info-center*        # 可配置日志设置
  rule 100 deny command system-view
  rule 101 deny command firewall*
!

# 日志访问日志(审计管理员的操作)
info-center logbuffer enable
info-center logbuffer log-operators          # 记录管理员对日志的操作

七、总结

知识点 核心要点
集中日志管理 统一收集多源日志,避免登录多台设备
日志归一化 不同厂商日志解析为通用字段格式
关联分析 时间/顺序/多源关联,发现隐藏威胁
SIEM 平台 ELK(开源)、SecoManager(华为)、Splunk(商业)
事件响应 检测→分析→抑制→根除→恢复→复盘
日志保护 防篡改、防删除、完整性校验
权限分离 审计员只读,运维员可配,系统只写

八、思考

  1. 为什么需要集中日志管理?分散日志管理有哪些问题?
  2. 日志归一化(Normalization)的作用是什么?不同厂商日志格式有何差异?
  3. 请描述一个多源日志关联分析的场景(如:防火墙 + EDR + DNS 关联)。
  4. ELK Stack 中 Logstash、Elasticsearch、Kibana 分别负责什么功能?
  5. 安全事件响应流程是什么?P0(紧急)事件应在多长时间内响应?

下篇预告:第239篇《等保 2.0 三级网络架构要求》——等保 2.0 三级系统中网络安全架构的合规要求、技术措施和审计要求。