更新於 2024/12/25閱讀時間約 15 分鐘

Windows事件紀錄檔的重要性及有效利用

*Windows事件紀錄檔的重要性

電腦無時無刻都在處理很多程序,每個動作執行後總是會發生一些小問題,一些小程序啟動失敗或者權限不足等等,也有可能軟體安裝失敗之類,或硬體層面的失效被記錄,甚至是藍屏畫面出現的重大錯誤。不過除了錯誤也會記錄各種成功執行的事件,像是開關機,帳戶驗證,帳戶登入,登出,網路原則拒絕使用的存取權,軟體安裝執行成功等,各種大小事都被記錄在Windows事件紀錄檔。

如果電腦常常當機就可以來這裡找些訊息,學習看懂檢視器工具,自己來幫Windows debug糾正錯誤,減少系統錯誤發生,以提升系統穩定性。

*事件紀錄分類

Windows系統的事件紀錄檔的位置在C:\Windows\System32\winevt\Logs裡,副檔名是.evtx。重要的紀錄分類如下:

(1)應用程式:Application.evtx

各應用程式的問題,通常是執行方面的事件,層級有錯誤,警告,資訊都有可能出現,如果是應用程式當掉,異常之類的問題,可以在這裡找到詳細的紀錄。

(2)安全性:Security.evtx

稽核成功或失敗的事件,像是Windows的帳戶登入有沒有成功,檔案資料夾的存取,使用者許可權變更,有無權限之類的紀錄。

(3)Setup:Setup.evtx

應用程式的安裝,或Windwos更新所產生的相關紀錄。

(4)系統:System.evtx

紀錄Windows系統服務遇到的問題,例如開機遇到一些驅動程式不能載入之類的事件等等。

(5)Forwarded Events:轉送的事件,由其他電腦轉送過來的事件紀錄檔。


*善用事件紀錄檔

為了要預防機器系統無預警當機或駭客入侵,可以定期檢視事件記錄檔,建立定期檢視事件的習慣,及早發現異常,尤其須注意以下異常事件:

(1)未經授權的登入嘗試 (2) 檔案或資料庫存取異常

(3) 系統錯誤或警告 (4) 安全性警報

(5) 服務啟動或停止異常


*如何建立自訂檢視事件

(1)欲調查電腦系統問題的相關事件,可利用「事件檢視器」,跨多個記錄檔,來篩選系統是否有產生特定事件,以方便檢視事件發生原因。

我們可在事件檢視器的 [動作] 窗格中,手動建立多個篩選準則來自訂檢視。

