확장 문서 템플리트
예제 확장 문서는 올바르지 않은 이벤트 이름을 사용하여 이벤트가 전송되지 않도록 Cisco FWSM의 특정 유형을 구문 분석하는 방법에 대한 정보를 제공합니다.
예를 들어, 이벤트 이름의 가운데에 임베드된 session이라는
단어를 분석하려는 경우 다음 코드를 사용하십시오.
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)이 조건은 DSM이 구문 분석되지 않았으며 일반 로그 프로그램과 연관된 모든 이벤트를 인식하지 않도록 합니다.
QID 검색에 대해 텍스트 문자열의 부분(302015)만
사용되어도 전체 텍스트 문자열(%FWSM-session-0-302015)은
Cisco FWSM에서 오는 이벤트를 식별합니다. 전체 텍스트 문자열이 올바르지 않으므로
DSM은 이벤트가 올바르지 않은 것으로 간주합니다.
한 이벤트 유형을 구문 분석하는 확장 문서 예제
FWSM 디바이스에는 다수의 이벤트 유형이 있고 이중 다수는 고유한 형식을 갖습니다. 다음 확장 문서 예제는 한 이벤트 유형을 구문 분석하는 방법을 보여줍니다.
SourceIp 필드와
SourceIpPreNAT 필드는 완전히 동일한 패턴을
사용할 수 있습니다. 이 상황이 모든 FWSM 이벤트에서 true인 것은
아닙니다.<?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> 기본 구문 분석
이전의 확장 문서 예제는 구문 분석의 기본적인 부분을 보여줍니다.
- IP 주소
- 포트
- 프로토콜
- 다른 그룹에서 동일한 패턴을 사용하는 여러 필드
이 예제는 지정된 패턴을 따르는 모든 FWSM 이벤트를 구문 분석합니다. 이벤트에 다른 컨텐츠가 포함된 경우 구문 분석된 필드가 해당 이벤트에 표시되지 않을 수 있습니다.
이벤트에서 사용 가능하지는 않지만 이 구성을 작성하는 데 필요한 정보는 다음과 같습니다.
- 이벤트 이름은 이벤트의
%FWSM-session-0-302015부분 중 마지막 6자리(302015)입니다. - FWSM에는
Cisco Firewall의 하드코딩된 디바이스 이벤트 카테고리가 있습니다. - FWSM DSM은 Cisco Pix QIDmap을 사용하므로 일치 그룹에
device-type-id-override="6"매개변수가 포함됩니다. Pix 방화벽 로그 소스 유형 ID는 6입니다.
이벤트 이름 및 디바이스 이벤트 카테고리
QIDmap이
검색되면 이벤트 이름과 디바이스 이벤트 카테고리가
필요합니다. 이 디바이스 이벤트 카테고리는 데이터베이스 내의 그룹화 매개변수이며
디바이스 내의 유사 이벤트를 정의할 때 도움이 됩니다. 일치 그룹 끝의
event-match-multiple에는 하드 코딩된 카테고리가 포함되어 있습니다. event-match-multiple은
구문 분석된 이벤트 이름에 EventNameId 패턴을 사용하여
최대 6자리를 일치시킵니다. 이 패턴은 전체 페이로드에 대해서는 실행되지 않으며 EventName 필드로
구문 분석되는 부분에 대해서만 실행됩니다.
EventName 패턴은 이벤트의
%FWSM 부분을 참조합니다. 모든 Cisco FWSM 이벤트에는
%FWSM 부분이 포함되어 있습니다. 예제의 패턴은
0 이상의 문자와 대시 앞에 오는 %FWSM과
일치합니다. 이 패턴 일치는 제거해야 하는 이벤트 이름의
가운데에 임베드된 session이라는 단어를
해결합니다. 이벤트 심각도 (Cisco에 따라), 대시 (-), QRadar에서 예상하는 실제 이벤트 이름이 차례로 표시됩니다. (\d{6}) 문자열은 캡처 그룹을 갖는
EventNameFWSM 패턴 내의 유일한 문자열입니다.
이벤트의 IP 주소와 포트는 모두 IP 주소, 콜론, 포트 번호 순의 동일한 기본 패턴을 따릅니다. 이 패턴은 데이터의 두 부분(IP 주소와 포트)을 구문 분석하고 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> IP 주소 및 포트 패턴
IP 주소와 포트 패턴은 마침표, 콜론, 포트 번호로 구분되는 네 세트의 1 ~ 3자리 수입니다. IP 주소 섹션은 그룹에 있으며 포트 번호이지만 콜론은 없습니다. 이러한 필드의 matcher 섹션은 동일한 패턴 이름을 참조하지만 캡처 그룹은 다르게 참조합니다(IP 주소는 그룹 1이고 포트는 그룹 2임).
프로토콜은 페이로드에서 TCP, UDP, ICMP 또는 GRE의 첫 번째 인스턴스를 검색하는 공통 패턴입니다. 패턴은 일치 항목이 찾아지도록 대소문자를 구분하지 않는 매개변수를 사용하여 표시됩니다.
두 번째 프로토콜 패턴은 예제에 사용된 이벤트에서 나타나 않지만 순서 2로 정의된 두 번째 프로토콜 패턴이 있습니다. 가장 낮은 순위의 프로토콜 패턴이 일치하지 않는 경우 그 다음 패턴이 시도됩니다. 두 번째 프로토콜 패턴도 직접 대체를 보여줍니다. 패턴에 일치 그룹이 없지만 대체 사용 매개변수를 사용하면 다음 TCP를 protocol=6 대신 사용할 수 있습니다.