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.
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-302015des 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.
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.