解析问题的示例

创建日志源扩展时,可能会迂到一些解析问题。 使用这些 XML 示例来解决特定解析问题。

转换协议

以下示例显示了在有效内容中的任何位置搜索 TCP , UDP , ICMP 或 GRE 的典型协议转换。 搜索模式由任何字边界 (例如,制表符,空格和行尾) 包围。 另外,将忽略字符大小写:

<pattern id="Protocol" case-insensitive="true" xmlns="">
<![CDATA[\b(TCP|UDP|ICMP|GRE)\b]]>
</pattern> 
<matcher field="Protocol" order="1" pattern-id="Protocol" capture-group="1" />

进行单一替换

以下示例显示用于解析源 IP 地址的替换,然后覆盖结果并将 IP 地址设置为 192.0.2.1,从而忽略有效内容中的 IP 地址。

此示例假定源 IP 地址与类似 SrcAddress=203.0.113.1 的内容匹配,后跟逗号:

<pattern id="SourceIp_AuthenOK" xmlns=""> 
<![CDATA[SrcAddress=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}),]]>
</pattern>

<matcher field="SourceIp" order="1" pattern-id="SourceIp_AuthenOK" 
capture-group="192.0.2.1" enable-substitutions="true"/>

生成以冒号分隔的 MAC 地址

QRadar 检测以冒号分隔的格式的 MAC 地址。 由于所有设备都可能不使用此表单,因此以下示例显示了如何更正此情况:

<pattern id="SourceMACWithDashes" xmlns="">
    <![CDATA[SourceMAC=([0-9a-fA-F]{2})-([0-9a-fA-F]{2})-([0-9a-fA-F]{2})-
    ([0-9a-fA-F]{2})-([0-9a-fA-F]{2})-([0-9a-fA-F]{2})]]>
</pattern> 
 <matcher field="SourceMAC" order="1" pattern-id=" 
    SourceMACWithDashes" capture-group="\1:\2:\3:\4:\5:\6" />

在前面的示例中, SourceMAC=12-34-1a-2b-3c-4d 将转换为 MAC 地址 12:34:1a:2b:3c:4d

如果从模式中除去了短划线,那么该模式将转换 MAC 地址,并且没有分隔符。 如果插入了空格,那么该模式会转换以空格分隔的 MAC 地址。

组合 IP 地址和端口

通常, IP 地址和端口组合成一个用冒号分隔的字段。

以下示例使用具有一个模式的多个捕获组:

pattern id="SourceIPColonPort" xmlns="">
<! [CDATA[Source=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):([\d]{1,5})]]>
</pattern> 

<matcher field="SourceIp" order="1" pattern-id="SourceIPColonPort" capture-group="1" /> 
<matcher field="SourcePort" order="1" pattern-id="SourceIPColonPort" capture-group="2" />

修改事件类别

可以对设备事件类别进行硬编码,也可以调整严重性。

以下示例调整单个事件类型的严重性:

<event-match-single event-name="TheEvent" device-event-category="Actual Category" severity="6" send-identity="UseDSMResults" />

禁止身份更改事件

DSM 可能不必要地发送身份更改事件。

以下示例显示如何禁止从单个事件类型和一组事件发送身份更改事件。

// Never send identity for the event with an EventName of Authen OK 
<event-match-single event-name="Authen OK" device-event-category="ACS" 
severity="6" send-identity="OverrideAndNeverSend" />

// Never send any identity for an event with an event name starting with 7, 
followed by one to five other digits: 
<pattern id="EventNameId" xmlns=""><![CDATA[(7\d{1,5})]]>
</pattern>

<event-match-multiple pattern-id="EventNameId" capture-group-index="1" 
device-event-category="Cisco Firewall" severity="7" 
send-identity="OverrideAndNeverSend"/> 

格式化事件日期和时间戳记

日志源扩展可以检测事件上的几种不同的日期和时间戳记格式。

