為了快速找出系統紀錄內的重要資訊,本文將透過Syslog方式把Windows系統上的事件紀錄統一儲存到遠端的rsyslog伺服器,並藉由rsyslog伺服器將相關資訊儲存至MySQL資料庫,以達成中央控管紀錄的目標。
微軟事件紀錄介紹
一般而言,各項的主機設備的Log紀錄,大都會遵循Syslog的標準,微軟當然也不例外。基本上,微軟系統所記錄的Log紀錄(又稱為事件紀錄,如下簡稱為事件紀錄)大致遵循Syslog的標準,但有稍許的擴充。
其中,最大的特色在於微軟針對每種事件紀錄均有定義一個Event ID,亦即何種編號代表什麼樣的事件,例如Event ID為4624則表示使用者登入,但依據作業系統的種類,可能會有不同的代碼。
基本上,微軟將事件紀錄大致分為應用程式(程式)事件、安全性相關事件、設定事件以及系統事件等類型。
1. 應用程式(程式)事件
主要記錄使用應用程式時所發生的事件。以嚴重性來做區分,可區分為「錯誤」、「警告」、「資訊」等級。
「錯誤」代表嚴重等級最高,例如資料遺失、程式發生無預期的錯誤等事件。「警告」的嚴重等級次高,主要在描述後續可能會發生問題的事件。而「資訊」僅是在描述相關程式的操作情形,例如成功地啟動程式或載入驅動程式等相關資訊。
2. 安全性相關事件
主要用來記錄稽核所需要的事件,例如使用者嘗試登入系統成功或失敗的相關資訊。
3. 設定事件
如果系統被設定為網域控制站的電腦,就會額外記錄此類型的事件紀錄。
4. 系統事件
用來記錄由Windows系統服務(Service)所發生的事件,以嚴重性來區分,同樣可區分為錯誤、警告、資訊等級。
一般而言,可經由系統上的事件檢視器來查看相關的事件資訊,如圖4所示。
|
▲圖4 在事件檢視器中查看事件資訊。 |
安裝rsyslog與MySQL
這裡將利用rsyslog結合MySQL,接收來自Windows系統的事件紀錄,並將相關的事件紀錄儲存在MySQL資料庫內。
首先,安裝rsyslog來當作Syslog伺服器,由於已編譯完成的套件通常都不會支援MySQL資料庫的功能,因此將利用原始碼編譯的方式編譯出一個支援MySQL資料庫的rsyslog伺服器,且由於相容性的原因考量,在此選用6.6.0版本。
在編譯rsyslog伺服器之前,必須先安裝libestr和libee程式庫。在安裝好所需的程式庫後,接下來至rsyslog官方網站下載6.6.0的原始碼。
下載並解壓縮後,執行以下的指令編譯rsyslog伺服器(#之後為註解):
在安裝成功之後,緊接著建立相關的資料庫。
可以依照「rsyslog<原始碼目錄>/plugins/ommysql」之下createDB.sql檔案內的資訊,來建立相關的資料庫表格。至此,rsyslog的安裝工作即告完成。
接下來,簡單說明rsyslog相關的架構及組態檔的設定,圖5所示為rsyslog的架構。
|
▲圖5 rsyslog架構示意圖。 |
rsyslog架構說明
基本上,rsyslog整個架構劃分為Input(輸入模組)、Parser(過濾模組)及Output(輸出模組),以下分別加以介紹。
Input(輸入模組)
設定接收Syslog的來源,例如可從系統上的紀錄檔案內或從網路連線(Socket)中取得。在本文中會使用到的輸入模組說明,如表4所示。
表4 輸入模組說明
Parser(過濾模組)
可由使用者自行定義相關的過濾條件,從繁雜的紀錄檔中取得符合的資訊。在此並不使用過濾模組的功能。
Output(輸出模組)
可將Syslog資訊輸出到其他媒介上。在此將設定輸出到MySQL資料庫,所使用的如表5所示。
表5 輸出模組說明