[資安筆記] Windows企業資安稽核應用系列 (1) - 「稽核」是有力的線索與證據!

稽核:一個常被提起卻不知道真正意義與精隨,卻又是資訊安全中不可少的重要動作(或是[元件])。就字面來看,稽核可說是「稽」查與「核」對,可用來檢查企業中特定的活動,藉由此辨識是否需要進一步的深入追查。而在 Windows Family 中可以透過簡易的設定,進行稽核的項目設定與進一步的追蹤分析,熟悉之後必定可為企業內部的資訊安全機制加上一層金鐘罩。

本文刊登於 RUN!PC 月刊 2009/03 182 期

 

稽核是什麼?

稽核:一個常被提起卻不知道真正意義與精隨,卻又是資訊安全中不可少的重要動作(或是[元件])。就字面來看,稽核可說是「稽」查與「核」對,可用來檢查企業中特定的活動,藉由此辨識是否需要進一步的深入追查。而在 Windows Family 中可以透過簡易的設定,進行稽核的項目設定與進一步的追蹤分析,熟悉之後必定可為企業內部的資訊安全機制加上一層金鐘罩。

  • 稽核的意義
    筆者在過去的案例導入中,最常被主管與MIS同僚問到一個問題:「現在系統與使用者權限控制運作的很順利了,為什麼還要導入稽核機制?」。是的,帳號使用 Windows AD進行中央管理,使用者無法自行安裝軟體一律使用 AD 派送佈署,看起來好像很完美?筆者倒不這麼認為。英國有流傳一句諺語:「魔鬼總是藏在細節中」,當在「安逸的太平盛世」中不去檢查與思考,當事情爆發的時候往往都難以收拾與快速反應。

    稽核的導入並不一定在所謂的「安逸太平盛世」下才有其用途;當企業環境正遭受某些惡意攻擊與入侵,環境暴露在風險下卻又不知從何查起,導入稽核可以在記錄中幫助 IT 人員將蛛絲馬跡進行抽絲剝繭,進而找出來源與兇手。

    西元 2000 年時筆者第一次正式接觸到的伺服器系統為 Windows 2000 Server,當時個孩子拿到新玩具般的,徹夜探索與玩味許久。在早期 Windows 2000 中就已經有稽核的功能存在,當時的資訊安全概念與風潮可能沒有現在那麼的夯,這個功能在筆者周邊被討論的次數可說是非常少,且網路上能找到的資料也大多都是英文資料,當時了解稽核的用途煞費了筆者不少苦心。

  • 安全性紀錄是雞肋?

    Windows事件檢視器中的[安全性紀錄]是兼具美麗與哀愁於一身的角色,它可以讓IT快速找出問題的癥結與潛在的風險,但大多數的人都不知道怎麼充分運用它。還記得西元2001年導入 Windows 2000 Server沒多久時,公司伺服器上的公用資料夾檔案被誤刪,那時候Windows 2000可還沒有磁碟陰影複製這個功能,檔案被誤刪倒楣的又是IT部門。由於事件發生的次數已經很多次,主管這時也有些惱怒,下令一定要揪出這個粗心(或蓄意??)的員工。在接獲命令時第一個動作筆者就先開啟安全性記錄,而筆者的同事第一個反應是:「檔案被誤刪找安全性記錄能做什麼?裏面只有登入登出的訊息而已,根本沒有什麼作用!」。此時筆者只花了約十分鐘就找出那個粗心老是誤刪檔案的員工,並將結果呈報上去,有了稽核的證據,讓那名員工可是百口莫辯,也算是正式的第一次給Windows安全性紀錄平反了一次冤屈。

    稽核的用途在筆者過去的使用中,大多使用在以下的用途 (整合Windows AD的環境下):

    1. 使用者是否因人為設定權限錯誤而可進入敏感區域。
    2. 檢核使用者登入使否有異常,藉以反推 Windows AD是否與使用者電腦間的信任關係是否存在。
    3. 監控網路登入(如遠端桌面)的來源與電腦名稱,追蹤異常登入。
    4. 分析使用者行為,如有違常理的存取則可能遭冒用。
    5. 追蹤檔案的存取、修改與刪除異動事件,將責任歸屬更明確的釐清
    6. 監控惡意性的資源存取 (暴力破解法常是存取敏感資訊…等)
    7. 分析企業環境中其他的潛在風險

    可以肯定的是,只要正確設定與適當審閱,被認為是雞肋的角色也可以變成強大的獵人,是雞肋還是獵人就取決於IT如何應用。接下來開始就進入Windows稽核原則的設定,把Windows變身成獵人吧。

Windows 稽核機制功能設定

