Erweiterungsdokumentvorlage

Das Beispiel eines Erweiterungsdokuments enthält Informationen zum Parsen eines bestimmten Typs von Cisco FWSM, damit Ereignisse nicht mit einem falschen Ereignisnamen gesendet werden.

Wenn Sie beispielsweise das Wort sessionauflösen möchten, das in der Mitte des Ereignisnamens eingebettet ist:

Nov 17 09:28:26 192.0.2.1 %FWSM-session-0-302015: Built UDP connection for faddr <IP_address1>/80 gaddr <IP_address2>/31696 laddr <IP_address3>/2157 duration 0:00:00 bytes 57498 (TCP FINs)

Diese Bedingung führt dazu, dass das DSM keine Ereignisse erkennt und alle Ereignisse nicht analysiert und der generischen Protokollfunktion zugeordnet sind.

Obwohl nur ein Teil der Textzeichenfolge (302015) für die QID-Suche verwendet wird, identifiziert die gesamte Textzeichenfolge (%FWSM-session-0-302015) das Ereignis als von Cisco FWSM kommend. Da die gesamte Textzeichenfolge ungültig ist, geht DSM davon aus, dass das Ereignis nicht gültig ist.

Beispiel eines Erweiterungsdokuments für das Parsing eines Ereignistyps

Ein FWSM-Gerät hat viele Ereignistypen und viele mit eindeutigen Formaten. Das folgende Beispiel für ein Erweiterungsdokument gibt an, wie ein Ereignistyp analysiert werden soll.

