Nxlog日誌過濾

一般情況下nxlog只用於windows2008以及以上版本的日誌轉發(即使用im_msvistalog模式),實測08以下版本日誌轉發時出現亂碼。

 

 im_msvistalog使用以下字段

 

$raw_event (type: string)
包含$EventTime、$Hostname、$Severity、$EventID和$Message的字符串
$AccountName (type: string)
與事件關聯的用戶名。
$AccountType (type: string)
包含$EventTime、$Hostname、$Severity、$EventID和$Message的字符串
$ActivityID (type: string)
當前活動的全局惟一標識符,存儲在EvtSystemActivityID中。
$Category (type: string)
從任務解析的類別名稱。
$Channel (type: string)
 事件源的通道 (例如,安全性或應用程序)。
$Domain (type: string)
用戶的域名。
$EventID (type: integer)
EvtSystemEventID字段中的事件ID(特定於事件源)。
$EventTime (type: datetime)
EvtSystemTimeCreated 字段
$EventType (type: string)
事件的類型,它是一個描述嚴重性的字符串。這將從EvtSystemLevel轉換爲它的字符串表示形式。可能的值有:CRITICAL、ERROR、AUDIT_FAILURE、AUDIT_SUCCESS、INFO、WARNING和VERBOSE。
$EventXML (type: string)
XML格式的原始事件數據。如果模塊的CaptureEventXML指令設置爲TRUE,則此字段可用。
$ExecutionProcessID (type: integer)
事件生成器的進程標識符,如EvtSystemProcessID。
$Hostname (type: string)
EvtSystemComputer 字段.
$Keywords (type: string)
EvtSystemKeywords字段的值。
$Message (type: string)
事件的消息。
$Opcode (type: string)
從OpcodeValue解析的操作碼字符串。
$OpcodeValue (type: integer)
事件在EvtSystemOpcode中的操作碼號。
$ProviderGuid (type: string)
事件提供者的全局唯一標識符,存儲在EvtSystemProviderGuid中。這對應於$SourceName字段中的提供者名稱。
$RecordNumber (type: integer)
事件記錄的數目。.
$RelatedActivityID (type: string)
存儲在EvtSystemRelatedActivityID中的RelatedActivityID。
$Severity (type: string)
事件的標準化嚴重性名稱。請參見$ SeverityValue。
$SeverityValue (type: integer)
事件的規範化嚴重程度編號,映射見表格。
$SourceName (type: string)
從EvtSystemProviderName字段生成事件的事件源。
$TaskValue (type: integer)
EvtSystemTask字段中的任務編號。
$ThreadID (type: integer)
事件生成器的線程標識符,如EvtSystemThreadID中所示。
$UserID (type: string)
安全標識符(SID),解析爲$AccountName,存儲在EvtSystemUserID中。
$Version (type: integer)
事件在EvtSystemVersion中的版本號

表格

Event Log Severity

Normalized Severity

0/Audit Success

2/INFO

0/Audit Failure

 

4/ERROR

0/Audit Failure

 

5/CRITICAL

2/Error

 

4/ERROR

3/Warning

3/WARNING

4/Information

2/INFO

5/Verbose

1/DEBUG

 

常規nxlog.conf內容

## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at http://nxlog.org/docs/

## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.

#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

<Extension _syslog>
    Module      xm_syslog
</Extension>

<Input in>
    Module      im_msvistalog 
# For windows 2003 and earlier use the following:
#   Module      im_mseventlog
</Input>

<Output out>
    Module      om_udp # 日誌轉發協議
    Host        172.168.1.20 # 日誌接收端IP
    Port        514 # 接收端PORT
    Exec        to_syslog_snare();
</Output>

<Route 1>
    Path        in => out
</Route>

 

注:以下過濾方式只適用於Module im_msvistalog,nxlog配置就不介紹了,請在nxlog正常使用的情況下使用該文檔操作

 

過濾操作:使用Exec if $xxx == xxx drop ();

通過指定regex來添加篩選器。NXLOG以NXLOG語言(在語法上與PERL非常相似)的形式提供了用戶腳本功能。爲了使用regex進行篩選,我們添加了一個Exec命令,它實際上逐行遍歷輸入並執行腳本。

 

例如:濾掉raw_event字段中提到“Read”的任何事件日誌,並且只針對EventID 400,那麼你可以執行以下操作:

 

Exec if $EventID == 400 and ( $Message =~ /Read/m ) drop ();

例如:過濾掉包含dumpus.exe || nxlog.exe || java.exe || ...的任何事件日誌,那麼你可以執行以下操作:

Exec if  $Message =~  /.dumpus\.exe?/ OR \
        $Message =~  /java\.exe?/ OR \
        $Message =~  /nxlog\.exe?/  drop();

 

其他條件可參照上文提供的字段編寫規則進行操作。

 

參考:https://www.rexconsulting.net/applying-double-filters-nxlog-windows-event-logs.html

參考:https://www.rexconsulting.net/adding-additional-layer-filtering-nxlog.html

參考:https://nxlog.co/question/3469/how-forward-event-ids-specific-process-names

 

 

 

 

 

發佈了29 篇原創文章 · 獲贊 20 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章