適用系統:Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows 2008 全部版本。
應用環境:Windows AD 整合環境, 單機運作之 Server 或 Desktop系統均適用。

在 Windows Server & Desktop 系統要啟動稽核機制,首當要務就是要先設定群組原則物件中的稽核原則。要開啟群組原則編輯器 MMC 視窗並設定稽核原則須進行以下步驟:[開始] > [執行] > 輸入[ gpedit.msc ],接下來請至 [原則] > [電腦設定] > [Windows 設定] > [安全性設定] > [本機原則] > [稽核原則] 中,即可看到九個稽核項目的原則設定 (如果是單機運作的情況下,位置則是在 [電腦設定] > [Windows 設定] > [安全性設定] > [本機原則] > [稽核原則] 中),預設的原則除少數幾個稽核項目外,其餘設定部分 “尚未設定” 的狀態, Windows 2008 網域控制站則會有預設的設定值。

Windows 稽核原則中的九個物件。

圖1 Windows 稽核原則中的九個物件

  • 了解稽核項目的用途
    知道了稽核功能設定位置後,接下來就是要設計稽核的範圍與項目了。所謂「工欲善其事,必先利其器」,所以建議在設計之前務必了解各稽核項目之目的,才可設計出府和企業環境的稽核制度。而這九項原則的功能筆者用簡單的方式解釋如下(依照群組原則編輯器中的順序排列)

    表1 九項稽核原則簡易說明 

原則

說明

筆者註解

稽核目錄存取服務

稽核 AD 物件中的變更,需要開啟 [Active Directory 使用者和電腦] 中的 [進階功能] 才可針對 AD 的物件進行稽核設定。

該項目類似 [稽核物件存取]的項目,只是物件的對象改為 AD 中的物件。

稽核系統事件

系統的重新開機與關機,或當影響系統安全性或安全性記錄的事件發生時會產生記錄

預設都只存在於各主機中的安全性紀錄,如要集中管理則需要設定 [Windows事件紀錄轉送] 的功能。

稽核物件存取

可稽核檔案、資料夾、登陸檔甚至到印表機的存取,且可詳細追蹤不正常的存取。該功能除了在 GPO 設定外,還需要對各檔案或資料夾設定進階的稽核項目。

稽核原則變更

稽核原則、使用者權限指派與信任原則變更時,寫入一筆稽核紀錄

稽核特殊權限使用

除了一般的瀏覽與讀取之外的權限稽核。例如說,Windows安裝完之後,Users 的預設權限除了有讀取與執行外,還會有 “新增資料夾”與 ”新增檔案”的權限,在這裡就是特殊權限。

稽核帳戶登入事件

Windows AD網域中使用者登入事件紀錄,如 User-A 登入至 Comp-C 時會將登入事件寫入治安全性紀錄中。在單機運作環境中則是各台主機的登入紀錄,如 User-A 登入至 Comp-C時則只會在本機留下紀錄。

在 Windows AD 網域環境中只要是透過AD驗證登入則在 DC Server 中都會有集中的安全性紀錄。

稽核帳戶管理

新增、修改、刪除使用者帳號或群組,以及重新設定時會產生稽核紀錄。

預設都只存在於各主機中的安全性紀錄,如要集中管理則需要設定 [Windows事件紀錄轉送] 的功能。

稽核登入事件

使用者從本機或遠端登入時的稽核項目。

稽核追蹤程序

應用程式啟動或結束時的事件。

  • 從表一可以清楚得知各稽核項目的用途以及記錄的位置,每一個項目都可以設定 [成功]、[失敗]或是兩者兼具。當確定稽核項目後,AD就會將群組原則發佈至網域內的每台主機中,快速又方便。如果今天是大量的單機環境要佈署稽核原則,除了要進入群組原則編輯器中每一個項目逐一設定之外,還有一個更聰明快速的方法 -- 使用 Windows 內建指令工具 Auditpol.exe
     

使用指令工具快速設定

Auditpol.exe 是 Windows 內建用於設定稽核原則 (Audit Policy) 的指令工具,採用互動式的對話過程讓技術人員很輕易的即可上手,且可設定的細節比群組原則物件 MMC 中的還要多且更細,我們可以先看看 Auditpol.exe 有哪些使用方法:

程式1

::瀏覽 Auditpol 的使用方法
Auditpol.exe /?

我們也可以使用 Auditpol.exe 建立稽核原則的列表:

程式2 

::將所有稽核原則列出
Auditpol.exe /get /Category:*

 

圖2 使用 Auditpol列出的詳細稽核原則

圖2 使用 Auditpol列出的詳細稽核原則

如果要針對 “登入/登出”事件進行稽核,可以使用 SET 並指定父類別 (Category)進行設定:

