Plantilla de documento de extensión

El ejemplo de documento de extensión proporciona información sobre cómo analizar un tipo determinado de Cisco FWSM para que los sucesos no se envíen con un nombre de suceso incorrecto.

Por ejemplo, si desea resolver la palabra session, que está intercalada en medio del nombre de suceso:

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)

Esta condición hace que el DSM no reconozca ningún suceso, y todos los sucesos quedan sin analizar y se asocian con el registrador genérico.

Aunque sólo se utiliza una parte de la serie de texto (302015) para la búsqueda de QID, la serie de texto completa (%FWSM-session-0-302015) identifica el suceso como procedente de un Cisco FWSM. Dado que la serie de texto completa no es válido, el DSM asume que el suceso no es válido.

Ejemplo de documento de extensión para analizar un tipo de suceso

Un dispositivo FWSM tiene muchos tipos de sucesos y muchos con formatos exclusivos. El siguiente ejemplo de documento de extensión indica cómo analizar un tipo de suceso.

Nota: Los ID de patrón no tienen que coincidir con los nombres de campo que están analizando. Aunque el ejemplo siguiente duplica el patrón, el campo SourceIp y el campo SourceIpPreNAT pueden utilizar el mismo patrón exacto en este caso. Esta situación podría no ser cierta en todos los sucesos FWSM.
<?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>

Aspectos básicos del análisis

El ejemplo de documento de extensión anterior muestra algunos de los aspectos básicos del análisis:

  • Direcciones IP
  • Puertos
  • Protocolo
  • Varios campos que utilizan el mismo patrón con grupos diferentes

Este ejemplo analiza todos los sucesos FWSM que siguen el patrón especificado. Los campos que se analizan podrían no estar presente en esos sucesos cuando los sucesos incluyen contenido diferente.

La información necesaria para crear esta configuración que no estaba disponible en el suceso:

  • El nombre de suceso sólo tiene los últimos 6 dígitos (302015) de la parte %FWSM-session-0-302015 del suceso.
  • El FWSM tiene una categoría de suceso de dispositivo codificado de Cisco Firewall.
  • El DSM FWSM utiliza la QIDmap Cisco Pix y, por tanto, incluye el parámetro device-type-id-override="6" en el grupo de coincidencia. El ID de tipo de origen de registro de cortafuegos Pix es 6.
Nota: Si la información de QID no se especifica o no está disponible, puede modificar la correlación de sucesos. Para obtener más información, consulte la sección Modificación de correlación de sucesos en la publicación IBM QRadar User Guide.

Nombre de suceso y categoría de sucesos de dispositivo

Son necesarios un nombre de suceso y una categoría de sucesos de dispositivo cuando se busca la QIDmap. Esta categoría de sucesos de dispositivo es un parámetro de agrupación dentro de la base de datos que ayuda a definir sucesos parecidos dentro de un dispositivo. El valor event-match-multiple al final del grupo de coincidencia incluye la codificación de la categoría. event-match-multiple utiliza el patrón EventNameId en el nombre de suceso analizado para comparar un máximo de 6 dígitos. Este patrón no se ejecuta en la carga completa, sólo en la parte analizada como el campo EventName.

El patrón EventName hace referencia a la parte %FWSM de los sucesos; todos los sucesos de Cisco FWSM contienen la parte %FWSM. El patrón del ejemplo compara %FWSM seguido de cualquier número (cero o más) de letras y guiones. Esta coincidencia de patrón resuelve que la palabra session que está intercalada en medio del nombre de suceso debe eliminarse. La gravedad del suceso (según Cisco), seguida de un guión y, a continuación, el nombre de suceso verdadero según lo esperado por QRadar. La serie (\d{6}) es la única serie dentro del patrón EventNameFWSM que tiene un grupo de captura.

Todas las direcciones IP y puertos del suceso siguen el mismo patrón básico: una dirección IP seguida de un signo de dos puntos seguido del número de puerto. Este patrón analiza dos fragmentos de datos (la dirección IP y el puerto) y especifica grupos de captura diferentes en la sección de buscador de coincidencias (matcher).

<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>

Patrones de dirección IP y puerto

Los patrones de dirección IP y puerto están formados por cuatro conjuntos de uno a tres dígitos, separados por puntos seguidos de un signo de dos puntos y el número de puerto. La sección de dirección IP está en un grupo, como el número de puerto, pero no los dos puntos. Las secciones de buscador de coincidencias (matcher) para estos campos hacen referencia al mismo nombre de patrón, pero a un grupo de captura diferente (la dirección IP es del grupo 1 y el puerto es del grupo 2).

El protocolo es un patrón común que busca en la carga útil la primera instancia de TCP, UDP, ICMP o GRE. El patrón se marca con el parámetro case-insensitive, de modo que cualquier aparición coincida.

Aunque no aparece un segundo patrón de protocolo en el suceso de que se utiliza en el ejemplo, hay un segundo patrón de protocolo que se define con una orden de dos. Si el patrón de protocolo lowest-ordered no coincide, se intenta el siguiente, y así sucesivamente. El segundo patrón de protocolo también muestra la sustitución directa; no hay grupos de coincidencia en el patrón, pero con el parámetro enable-substitutions habilitado, puede utilizarse el texto TCP en lugar de protocol=6.