Hinweis: Die Muster-IDs müssen nicht mit den Feldnamen übereinstimmen, die sie syntaktisch analysieren. Obwohl das folgende Beispiel das Muster dupliziert, verwenden das Feld SourceIp und das Feld SourceIpPreNAT in diesem Fall dasselbe Muster. Diese Situation ist möglicherweise nicht in allen FWSM-Ereignissen wahr.
<?xml version="1.0" encoding="UTF-8"?>
<device-extension xmlns="event_parsing/device_extension"> 
<pattern id="EventNameFWSM_Pattern" xmlns=""><![CDATA[%FWSM[a-zA-Z\-]*\d-(\d{1,6})]]></pattern>
<pattern id="SourceIp_Pattern" xmlns=""><![CDATA[gaddr (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/([\d]{1,5})]]></pattern> 
<pattern id="SourceIpPreNAT_Pattern" xmlns=""><![CDATA[gaddr (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/([\d]{1,5})]]></pattern>
<pattern id="SourceIpPostNAT_Pattern" xmlns=""><![CDATA[laddr (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/([\d]{1,5})]]></pattern>
<pattern id="DestinationIp_Pattern" xmlns=""><![CDATA[faddr (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/([\d]{1,5})]]></pattern>
<pattern id="Protocol_Pattern" case-insensitive="true" xmlns=""><![CDATA[(tcp|udp|icmp|gre)]]></pattern>
<pattern id="Protocol_6_Pattern" case-insensitive="true" xmlns=""><![CDATA[protocol=6]]></pattern> 
<pattern id="EventNameId_Pattern" xmlns=""><![CDATA[(\d{1,6})]]></pattern>
<match-group order="1" description="FWSM Test" device-type-id-override="6" xmlns=""> 
      <matcher field="EventName" order="1" pattern-id="EventNameFWSM_Pattern" capture-group="1"/>     
      <matcher field="SourceIp" order="1" pattern-id="SourceIp_Pattern" capture-group="1" /> 
      <matcher field="SourcePort" order="1" pattern-id="SourcePort_Pattern" capture-group="2"/> 
      <matcher field="SourceIpPreNAT" order="1" pattern-id="SourceIpPreNAT_Pattern" capture-group="1" /> 
      <matcher field="SourceIpPostNAT" order="1" pattern-id="SourceIpPostNAT_Pattern" capture-group="1" /> 
      <matcher field="SourcePortPreNAT" order="1" pattern-id="SourcePortPreNAT_Pattern" capture-group="2" />   
      <matcher field="SourcePortPostNAT" order="1" pattern-id="SourcePortPostNAT_Pattern" capture-group="2" /> 
      <matcher field="DestinationIp" order="1" pattern-id="DestinationIp_Pattern" capture-group="1" />         
      <matcher field="DestinationPort" order="1" pattern-id="DestinationIp_Pattern" capture-group="2" /> 
      <matcher field="Protocol" order="1" pattern-id="Protocol_Pattern" capture-group="1" /> 
      <matcher field="Protocol" order="2" pattern-id="Protocol_6_Pattern" capture-group="TCP" enable-substitutions=true/>      
      <event-match-multiple pattern-id="EventNameId" capture-group-index="1" device-event-category="Cisco Firewall"/> 
   </match-group> 
</device-extension>
<?xml version="1.0" encoding="UTF-8"?> 
<device-extension xmlns="event_parsing/device_extension"> 
<!-- Do not remove the "allEventNames" value -->
<pattern id="EventName-Fakeware_Pattern" xmlns=""><![CDATA[]]></pattern>
<pattern id="SourceIp-Fakeware_Pattern" xmlns=""><![CDATA[]]</pattern>
<pattern id="SourcePort-Fakeware_Pattern" xmlns=""><![CDATA[]]></pattern>
<pattern id="SourceMAC-Fakeware_Pattern" xmlns=""><![CDATA[]]></pattern>
<pattern id="DestinationIp-Fakeware_Pattern" xmlns=""><![CDATA[]]></pattern>
<pattern id="DestinationPort-Fakeware_Pattern" case-insensitive="true" xmlns=""><![CDATA[]]></pattern>
<pattern id="Protocol-Fakeware_Pattern" case-insensitive="true" xmlns=""><![CDATA[]]></pattern> 
<match-group order="1" description="FWSM Test" device-type-id-override="6" xmlns=""> 
   <matcher field="EventName" order="1" pattern-id="EventName-Fakeware_Pattern" capture-group="1"/> 
   <matcher field="SourceIp" order="1" pattern-id="SourceIp-Fakeware_Pattern" capture-group="1" /> 
   <matcher field="SourcePort" order="1" pattern-id="SourcePort-Fakeware_Pattern" capture-group="1"/> 
   <matcher field="SourceMAC" order="1" pattern-id="SourceMAC-Fakeware_Pattern" capture-group="1" /> 
   <matcher field="DestinationIp" order="1" pattern-id="DestinationIp-Fakeware_Pattern" capture-group="1" /> 
   <matcher field="DestinationPort" order="1" pattern-id="SDestinationPort-Fakeware_Pattern" capture-group="1" /> 
   <matcher field="Protocol" order="1" pattern-id="Protocol-Fakeware_Pattern" capture-group="1" />   
   <event-match-multiple pattern-id="EventNameId" capture-group-index="1" device-event-category="Cisco Firewall"/> 
</match-group> 
</device-extension>

Grundlegende Informationen zum Parsing

Das vorherige Beispiel eines Erweiterungsdokuments veranschaulicht einige grundlegende Aspekte des Parsings:

  • IP-Adressen
  • Ports
  • Protokoll
  • Mehrere Felder, die dasselbe Muster mit unterschiedlichen Gruppen verwenden

In diesem Beispiel werden alle FWSM-Ereignisse analysiert, die dem angegebenen Muster entsprechen. Die geparsten Felder sind in diesen Ereignissen möglicherweise nicht vorhanden, wenn die Ereignisse unterschiedliche Inhalte enthalten.

Die Informationen, die erforderlich waren, um diese Konfiguration zu erstellen, die im Ereignis nicht verfügbar war:

  • Der Ereignisname besteht nur aus den letzten 6 Ziffern (302015) des Abschnitts %FWSM-session-0-302015 des Ereignisses.
  • FWSM hat die fest codierte Einheitenereigniskategorie Cisco Firewall.
  • Der FWSM DSM verwendet die Cisco Pix QIDmap und schließt daher den Parameter device-type-id-override="6" in die Übereinstimmungsgruppe ein. Die Protokollquellentyp-ID der Pix-Firewall ist 6.
Hinweis: Wenn die QID-Informationen nicht angegeben werden oder nicht verfügbar sind, können Sie die Ereigniszuordnung ändern. Weitere Informationen finden Sie im Abschnitt zum Ändern der Ereigniszuordnung in IBM QRadar User Guide.

Ereignisname und Geräteereigniskategorie

Ein Ereignisname und eine Einheitenereigniskategorie sind erforderlich, wenn die QIDmap durchsucht wird. Diese Einheitenereigniskategorie ist ein Gruppierungsparameter in der Datenbank, mit dem ähnliche Ereignisse in einer Einheit definiert werden können. Die event-match-multiple am Ende der Übereinstimmungsgruppe enthält die feste Codierung der Kategorie. Die event-match-multiple verwendet das EventNameId -Muster auf dem analysierten Ereignisnamen, um bis zu 6 Ziffern abzugleichen. Dieses Muster wird nicht für die vollständigen Nutzdaten ausgeführt, sondern nur für den Teil, der als Feld EventName geparst wurde.

Das Muster EventName referenziert den Teil %FWSM der Ereignisse; alle Cisco FWSM-Ereignisse enthalten den Teil %FWSM . Das Muster im Beispiel entspricht %FWSM gefolgt von einer beliebigen Zahl (null oder mehr) von Buchstaben und Gedankenstrichen. Diese Musterübereinstimmung löst das Wort session auf, das in der Mitte des Ereignisnamens eingebettet ist, der entfernt werden muss. Die Ereigniswertigkeit (gemäß Cisco), gefolgt von einem Gedankenstrich und dem tatsächlichen Ereignisnamen, wie von QRadarerwartet. Die Zeichenkette " (\d{6}) " ist die einzige Zeichenkette innerhalb des Musters " EventNameFWSM ", die eine Erfassungsgruppe hat.

Die IP-Adressen und Ports für das Ereignis folgen demselben Basismuster: eine IP-Adresse, gefolgt von einem Doppelpunkt, gefolgt von der Portnummer. Dieses Muster analysiert zwei Datenteile (IP-Adresse und Port) und gibt verschiedene Erfassungsgruppen im Abschnitt für die Abgleichkomponente an.

<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" capture-group="1"/>   
   <matcher field="DeviceTime" order="1" pattern-id="DeviceTime1"  
       capture-group="1" ext-data="dd/MMM/YYYY:hh:mm:ss"/> 
   <matcher field="UserName" order="1" pattern-id="Username" capture-group="1"/>
</match-group>
</device-extension>

IP-Adress-und Portmuster

Die IP-Adress-und Portmuster bestehen aus vier Gruppen von ein bis drei Ziffern, getrennt durch Punkte, gefolgt von einem Doppelpunkt und der Portnummer. Der Abschnitt für die IP-Adresse befindet sich in einer Gruppe, ebenso wie die Portnummer, aber nicht der Doppelpunkt. Die Abgleichkomponenten für diese Felder verweisen auf denselben Musternamen, aber eine andere Erfassungsgruppe (die IP-Adresse ist Gruppe 1 und der Port ist Gruppe 2).

Das Protokoll ist ein gängiges Muster, das die Nutzdaten nach der ersten Instanz von TCP, UDP, ICMP oder GRE durchsucht. Das Muster wird mit dem Parameter für die Beachtung der Groß-/Kleinschreibung markiert, sodass alle Vorkommen übereinstimmen.

Obwohl in dem im Beispiel verwendeten Ereignis kein zweites Protokollmuster auftritt, gibt es ein zweites Protokollmuster, das in der Reihenfolge 2 definiert ist. Wenn das Protokollmuster mit der niedrigsten Reihenfolge nicht übereinstimmt, wird versucht, das nächste Muster zu verwenden usw. Das zweite Protokollmuster veranschaulicht auch die direkte Substitution. Es gibt keine Übereinstimmungsgruppen im Muster, aber bei aktiviertem Parameter enable-substitutions kann der Text TCP anstelle von protocol=6verwendet werden.