程式3

::將類別 “登入/登出”事件設定稽核
auditpol /set /category:"登入/登出" /success:enable /failure:enable

如果想針對該父系類別設定更細項的項目,則可以利用下列指令列出子類別:

程式4 

::列出所有父類別與子類別
auditpol /list /subcategory:*

 

配/list 與 /SubCategorty 參數列出所有父與子類別

圖3 搭配/list 與 /SubCategorty 參數列出所有父與子類別。
 

使用 auditpol /list /subcategory:* 可得知主類別下還有子類別的項目設定,如果不想針對整個父類別進行稽核啟用,只需要設定下面幾項目進行稽核可以使用 /set 加上 /subcategory 進行更細微的設定:

程式5

::設定”登入/登出”下的 "網路原則伺服器" 項目
auditpol /set /subcategory:"網路原則伺服器" /success:disable /failure:disable

要將現有的設定轉移至其他主機則可利用批次檔進行設定。第一種是將設定完全寫成批次檔,任何單機運做主機只要執行批次檔即可設定完成。第二種方法則是利用 /backup 的參數將設定匯出,在至另外一台主機使用 /restore 將設定匯入。筆者認為這兩種方式各有優缺,在此以 /backup 與 /file參數進行實作範例:

程式6

::稽核設定的匯出方法
auditpol.exe /backup /file:D:\AuditPolicy.csv

要匯入也是十分簡單,改用 /restore 與 /file 參數即可快速匯入設定:

程式7

::稽核設定的匯出方法
auditpol.exe /restore /file:D:\AuditPolicy.csv

這裡要提醒各位,如果只有對父類別下的其中一個子類別作設定,在 Windows群組原則物件MMC中父系類別還是會標示為 [尚未設定],細節的項目只有用 Auditpol 才可檢視與變更。

 

如何快速審閱稽核記錄

當稽核導入之後,後續最重要的事情就是“抽絲剝繭”,而要在大量的事件中找出重要的紀錄不太可能用人工辨識,除非時間很多才有可能。在本系列的開頭先說明最簡單也隨手可得的工具 – 事件檢視器。事件檢視器中有 [篩選] 的功能,可以提供簡易的過濾方法,安全性稽核紀錄筆數有時會很大,甚至超過十萬筆也都有可能(筆者架設的AD網域控制站的安全性紀錄就可以達22萬筆以上了),而設定的重點在於 “想知道什麼樣的資訊”。根據經驗,盲目的設定只會讓審閱的過程更加的混亂,最後自己要看什麼都不知道。

圖4 篩選功能可讓關鍵紀錄快速的被審閱到

圖4 篩選功能可讓關鍵紀錄快速的被審閱到
 

假設我們要稽核最近三天的“登入事件”,在22萬筆資料中要下篩選條件則要精確的設定,越精確稽核的準確度就越高,請參閱下圖的設定說明:

圖5 正確的設定可縮小稽核範圍取得更準確的結果

圖5 正確的設定可縮小稽核範圍取得更準確的結果。

 

圖6 紀錄由22萬筆篩選成 3.5 萬筆

圖6 紀錄由22萬筆篩選成 3.5 萬筆 
  

  • 過而不及都不好
    剛剛看到筆者的網域控制站有22萬筆的資料時,應該會有人猜想筆者架設的架構有規模龐大的網路。其實說出來不怕笑,也不過三台PC加上五台虛擬伺服器而已,而那些龐大的紀錄則是來自於 “稽核紀錄” 。

    為了證明”過度稽核”並非好事正確的做法,筆者故意將稽核原則全部都啟用,且對整個分割區D進行的 “Everyone 任何動作都記錄” 的稽核設定,約三個星期就累積到如此可觀的量了。

    在企業中,架構一定比筆者架構的大上數十甚至百倍,過度的稽核只會造成伺服器占用資源過多,審閱困難,如有設定”事件轉送”的功能時內部網路使用率將會拖慢整個企業中的速度,反而喪失了稽核的本意。這也是為什麼要一直強調,在設定稽核前務必設計好稽核的目的與項目,這樣進行導入時才不會影響到內部的正常作業。 
     

後記

在企業中導入稽核機制可以做潛在風險挖掘以及找出企業害蟲,除此之外主管在跟 IT 部門要求事件報告時也可以擁有強而有力的數位證據,讓 IT 部門交出一份漂亮的成績單。在後面的單元將會分享筆者在企業中曾經實做過的稽核案例,讓讀著們除了可以知道技術部分的設定外,更讓技術應用於企業環境中 :D。


 

如果覺得這篇文章對你有所幫助,可以透過 Paypal 支持作者唷~