写点什么

LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集

  • 2025-07-30
    浙江
  • 本文字数:9148 字

    阅读完需:约 30 分钟

作者:羿莉(箫羿)

背景

日志标准化是安全防护的必然需求

在当今高度互联的数字环境中,网络安全威胁呈现多样化、隐蔽化和跨平台化趋势。企业需要从防火墙、终端设备、身份认证系统等多个维度采集日志,以构建完整的安全态势感知体系。然而,对于企业而言,其日志来源可能为多家安全厂商的防护产品。这些日志的来源不同、日志格式的非结构化特性、日志字段的碎片化问题等长期困扰着安全团队,导致数据整合成本高、分析效率低。

LoonCollector 可提供灵活的配置方案

LoonCollector 作为一款轻量级日志采集工具,通过兼容主流日志格式,提供多样化解析手段,为多源日志的统一接入提供了技术支撑。其设计目标不仅是“采集”,更是通过标准化接入和灵活解析规则,为后续的安全分析、威胁检测和合规审计奠定基础。下面我们将以长亭 WAF 日志、FortiGate 安全日志、Palo Alto 安全日志等企业级安全厂商防火墙日志为例开展具体的接入实践。

使用前提

  • 创建 Logstore【1】 用于日志存储、并配置相关索引【2】用于查询分析【3】

  • 在机器上安装 LoongCollector【4】、在 Logstore 下创建机器组【5】

工作原理

安全厂商防火墙日志可通过 Syslog 协议将日志转发到采集机器上,再通过 LoongCollector 采集、解析写入到阿里云的 SLS 日志库中。详细工作原理参见文档【6】。


企业级防火墙日志接入实践

注:下文聚焦场景描述与实践验证,具体 LoongCollector 采集配置(如配置端口、 字段设置、插件处理)可根据实际部署需求补充或修改。

长亭 WAF 日志

长亭 WAF【7】(雷池 SafeLine)是长亭科技推出的智能 Web 应用防火墙,专注于提供高效、精准的 Web 安全防护。长亭 WAF 是《中国网络安全市场【8】》Web 应用防护的头部厂商之一,除企业版外,还提供社区版【9】免费试用。

启用 Syslog 外发

雷池 WAF 事件支持通过配置 Syslog 转发以 JSON 格式记录转发到第三方机器中。其日志内容包含请求协议、源 IP、端口、时间戳、主机名、请求方法、事件 ID、攻击类型、风险级别等详细信息。


  • 进入雷池的 系统设置 页面,配置 Syslog 设置 选项即可启用 Syslog 外发功能。

  • 雷池使用 UDP 协议传输 Syslog 日志,内存格式遵从 RFC-5424【10】。

  • 配置完成后,点击 测试 按钮,若 Syslog 服务器收到测试信息,则代表配置成功。


配置 LoongCollector 采集

上述示例中的 LoongCollector 处理插件可将长亭 WAF 日志中 syslog 默认 _content_ 字段内容展开成 Json KV 对形式,其配置详情如下,具体操作步骤参见文档【6】:


{        "inputs": [{            "type": "service_syslog",            "detail": {                "Address": "udp://0.0.0.0:5144",  #如果一台服务器转发多种日志类型,需根据不同日志类型,调整端口                "ParseProtocol": "rfc5424"      }  }],        "processors": [{            "detail": {                "ExpandArray": false,                "ExpandConnector": ".", #按需配置                 "ExpandDepth": 0,                "IgnoreFirstConnector": true,                "KeepSource": false, #是否保留原字段, 按需                "KeepSourceIfParseError": true,                "NoKeyError": true,                "Prefix": "", #按需配置                "SourceKey": "_content_", #需要Json展开的原始字段名                "UseSourceKeyAsPrefix": false # 按需配置            },            "type": "processor_json"  }]}
复制代码

采集结果

示例日志采用官网日志样例【11】。


{  "scheme": "http",                 // 请求协议为 HTTP  "src_ip": "12.123.123.123",       // 源 IP 地址  "src_port": 53008,                // 源端口号  "socket_ip": "10.2.71.103",       // Socket IP 地址  "upstream_addr": "10.2.34.20",    // 上游地址  "req_start_time": 1712819316749,  // 请求开始时间  "rsp_start_time": null,           // 响应开始时间  "req_end_time": 1712819316749,    // 请求结束时间  "rsp_end_time": null,             // 响应结束时间  "host": "safeline-ce.chaitin.net",// 主机名  "method": "GET",                  // 请求方法为 GET  "query_string": "",               // 查询字符串  "event_id": "32be0ce3ba6c44be9ed7e1235f9eebab",            // 事件 ID  "session": "",                    // 会话  "site_uuid": "35",                // 站点 UUID  "site_url": "http://safeline-ce.chaitin.net:8083",         // 站点 URL  "req_detector_name": "1276d0f467e4",                       // 请求检测器名称  "req_detect_time": 286,           // 请求检测时间  "req_proxy_name": "16912fe30d8f", // 请求代理名称  "req_rule_id": "m_rule/9bf31c7ff062936a96d3c8bd1f8f2ff3",  // 请求规则 ID  "req_location": "urlpath",        // 请求位置为 URL 路径  "req_payload": "",                // 请求负载为空  "req_decode_path": "",            // 请求解码路径  "req_rule_module": "m_rule",      // 请求规则模块为 m_rule  "req_http_body_is_truncate": 0,   // 请求 HTTP 主体  "rsp_http_body_is_truncate": 0,   // 响应 HTTP 主体  "req_skynet_rule_id_list": [      // 请求 Skynet 规则 ID 列表    65595,    65595  ],  "http_body_is_abandoned": 0,      // HTTP 主体  "country": "US",                  // 国家  "province": "",                   // 省份  "city": "",                       // 城市  "timestamp": 1712819316,          // 时间戳  "payload": "",    "location": "urlpath",            // 位置为 URL 路径  "rule_id": "m_rule/9bf31c7ff062936a96d3c8bd1f8f2ff3",     // 规则 ID  "decode_path": "",                // 解码路径  "cookie": "sl-session=Z0WLa8mjGGZPki+QHX+HNQ==",          // Cookie  "user_agent": "PostmanRuntime/7.28.4",                    // 用户代理  "referer": "",                    // 引用页  "timestamp_human": "2024-04-11 15:08:36",                 // 时间戳  "resp_reason_phrase": "",         // 响应  "module": "m_rule",               // 模块为 m_rule  "reason": "",                     // 原因  "proxy_name": "16912fe30d8f",     // 代理名称  "node": "1276d0f467e4",           // 节点  "dest_port": 8083,                // 目标端口号  "dest_ip": "10.2.34.20",          // 目标 IP 地址  "urlpath": "/webshell.php",       // URL 路径  "protocol": "http",               // 协议为 HTTP  "attack_type": "backdoor",        // 攻击类型  "risk_level": "high",             // 风险级别  "action": "deny",                 // 动作  "req_header_raw": "GET /webshell.php HTTP/1.1\r\nHost: safeline-ce.chaitin.net:8083\r\nUser-Agent: PostmanRuntime/7.28.4\r\nAccept: */*\r\nAccept-Encoding: gzip, deflate, br\r\nCache-Control: no-cache\r\nCookie: sl-session=Z0WLa8mjGGZPki+QHX+HNQ==\r\nPostman-Token: 8e67bec1-6e79-458c-8ee5-0498f3f724db\r\nX-Real-Ip: 12.123.123.123\r\nSL-CE-SUID: 35\r\n\r\n",                      // 请求头原始内容  "body": "",                       // 主体  "req_block_reason": "web",        // 请求阻止原因  "req_attack_type": "backdoor",    // 请求攻击类型  "req_risk_level": "high",         // 请求风险级别  "req_action": "deny"              // 动作}
复制代码


采集结果如下,可见日志已经被解析成正常 json 的 KV 对模式,并且例如 req_header_raw 等字段也得到正确转义展示。用户后续可基于规整后日志创建索引,查询分析、告警可视化等。



Fortigate 日志接入

Fortinet【12】是全球网络安全领域的头部厂商,其核心定位为 “集成化安全架构” 的倡导者。FortiGate【13】 是 Fortinet 公司推出的下一代防火墙(NGFW),集成了防火墙、IPS、VPN、沙箱、WAF 等多种安全功能,支持从中小型企业到数据中心的全场景安全防护。

配置 syslog 转发

可以参考文档【14】进行 FortiGate 日志配置 Syslog 转发,除默认格式外,还支持转发 CEF 格式和 CSV 格式。


采集默认格式日志

飞塔默认格式日志样例

下文中的 FortiGate 日志示例为 Web 过滤日志,更多日志类型可参考官网文档【15】。


date=2019-05-13 time=16:29:45 logid="0316013056" type="utm" subtype="webfilter" eventtype="ftgd_blk" level="warning" vd="vdom1" eventtime=1557790184975119738 policyid=1 sessionid=381780 srcip=10.1.100.11 srcport=44258 srcintf="port12" srcintfrole="undefined" dstip=185.244.31.158 dstport=80 dstintf="port11" dstintfrole="undefined" proto=6 service="HTTP" hostname="morrishittu.ddns.net" profile="test-webfilter" action="blocked" reqtype="direct" url="/" sentbyte=84 rcvdbyte=0 direction="outgoing" msg="URL belongs to a denied category in policy" method="domain" cat=26 catdesc="Malicious Websites" crscore=30 craction=4194304 crlevel="high"
复制代码
采集配置和结果

可按照下面配置内容(去除注释)创建 FortiGate 日志的采集和配置。


{    "inputs": [        {            "Type": "service_syslog",//接收fortigate转发的syslog日志            "Address": "udp://0.0.0.0:9002",            "ParseProtocol": "rfc5424",            "IgnoreParseFailure": true        }    ],    "processors": [        {            "Type": "processor_split_key_value", //按照健对值模式展开            "ErrIfSourceKeyNotFound": true,            "ErrIfSeparatorNotFound": true,            "Quote": "\"", //配置引用符号'"'            "SourceKey": "_content_",//syslog转发的原始字段            "Delimiter": " ",//健对值之间按照空格分割            "KeepSource": false,            "UseSourceKeyAsPrefix": false,            "ErrIfKeyIsEmpty": true,            "Separator": "=",//健与值之间通过'='分割            "DiscardWhenSeparatorNotFound": false        }    ]}
复制代码


采集结果如下,日志得到了正确的规整和展开,例如值 URL belongs to a denied category in policy 也因为正确配置引用符号 '"',正确映射到 msg 字段。


采集 CEF 格式日志

CEF【16】 (Common Event Format)是由 ArcSight 提出的一种标准化日志格式,专为安全事件设计,用于统一不同设备生成的安全日志格式,便于 SIEM(安全信息与事件管理)系统解析。CEF 格式参考如下:


Jan 11 10:25:39 host CEF:Version|Device Vendor|Device Product|Device Version|Device Event Class ID|Name|Severity|[Extension]
复制代码
飞塔 CEF 格式日志样例

下面是飞塔 CEF 格式的流量日志示例,来源 Fortigate 官网【13】。


Dec 27 11:12:30 FGT-A-LOG CEF: 0|Fortinet|Fortigate|v6.0.3|00013|traffic:forward accept|3|deviceExternalId=FGT5HD3915800610 FTNTFGTlogid=0000000013 cat=traffic:forward FTNTFGTsubtype=forward FTNTFGTlevel=notice FTNTFGTvd=vdom1 FTNTFGTeventtime=1545937950 src=10.1.100.11 spt=58843 deviceInboundInterface=port12 FTNTFGTsrcintfrole=undefined dst=172.16.200.55 dpt=53 deviceOutboundInterface=port11 FTNTFGTdstintfrole=undefined FTNTFGTpoluuid=c2d460aa-fe6f-51e8-9505-41b5117dfdd4 externalId=440 proto=17 act=accept FTNTFGTpolicyid=1 FTNTFGTpolicytype=policy app=DNS FTNTFGTdstcountry=Reserved FTNTFGTsrccountry=Reserved FTNTFGTtrandisp=snat sourceTranslatedAddress=172.16.200.1 sourceTranslatedPort=58843 FTNTFGTappid=16195 FTNTFGTapp=DNS FTNTFGTappcat=Network.Service FTNTFGTapprisk=elevated FTNTFGTapplist=g-default FTNTFGTduration=180 out=70 in=528 FTNTFGTsentpkt=1 FTNTFGTrcvdpkt=1 FTNTFGTcustom_name1=HN123456 FTNTFGTcustom_name2=accounting_dpt
复制代码
采集配置
{    "inputs": [        {            "Type": "service_syslog",//接收飞塔CEF格式日志            "Address": "udp://0.0.0.0:9003",            "ParseProtocol": "rfc5424",            "IgnoreParseFailure": true        }    ],    "processors": [        {            "Type": "processor_parse_delimiter_native",            "SourceKey": "content",            "Separator": "|",//基于分割符提取CEF具体字段            "Quote": "\"", //引用符为'"'            "Keys": [                "time", //对应内容为Dec 27 11:12:30 FGT-A-LOG CEF: 0                "Vendor",                "Product",                "Version",                "Signature_ID",                "Name",                "Severity",                "Extension" //对应Severity后续字段            ],            "KeepingSourceWhenParseFail": true        },        {            "Type": "processor_split_key_value",            "ErrIfSourceKeyNotFound": true,            "ErrIfSeparatorNotFound": true,            "Quote": "\"",//引用符            "SourceKey": "Extension",//基于Extension字段进行健对值展开            "Delimiter": " ",//分割不同健值对            "KeepSource": false,            "ErrIfKeyIsEmpty": true,            "Separator": "=",//分割健与值            "DiscardWhenSeparatorNotFound": false        },        {            "Type": "processor_regex",            "FullMatch": false,            "SourceKey": "time", //对应Dec 27 11:12:30 FGT-A-LOG CEF: 0            "Regex": "^([A-Z][a-z]{2}\\s+\\d{1,2}\\s+\\d{2}:\\d{2}:\\d{2})\\s+(\\S+)\\s+CEF:\\s*(\\d+)",            "Keys": [                "Time",//提取时间                "Host",//提取主机                "CEF_Version"//提取CEF版本            ],            "KeepSource": false,            "KeepSourceIfParseError": true,            "NoKeyError": false,            "NoMatchError": true        }    ]}
复制代码
采集结果

Palo Alto Network 日志接入

Palo Alto Networks【17】是全球领先的网络安全企业, 是安全领域的市场领导者。Palo Alto 以下一代防火墙(NGFW【18】) 为核心,构建了覆盖网络、云、终端、物联网(IoT)的全方位安全解决方案,被广泛认为是网络安全领域的创新标杆。

配置 syslog 转发

为了采集 Palo Alto NGFW 日志,我们首先创建一个 Syslog server 的配置(FQDN、端口、传输协议等),然后配置 Syslog 转发日志类型,证书等。详细配置可以参考 Palo Alto Networks 的防火墙文档配置【19】。


配置 LoongCollector 采集

Palo Alto Networks 防火墙可转发至外部服务器的各类日志【20】(例如流量日志、威胁日志、 URL 过滤日志,数据过滤日志等)的标准字段,包括严重性等级、自定义格式及转义序列。为便于解析,所有字段均采用逗号作为分隔符:每个字段均为逗号分隔值(CSV)字符串。FUTURE_USE 标签表示该字段在当前 syslog 接收场景中暂未启用。

原始转发日志示例

下文是原始转发日志示例(内容已脱敏)


Feb 27 10:25:14 xxxx-X01xxxx.xxx.com 1,2025/02/27 10:25:14,026701001784,THREAT,vulnerability,2816,2025/02/27 10:25:14,30.**.***.192,142.***.**.227,113.**.**.129,142.***.**.227,LAN-To-WAN,,,ssl,vsys1,Inside,Outside,ae1,ethernet1/3,Global Log Forwarding to PlatformTest,2025/02/27 10:25:14,631169,1,25970,443,47499,443,0x402400,tcp,alert,"xxxxxx-xxx-xxxx-xx.xxxx.xxxxxx.com/",Non-RFC Compliant SSL Traffic on Port 443(56112),content-delivery-networks,informational,client-to-server,7365339184546050694,0x8000000000000000,United States,United States,,,0,,,0,,,,,,,,0,57,34,99,0,,SIP-PA03,,,,,0,,0,,N/A,protocol-anomaly,AppThreat-xxxx-xxxx,0x0,0,4294967295,,,cxxxxxx3-xxxx-xxxx-xxxxx-bxxxxxx1xxxx,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,2025-02-27T10:25:14.811+08:00,,,,encrypted-tunnel,networking,browser-based,4,"used-by-malware,able-to-transfer-file,has-known-vulnerability,tunnel-other-application,pervasive-use",,ssl,no,no,,,NonProxyTraffic
复制代码
配置采集

用户可配置本地服务器的 rsyslog 接收日志,并将 Palo Alto 日志存储到 /var/log/rsyslog/ 下的日志文件中。然后配置 LoongCollector 文件采集方式采集日志, 通过 SPL【21】 语句的 parse-csv 指令【22】处理日志【23】字段。



* |parse-csv content as FUTURE_USE, Receive_Time, Serial_Number, Type, Threat_Content_Type, FUTURE_USE_1, Generated_Time, Source_Address, Destination_Address, NAT_Source_IP, NAT_Destination_IP, Rule_Name, Source_User, Destination_User,Application,Virtual_System,Source_Zone,Destination_Zone,Inbound_Interface,Outbound_Interface,Log_Action,FUTURE_USE_2,Session_ID,Repeat_Count,Source_Port,Destination_Port,NAT_Source_Port,NAT_Destination_Port,Flags,IP_Protocol,Action,URL_Filename,Threat_ID,Category,Severity,Direction,Sequence_Number,Action_Flags,Source_Location,Destination_Location,FUTURE_USE_3,Content_Type,PCAP_ID,File_Digest,Cloud,URL_Index,User_Agent,File_Type,X_Forwarded_For,Referer,Sender,Subject,Recipient,Report_ID,Device_Group_Hierarchy_Level_1,Device_Group_Hierarchy_Level_2,Device_Group_Hierarchy_Level_3,Device_Group_Hierarchy_Level_4,Virtual_System_Name,Device_Name,FUTURE_USE_4,Source_VM_UUID,Destination_VM_UUID,HTTP_Method,Tunnel_ID_IMSI,Monitor_Tag_IMEI,Parent_Session_ID,Parent_Start_Time,Tunnel_Type,Threat_Category,Content_Version,FUTURE_USE_5,SCTP_Association_ID,Payload_Protocol_ID,HTTP_Headers,URL_Category_List,Rule_UUID,HTTP_2_Connection,Dynamic_User_Group_Name,XFF_Address,Source_Device_Category,Source_Device_Profile,Source_Device_Model,Source_Device_Vendor,Source_Device_OS_Family,Source_Device_OS_Version,Source_Hostname,Source_MAC_Address,Destination_Device_Category,Destination_Device_Profile,Destination_Device_Model,Destination_Device_Vendor,Destination_Device_OS_Family,Destination_Device_OS_Version,Destination_Hostname,Destination_MAC_Address,Container_ID,POD_Namespace,POD_Name,Source_External_Dynamic_List,Destination_External_Dynamic_List,Host_ID,Serial_Number_2,Domain_EDL,Source_Dynamic_Address_Group,Destination_Dynamic_Address_Group,Partial_Hash,High_Resolution_Timestamp,Reason,Justification,A_Slice_Service_Type,Application_Subcategory,Application_Category,Application_Technology,Application_Risk,Application_Characteristic,Application_Container,Tunneled_Application,Application_SaaS,Application_Sanctioned_State,Cloud_Report_ID,Cluster_Name,Flow_Type | project-away content 
复制代码
采集与解析结果



总结

LoonCollector 的接入实践表明,统一多源日志采集并非简单的“管道”功能,而是需要考虑格式的兼容性和扩展性,可以有效帮助减少企业安全分析中的“数据孤岛”问题,尤其在威胁分析和合规性场景中表现出显著优势。未来,随着云原生架构的普及,除防火墙产品外,可基于 LoonCollector 采集其他安全场景日志,并以此为基础 ,通过 SLS 智算引擎进行后续存储、查询、分析、可视化。 对于安全团队而言,选择一款既能适配当前需求、又能面向未来扩展的日志采集工具,将成为构建全面防御体系的关键一步。


【1】管理 Logstore


https://help.aliyun.com/zh/sls/manage-a-logstore/


【2】配置相关索引


https://help.aliyun.com/zh/sls/create-indexes


【3】索引模式查询与分析


https://help.aliyun.com/zh/sls/query-and-analyze-logs-in-index-mode/


【4】安装 LoongCollector


https://help.aliyun.com/zh/sls/loongcollector-installation-and-management/


【5】创建机器组


https://help.aliyun.com/zh/sls/loongcollector-machine-group


【6】采集 Linux 系统 Syslog


https://help.aliyun.com/zh/sls/collect-syslogs


【7】长亭 WAF


https://waf-ce.chaitin.cn/


【8】《2024 年中国网络安全市场全景图》发布


https://www.secrss.com/articles/67755


【9】长亭 WAF 社区版


https://github.com/chaitin/SafeLine


【10】RFC-5424


https://www.rfc-editor.org/rfc/rfc5424.html


【11】官网日志样例


https://help.waf-ce.chaitin.cn/node/01973fc6-e276-7c80-85ec-70b5d5863d60


【12】Fortinet


https://www.fortinet.com/


【13】FortiGate


https://docs.fortinet.com/product/fortigate/7.6


【14】参考文档


https://docs.fortinet.com/document/fortigate/7.4.0/administration-guide/250999/log-settings-and-targets


【15】官方文档


https://docs.fortinet.com/document/fortigate/7.2.3/administration-guide/986892/sample-logs-by-log-type


【16】CEF


https://docs.nxlog.co/integrate/cef-logging.html


【17】Palo Alto Networks


https://docs.paloaltonetworks.com/


【18】NGFW


https://docs.paloaltonetworks.com/ngfw/getting-started/get-started-with-ngfws


【19】文档配置


https://docs.paloaltonetworks.com/pan-os/10-2/pan-os-admin/monitoring/use-syslog-for-monitoring/configure-syslog-monitoring


【20】各类日志


https://docs.paloaltonetworks.com/pan-os/10-2/pan-os-admin/monitoring/use-syslog-for-monitoring/syslog-field-descriptions


【21】SPL 语法


https://help.aliyun.com/zh/sls/spl-overview/


【22】SPL 指令


https://help.aliyun.com/zh/sls/spl-instruction


【23】使用 Logtail SPL 解析日志


https://help.aliyun.com/zh/sls/use-logtail-spl-to-parse-logs

发布于: 17 小时前阅读数: 2
用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集_阿里云_阿里巴巴云原生_InfoQ写作社区