(2利用FullEventLogView.exe程式或Windows 內建指令wevtutil,將常用的自訂篩選條件作成bat執行檔,以便每月定期或不定期執行該bat檔,將篩選準則所查出的事件,通知系統管理者,以判斷過去發生的事件是否有嚴重錯誤,是否須修訂對應。


*事件篩選項目

事件紀錄檔內的各種類資訊資料龐大,可以透過自訂的篩選準則,來提高檢查效率。

以下篩選項目,可供參考包括:

(1)記錄事件發生的時間。

(2)事件層級(Event Level),含嚴重,錯誤或警告等。

(3)特定事件識別碼(EventID)。

(4)事件的使用者。

(5)事件發生的電腦。

等等,

上述第(3)項EventID對於維護人員來說很重要,每個事件都有特定的ID可識別,每個ID都 會定義出被紀錄事件的發生原由。

為了系統安全穩定與降低駭客入侵機會,以下是一些Windows環境上重要的關鍵事件EventID :

4624: 成功登入系統

4625: 失敗登入系統

4720: 網域使用者帳戶已被建立

4723: 網域使用者帳戶已被刪除

4663: 一個物件已被存取

4656: 檔案或目錄已建立

4661: 一個物件已被刪除

4672: 特殊許可權已指派使用

5140: 網路共用物件已存取

4657: 一個登錄值已被修改

其他Event ID 可參考如下:

監視的事件 | Microsoft Learn


*自動執行篩選事件

為有效定期監視事件 ,將篩選特定事件之動作作成bat執行檔,以方便管理人員監視系統環境和安全性,管理員再依據bat篩選出來的重要事件,判斷是否須要及時對應或進行調整。

bat處理作業說明:

Step 1 利用FullEventLogView.exe程式,篩選事件紀錄檔後,出力csv file

篩選動作分為兩部分,出力兩個csv檔

<1> 選出重要事件的特定Event id 。本例以上述10項EventID為主,依據系統需要,可以任意增減項目

<2> 選出事件層級(Event Level)為嚴重 critical,或是錯誤 error之事件

Step 2 上述兩動作執行後,判斷是否有事件出力,若有,則以LINE通知管理者,若無,則不必發出LINE訊息


Bat 設計說明:

兩個篩選動作如下

(1) 最近31日內判斷是否有發生特定10項事件id,若有,則出力事件資訊存入EventIDView_%Today%.csv 檔

參數設定如下

FullEventLogView.exe /scomma "%csvPath1%\EventIDView_%Today%.csv" /EventIDFilter 2 /EventIDFilterStr "4624,4625,4720,4723,4663,4656,4662,4672,5140,4657" /TimeFilter 1 /LastTimeFilterUnit 4 /LastTimeFilterValue 31 /SaveDirect

執行後篩選出 4625,4672,4624 之csv檔,內容如下圖示:


(2) 最近91日內判斷是否有下列條件

Channel為"Security,Application,System,Setup" 且 Level為 Critical or Error 之事件,若上述條件成立,則出力事件資訊存入EventLevelView_%Today%.csv檔

參數設定如下

>FullEventLogView.exe /scomma "%csvPath1%\EventLevelView_%Today%.csv" /ChannelFilter 2 /ChannelFilterStr "Security,Application,System,Setup" /ShowCritical 1 /ShowError 1 /ShowWarning 0 /ShowInformation 0 /ShowUndefined 0 /ShowVerbose 0 /TimeFilter 1 /LastTimeFilterUnit 4 /LastTimeFilterValue 91 /SaveDirect

執行後篩選出Error Level層級事件csv檔,內容如下圖示:


本例bat執行後,因有篩選出事件之2個csv檔,故即時發出警示事件通知之LINE訊息,讓相關管理者可及時對應,如下圖示:


*定期檢視事件之效果

Windows 事件記錄檔就像電腦的運作日記,記錄了系統發生過的各種事件資訊,透過定期檢視這些事件紀錄,可以幫助我們達到以下效果:

(1) 及早發現異常,駭客入侵或系統問題會在事件記錄檔中留下痕跡,例如未經授權的登入嘗試、檔案存取異常、系統錯誤等。

(2) 追蹤問題根源,當系統發生故障時,可以追蹤問題發生的原因和過程,快速定位,及時解決問題,低减異常對應工時,提前預知風險,避免系統突發故障之發生

(3)定期檢視事件記錄檔,提供重要事件檔案,可以依據錯誤事件之嚴重性與發生頻率,掌握系統運作之趨勢變化,了解系統的安全性狀況,並可及時採取措施加強防護系統安全。

(4)本作業可推廣運用至其他系統機器

(5) IT各種 外部稽查受檢時,本作業內容及產出之重要事件csv檔,可以提供備查,以符合log檢查項目之要求。

*本例bat (bat name :Event_Select.bat)內容如下:

rem --- Job must run as administrator -----
SET /a csvF=0
SET /a Today = %date:~0,4%%date:~5,2%%date:~8,2%

REM *** STEP 1 *** *** select events by 2 conditions then output 2 csv files ***

::set csvPath1=D:\EventLog_Out
::set exePath2=D:\lin_PC\cmd-bat\cmd\Manipulate_file\EventLog
set exePath2=C:\Users\admin\Desktop\桌面資料\2024LIN
set csvPath1=C:\Users\LIN
C:
cd %exePath2%
break>LINE_send_notify_par.txt
echo M, >>LINE_send_notify_par.txt
echo M,%computername%電腦警示事件通知>>LINE_send_notify_par.txt

:: select from evtlog (C:\ ) to output csv file by tool FullEventLogView.exe ------
:: STEP 1.1--- select event id

%exePath2%\FullEventLogView.exe /scomma "%csvPath1%\EventIDView_%Today%.csv" /EventIDFilter 2 /EventIDFilterStr "4624,4625,4720,4723,4663,4656,4662,4672,5140,4657" /TimeFilter 1 /LastTimeFilterUnit 4 /LastTimeFilterValue 31 /SaveDirect

find /I /C "/" "%csvPath1%\EventIDView_%Today%.csv"
::若是 0 表示找到日期 2024/12/24/ ,即有事件Rec.,後續LINE發出通知

If %errorlevel% == 0 (
set /a csvF=csvF + 1
echo M, >>LINE_send_notify_par.txt
echo M,To CHECK event ID in %csvPath1%\EventIDView_%Today%.csv >>LINE_send_notify_par.txt )

::pause ---1.1 to chk output csv event id------------F=%csvF%------

:: STEP 1.2 --- select event Level of error or critical
%exePath2%\FullEventLogView.exe /scomma "%csvPath1%\EventLevelView_%Today%.csv" /ChannelFilter 2 /ChannelFilterStr "Security,Application,System,Setup" /ShowCritical 1 /ShowError 1 /ShowWarning 0 /ShowInformation 0 /ShowUndefined 0 /ShowVerbose 0 /TimeFilter 1 /LastTimeFilterUnit 4 /LastTimeFilterValue 91 /SaveDirect

find /I /C "/" "%csvPath1%\EventLevelView_%Today%.csv"
::若是 0 表示 找到事件,LINE 發出通知

If %errorlevel% == 0 (
set /a csvF=csvF + 1
echo M, >>LINE_send_notify_par.txt
echo M,To CHECK Err event in %csvPath1%\EventLevelView_%Today%.csv >>LINE_send_notify_par.txt )

::pause ---1.2 to chk output csv error or critical ----F=%csvF%----------

:: STEP 2 *** IF Event found then mail csv files to PIC ***
::if %csvF%==2 (
:: echo 2,"%csvPath1%\EventID_select.csv","%csvPath1%\EventLevel_select.csv" >>mail_par.txt )

IF NOT %csvF%==0 (
echo M, >>LINE_send_notify_par.txt
echo T,wwwwyourtokenwww >>LINE_send_notify_par.txt
CAll LINE_send_notify.exe )

pause ---job end
EXIT

---by linct-----


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.