You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写Logstash Filter以提取Cisco ASA指定ACL_ID的流量日志

Logstash Filter 配置方案(针对Cisco ASA %ASA-4-106100日志)

前提假设

假设你的%ASA-4-106100日志格式示例如下:

%ASA-4-106100: access-list ACL_PROD denied tcp 192.168.20.5/32(54321) -> 172.16.10.20/32(443) hit-cnt 3 first hit [0xdef456]

这里需要匹配的指定ACL_ID为ACL_PROD,哈希码格式为[0xxxxxxx]。

完整Filter配置

filter {
  # 仅处理Cisco ASA的106100日志
  if [message] =~ /%ASA-4-106100/ {
    # 用grok解析日志核心字段
    grok {
      match => {
        "message" => "%ASA-4-106100: access-list %{DATA:acl_id} %{DATA:action} %{DATA:proto} %{DATA:src_full} -> %{DATA:dst_full} hit-cnt %{NUMBER:hit_cnt} first hit %{DATA:hash_code}"
      }
      add_tag => ["asa_acl_hit"]
    }

    # 筛选符合条件的日志:指定ACL_ID + 合法哈希码格式
    if [acl_id] == "ACL_PROD" and [hash_code] =~ /^\[0x[0-9a-fA-F]+\]$/ {
      # 提取不带端口的源地址
      mutate {
        split => { "src_full" => "(" }
        add_field => { "src_ip" => "%{[src_full][0]}" }
        remove_field => ["src_full"]
      }

      # 保留带端口的目的地址并重命名字段
      mutate {
        rename => { "dst_full" => "dst_ip_port" }
      }
    } else {
      # 不符合条件的日志直接丢弃
      drop {}
    }
  }
}

配置说明

  1. 日志类型前置筛选:通过正则匹配只处理%ASA-4-106100类型日志,减少无效解析开销。
  2. Grok字段解析:将日志中的ACL_ID、动作、协议、源/目的全地址、命中次数、哈希码等信息提取为独立字段,便于后续条件判断和字段处理。
  3. 精准条件过滤:仅保留ACL_ID匹配目标值、哈希码符合[0x十六进制]格式的日志,其余直接丢弃。
  4. 目标字段处理:
    • 源地址:拆分带端口的源地址字符串,提取括号前的IP/掩码部分作为src_ip字段。
    • 目的地址:直接将解析出的带端口完整地址重命名为dst_ip_port,保留原始格式。

自定义调整点

  • 若日志格式有细节差异,可修改grok匹配模式中的占位符,比如用%{IP:src_ip_raw}/%{NUMBER:src_mask}更精准匹配IP和掩码。
  • 将ACL_PROD替换为你实际需要匹配的ACL_ID。
  • 若哈希码格式不同,调整正则表达式/^\[0x[0-9a-fA-F]+\]$/即可。

内容的提问来源于stack exchange,提问作者Andrey Glushchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:57:18