Modelo de documento de extensão

O exemplo de um documento de extensão fornece informações sobre como analisar um determinado tipo de Cisco FWSM para que os eventos não sejam enviados com um nome de evento incorreto.

Por exemplo, para resolver a palavra session, que está integrada no meio do nome do evento:

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)

Essa condição faz com que o DSM não reconheça nenhum evento e todos os eventos ficam sem análise e são associados ao criador de logs genérico.

Embora apenas uma parte da sequência de caracteres de texto (302015) seja usada para a procura QID, a sequência de texto inteira (%FWSM-session-0-302015) identifica o evento como vindo de um Cisco FWSM. Como a sequência de texto inteira não é válida, o DSM assume que o evento não é válido.

Exemplo de documento de extensão para analisar um tipo de evento

Um dispositivo FWSM possui vários tipos de eventos e vários com formatos exclusivos. O exemplo de documento de extensão a seguir indica como analisar um tipo de evento.

Nota: Os IDs de padrão não têm que combinar com os nomes de campo que eles estão analisando. Embora o exemplo a seguir duplique o padrão, o campo SourceIp e o campo SourceIpPreNAT podem usar o mesmo exato padrão nesse caso. Esta situação pode não ser verdadeira em todos os eventos 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>

Conceitos básicos da análise

O exemplo de documento de extensão anterior demonstra alguns dos aspectos básicos de análise:

  • Endereços IP
  • Portas
  • Protocolo
  • Vários campos que usam o mesmo padrão com grupos diferentes

Esse exemplo analisa todos os eventos FWSM que seguem o padrão especificado. Os campos que forem analisados poderão não estar presentes nesses eventos quando os eventos incluírem conteúdo diferente.

As informações que eram necessárias para criar essa configuração que não estavam disponíveis no evento:

  • O nome do evento é somente os 6 últimos dígitos (302015) da parte %FWSM-session-0-302015 do evento.
  • O FWSM possui uma categoria de evento de dispositivo codificado permanentemente de Cisco Firewall.
  • O DSM do FWSM usa o Cisco Pix QIDmap e, portanto, inclui o parâmetro device-type-id-override="6" no grupo correspondente. O ID do tipo de origem de log do Pix firewall é 6.
Nota: Se as informações do QID não forem especificadas ou estiverem indisponíveis, será possível modificar o mapeamento do evento. Para obter mais informações, consulte a seção Modificando o Mapeamento de Eventos no IBM QRadar User Guide

Nome do evento e categoria de evento do dispositivo

Um nome de evento e uma categoria de evento de dispositivo são necessários quando o QIDmap é procurado. Essa categoria de evento de dispositivo é um parâmetro de agrupamento no banco de dados que ajuda a definir eventos equivalentes em um dispositivo. O event-match-multiple no término do grupo correspondente inclui codificação permanente da categoria. O event-match-multiple usa o padrão EventNameId no nome de evento analisado para corresponder a até 6 dígitos. Esse padrão não é executado na carga útil completa, somente nessa parte analisada como o campo EventName.

O padrão EventName referencia a parte %FWSM dos eventos; todos os eventos Cisco FWSM contêm a parte %FWSM. O padrão no exemplo corresponde a %FWSM seguido de qualquer número (zero ou mais) de letras e traços. Essa correspondência de padrões resolve a palavra session que está integrada no meio do nome do evento que precisa ser removido. A gravidade do evento (de acordo com Cisco), seguida por um traço e, em seguida, o nome do evento verdadeiro conforme esperado por QRadar. A sequência (\d{6}) é a única sequência no padrão EventNameFWSM que tem um grupo de captura.

Os endereços IP e as portas do evento seguem o mesmo padrão básico: um endereço IP seguido de dois pontos (:), seguido do número da porta. Esse padrão analisa duas partes de dados (o endereço IP e a porta) e especifica grupos de captura diferentes na seção correspondente.

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

Padrões de endereço IP e de porta

Os padrões de endereço IP e de porta são quatro conjuntos de um a três dígitos, separados por pontos, seguidos de dois pontos (:) e do número da porta. A seção de endereço IP está em um grupo, assim como o número da porta, mas os dois pontos (:), não. As seções correspondentes para esses campos referenciam o mesmo nome padrão, mas um grupo de captura diferente (o endereço IP é grupo 1 e a porta é grupo 2).

O protocolo é um padrão comum que procura a carga útil para a primeira instância de TCP, UDP, ICMP ou GRE. O padrão é marcado com o parâmetro sem distinção entre maiúsculas e minúsculas para que qualquer ocorrência corresponda.

Embora um segundo padrão de protocolo não ocorra no evento usado no exemplo, há um segundo padrão de protocolo definido com uma ordem de dois. Se o padrão de protocolo com a menor ordem não corresponder, o próximo será tentado, e assim por diante. O segundo padrão de protocolo também demonstra substituição direta; não há grupos de correspondência no padrão, mas com o parâmetro enable-substitutions ativado, o próximo TCP poderá ser usado no lugar de protocol=6.