2010年7月10日 星期六

網域控制站搶救行動


前日, 之前服務的公司域網控制站的硬碟突然掛掉了, 導置整個網域控制台無法使用, 有請他們先使用系統備份還原, 但仍然無效。
 就開了「網域控制站搶救行動」序幕
 引用 搶救網域控制站大作戰 文
 作者: 謝合宜
大家都很清楚網路控制站是 AD 網域中最重要的伺服器,除了要建置兩台以上來維持容錯的功能之外,平時規律的系統資料備份也是非常重要的。我想大部分的網路管理人員都會積極地在平日透過「系統狀態備份」來維護系統的災難復原機制。不過有沒有想過如果這些平時的維護措施出現問題時要如何處理呢?我遇到過一個很緊急的客戶案子,客戶告知 AD 掛了。掛了?到底怎麼回事呢?到了客戶機房一看,使用兩台網域控制站 (Windows 2000 Server),同時出現問題:網域管理員只能在網域控制站進行登入,在一般使用者電腦也無法登入;開 AD 相關管理工具皆會出現錯誤訊息而無法進行確認與修復處理工作。要命的是:平時所進行的系統狀態資料備份 (如圖1) 有進行,不過不幸的是未曾進行確認與試著驗證進行還原試,因此備份到磁帶中的資料其實是空的 (也就是說根本沒備份到任何資料!)

圖 1:系統狀態備份,含 AD 資料庫
既然網域控制站出問題,得來找出到底出了甚麼問題!首先大家需要先知道,透過 DCPROMO.exe 來完成網域控制站架設,DCPROMO 會協助處理好的安裝程序大致有:
動 Kerberos V5 服務
•建立 AD 架構
•建立 SYSVOL 共用目錄
•處理好 DNS 的動態註冊資料
•套用預設的兩個群組原則設定 (Default Domain Policy 和 Default Domain Controllers Policy)
 這個客戶的狀況蠻特殊的,花了一些時間來找出所出現的問題,確認了:
•系統管理共用 (administrative share) 不見了,也就是 ADMIN$/C$/IPC$/NETLOGON$/SYSVOL 都消失
•後來又發現預設的群組原則 (Default Domain GPO 與 Default Domain Controllers GPO) 也不見了
•通用目錄的運作出現問題 (這是最後才發現,因為搶救回網域控制站之後,網域管理員的登入沒問題,可是一般使用者還是無法進行登入)

圖 2:預設的系統共用,ADMIN$/C$/IPC$/NETLOGON$/SYSVOL
首先經過技術文件的搜尋,發現可能是遭遇到惡意程式碼的攻擊所造成的情形 (KB842715)。確認大致的問題情形,因此開始著手進行網域控制站的搶救工作。不過在這裡,還是強烈提醒:如果有進行系統狀態備份工作的,這些的努力是可以避免的。
預計的搶救工作成幾個部分:
•重建系統管理共用
•重建 SYSVOL 共用
•重建預設的群組原則
•重設通用目錄伺服器
重建預設的群組原則
AD 網域建立,網域中會有兩個預設的 GPO 來控制整個網域與網域控制站的安全控管設定。我們會建議請不要任意更動這兩個預設 GPO,以免 AD 的運作出現奇怪的問題。因此,當這兩個預設的 GPO 出現問題,可以透過系統 c:\windows\repair 目錄下的 DCGPOFIX.exe 工具程式來進行修復工作。這個工具可將預設網域原則和預設網域控制站原則還原到它們安裝後的原始狀態。工具程式的使用可以直接參考 Windows Server 2003 TechCenter 的文件。
我的經驗,透過 DCGPOFIX 來修復預設 GPO 之後,可能還需要手動將預設 GPO 連結到正確位置才行 (網域與 Domain Controllers 組織單位)。
當然如果要手動慢慢重新建立這兩個 GPO 也是可以,KB555647 可以成為非常好的指引。
重設通用目錄伺服器
最後有關通用目錄伺服器 (GC Server),它的功能眾多,而其很重要的功能就在於萬用群組 (Universal Group) 的成員關係維護。因此相信大家都很清楚:當無法連結使用通用目錄伺服器時,一般使用者的帳戶資訊無法確認萬用群組的情形,因此使用者將無法登入網域。
我在重建好網域控制站之後,最後用一般使用者帳戶測試登入才發現還是無法登入,因此透過 Active Directory 站台與服務直接指定通用伺服器即解決問題。 

圖 4:通用目錄伺服器的設定

照著上面的文章,一步一步來,到了 SYSVOL 重建,就遇到問題了。文章說的不清不楚,然後Microsoft的技術文件也翻的亂七八糟。只好再另找方法了。
1. 先停止 FRS 服務
net stop ntfrs
2. 修改機碼 burflags = D4 (十六進位)
機碼在的 UID 下面,對照兩組機碼的UID,同樣的那組就是正確的。
LHM\system\currentcontrolset\service\ntfrs\parameters\cumulactive replica sets

LHM\system\currentcontrolset\service\ntfrs\parameters\replica sets
3. 更改原先的 SYSVOL 目錄名稱,或刪除,然後重建以下目錄
\SYSVOL
\SYSVOL\domain
\SYSVOL\staging\domain
\SYSVOL\staging areas
\SYSVOL\domain\Policies
\SYSVOL\domain\scripts
\SYSVOL\SYSVOL

\SYSVOL\SYSVOL\Domain Name (例 \SYSVOL\SYSVOL\Car1.com.tw)
4. 啟動 FRS 服務,並查詢 SYSVOL 設定是否正確
net start ntfrs
ntfrsutl ds |findstr /i "root stage"
執行完會顯示
Root: C:\WINNT\SYSVOL\domain
Stage: C:\WINNT\SYSVOL\staging\domain

5. 重新 Linkd %systemroot%\SYSVOL\SYSVOL\ DNS Domain name 及 linkd "%systemroot%\SYSVOL\staging areas\DNS Domain Name。
( Linkd.exe 需要下載 Windows srver 2003 工具包)
Linkd %systemroot%\SYSVOL\SYSVOL\ car1.com.tw
Linkd "%systemroot%\SYSVOL\staging areas\car1.com.tw
6. 重啟 FRS 及 NtLogon 服務
net stop ntfrs
net stop netlogon
net start ntfrs
net start netlogon
7. 修復 GPO 群組原則
Dcgpofix
8. 檢查共用目錄是否正確
如圖一
以上這樣就搞定了 ~~
參考網址: