当前位置: 首页 > news >正文

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

作者:羿莉(箫羿)

背景

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

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

LoonCollector 可提供灵活的配置方案

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

使用前提

  • 创建 Logstore【1】 用于日志存储、并配置相关索引【2】用于查询分析【3】
  • 在机器上安装 LoongCollector【4】、在Logstore 下创建机器组【5】

工作原理

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

image

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

注:下文聚焦场景描述与实践验证,具体 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 服务器收到测试信息,则代表配置成功。

image

配置 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 等字段也得到正确转义展示。用户后续可基于规整后日志创建索引,查询分析、告警可视化等。

image

image

Fortigate 日志接入

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

配置 syslog 转发

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

image

采集默认格式日志
飞塔默认格式日志样例

下文中的 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 字段。

image

采集 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}]
}
采集结果

image

Palo Alto Network 日志接入

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

配置 syslog 转发

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

image

配置 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】字段。

image

* |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 
采集与解析结果

image

image

image

总结

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

http://www.lryc.cn/news/604627.html

相关文章:

  • java~单例设计模式
  • react19更新哪些东西
  • 如何通过IT-Tools与CPolar构建无缝开发通道?
  • 第十七章 追新词
  • 7.Linux :进程管理,进程控制与计划任务
  • LLM—— 基于 MCP 协议(Streamable HTTP 模式)的工具调用实践
  • 【拓扑排序】P2403 [SDOI2010] 所驼门王的宝藏|省选-
  • Redis学习------缓存雪崩
  • 01初识算法:从零开始的思维之旅
  • 【Spring Cloud】Spring Cloud 跨域解决方案深度剖析与工程实践指南(万字详解)
  • docker 安装elasticsearch
  • uniapp中的$vm
  • LeetCode 56 - 合并区间
  • 7. 传输层协议 TCP
  • 关系型数据库架构最优选择:基于落霞归雁思维框架的分析
  • 15.11 单卡训练770M参数模型!DeepSpeed ZeRO-3实战:RTX 4090显存直降6.8GB
  • 10 分钟上手 Elasticsearch 语义搜索(Serverless Cloud 本地双版本教程)
  • 基因组选择育种-2.1.最佳线性无偏估计
  • GitHub使用小记——本地推送、外部拉取和分支重命名
  • RPA软件推荐:提升企业自动化效率
  • STM32学习记录--Day3
  • IPEmotion数据采集软件功能介绍
  • 【n8n】如何跟着AI学习n8n【02】:基础节点学习
  • Java面试宝典:MySQL InnoDB引擎底层解析
  • 5.Origin2021如何绘制柱状+折线双Y轴图?
  • 51单片机外部引脚介绍
  • 影视级 3D 特效的软件工具链:从概念到成片的全流程解析
  • LAMP及其环境的部署搭建
  • 逻辑回归:从线性回归到分类决策的演化
  • Spring Boot音乐服务器项目-查询喜欢的音乐模块