由于设备制造商不符合标准日期和时间戳记格式,因此 ext-data 可选参数包含在日志源扩展中,以允许重新格式化 DeviceTime 。 以下示例显示如何重新格式化事件以更正日期和时间戳记格式:

<device-extension> 
<pattern id="EventName1">(logger):</pattern> 
<pattern id="DeviceTime1">time=\[(\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2})\]</pattern> 
<pattern id="Username">(TLSv1)</pattern> 

<match-group order="1" description="Full Test"> 
   <matcher field="EventName" order="1" pattern-id="EventName1_Pattern" capture-group="1"/> 
   <matcher field="DeviceTime" order="1" pattern-id="DeviceTime1_Pattern" 
   capture-group="1" ext-data="dd/MMM/YYYY:hh:mm:ss"/> 
   <matcher field="UserName" order="1" pattern-id="Username_Pattern" capture-group="1"/>
</match-group>
</device-extension>

单个日志源中的多种日志格式

有时,多个日志格式包含在单个日志源中。

May 20 17:15:50 kernel: DROP IN=vlan2 OUT= MAC= SRC=<Source_IP_address> 
DST=<Destination_IP_address> PROTO=UDP SPT=1900 DPT=1900
May 20 17:16:26 <server>[22331]: password auth succeeded for 'root' from <IP_address>
May 20 17:16:28 <server>[22331]: exit after auth (root): Exited normally </br>
May 20 17:16:14 <server>[22331]: bad password attempt for 'root' from <IP_address>:3364

例如,存在 2 日志格式: 一个用于防火墙事件,另一个用于认证事件。 必须编写多个用于解析事件的模式。 您可以指定要解析的顺序。 通常,先解析越频繁的事件,然后解析越不频繁的事件。 您可以根据需要使用任意数量的模式来解析所有事件。 顺序变量确定与模式匹配的顺序。

以下示例显示了以下字段的多种格式: EventName 和 UserName

将编写单独的模式以解析每种唯一的日志类型。 当您将值分配给规范化字段时,将同时引用这两个模式。


<pattern id="EventName-DDWRT-FW_Pattern" xmlns=""><![CDATA[kernel\:\s(.*?)\s]]></pattern>
<pattern id="EventName-DDWRT-Auth_Pattern" xmlns=""><![CDATA[sdrophear\[\d{1,5}\]|:\s(.*?\s.*?)\s]]>
</pattern>

<pattern id="UserName_DDWRT-Auth1__Pattern" xmlns=""><![CDATA[\sfor\s\'(.*?)\'s]]></pattern>
<pattern id="UserName_DDWRT-Auth2__Pattern" xmlns=""><![CDATA[\safter\sauth\s\((.*?)\)\:]]></pattern>

<match-group order="1" description="DD-WRT Device Extensions xmlns=""> 
   <matcher field="EventName" order="1" pattern-id="EventName-DDWRT-FW_Pattern" capture-group="1"/> 
   <matcher field="EventName" order="2" pattern-id="EventName-DDWRT-Auth_Pattern" capture-group="1"/> 
   
   <matcher field="UserName" order="1" pattern-id="UserName-DDWRT-Auth1_Pattern" capture-group="1"/> 
   <matcher field="UserName" order="2" pattern-id="UserName-DDWRT-Auth2_Pattern" capture-group="1"/> 
   

解析 CSV 日志格式

要解析 CSV 格式的日志文件,请使用 DSM 编辑器中提供的通用列表表达式类型。 有关更多信息,请参阅 结构化数据的通用列表格式的表达式 (https://www.ibm.com/docs/en/qsip/7.5?topic=editor-expressions-in-generic-list-format-structured-data)。

Event,User,Source IP,Source Port,Destination IP,Destination Port
Failed Login,<Username>,<Source_IP_address>,1024,<Destination_IP_address>,22 
Successful Login,<Username>,<Source_IP_address>,1743,<Destination_IP_address>,110 
Privilege Escalation,<Username>,<Source_IP_address>,1028,<Destination_IP_address>,23