深刻理解組策略一:組策略處理流程

概述:
    組策略是Win2003操做系統提供的一種重要的更新和配置管理技術,用來批量控制計算機和用戶的環境,包括控制應用程序、系統設置和管理模板的一種機制。在AD域環境中,經過組策略能夠對計算機和用戶組進行高效集中化的管理。組策略是AD域環境最有吸引力的基礎架構應用之一,正確高效組策略應用能夠最大化提升工做效率,節約大量時間和精力。但若是部署了不正確的組策略,排錯過程每每會令人抓狂。本文不涉及具體組策略部署方法以及如何排錯案例,僅就AD域環境中客戶機處理組策略的流程作一詳細分析。相信正確理解和掌握組策略內部處理流程,會對組策略部署以及組策略排錯有至關大的幫助和參考。
 
一:簡述客戶端計算機處理組策略流程
    簡單的說,客戶機應用組策略的流程有如下幾個步驟:
       1:客戶機啓動,執行本地安全策略。
       2:客戶機鏈接到網絡,查詢DC獲取要應用的GPO列表。
       3:客戶機根據GPO列表鏈接到Sysvol文件夾定位對應的組策略模板。
       4:客戶機根據組策略模板中信息執行相應的操做。
       5:計算機策略執行完成後,出現登陸界面,用戶登陸。
       6:用戶驗證經過後,用戶查詢DC獲取要應用的GPO列表。下面執行步驟與計算機執行步驟相似。   
     客戶機組策略處理基本流程如上所述,其中忽略了某些可能性如:環回設置,同步/異步處理,安全組篩選,WMI篩選等,因對基本流程影響不大,此處略過。有興趣請見後續文章。
     上述流程並不複雜,但其中存在一些細節須要深刻了解,也是本身當初學習組策略時一直存在的疑問。好比:
        1:客戶機如何從DC上獲取要應用的GPO列表
        2:客戶機如何能夠根據GPO列表,定位到Sysvol文件夾定位對應的組策略模板。
        3:客戶機如何能夠正確的處理每一個組策略設置
        4:按MS說法,客戶機與DC失去聯繫,客戶機會使用本機緩存的組策略,那麼組策略本地緩存保存在客戶機什麼位置?
    下面就上述疑問作儘量的分析,但願能給其餘朋友帶來參考,因有些結論是實驗測試結果,可能會存在某些不當之處,若有異議,歡迎討論!
 
二:客戶機如何獲取應用的GPO列表
    咱們知道,DC啓動時,會向DNS宣告本身的角色,DNS服務器接受宣告後,更新DNS數據庫中DC對應的資源記錄。客戶機登陸時會聯繫DNS服務器,尋找適當的DC進行身份驗證。驗證經過後,DC告訴客戶機所屬的站點信息,域信息,以及OU信息。客戶機獲取到這些信息後,就能夠查詢到正確的GPO列表。之因此擁有站點,域,OU信息後就能夠獲取GPO列表信息,主要是由於站點,域和OU對象的gPlink屬性中保存有GPO連接信息。
    獲取GPO列表的順序是從所屬OU往上查找每一層存在的GPO對象,直至域級。而後再查找站點所連接的GPO對象,生成完整的GPO列表。
    考慮到組策略執行時處理順序是:本地->站點->域->OU。與組策略生成GPO列表的順序相反,因此猜測組策略GPO列表應該是一個棧結構,採起的是先進後出的執行原則。
    若是但願能對客戶機獲取組策略列表有一個感性認識,建議你們閱讀userenv日誌文件,該文件詳細記載用戶登陸過程信息。
    要想查看完整的日誌文件,須要先激活userenv日誌完整模式。方法是:
    打開註冊表編輯器,定位至HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows NT\ CurrentVersion\Winlogon。
    新建dword值:UserEnvDebugLevel,數據爲10002 (Windows 2000/XP),Windows 2003改成30002。
    從新啓動後在%SystemRoot%\Debug\UserMode\下可找到Userenv.log 文件。重點觀察與GPO相關的各條記錄。
   
三:客戶機如何根據GPO列表,定位到sysvol文件夾並查找對應的組策略模板文件
    客戶機獲取到GPO列表後,接下來就須要根據每一個GPO信息,定位到DC中的sysvol文件夾,查找對應的組策略模板文件。
    在瞭解如何正肯定位和查找到對應的組策略模板文件以前,有必要解釋一下幾個相關概念。
    1:組策略對象GPO
       在組策略編輯器中生成一個組策略後,就會對應生成一個組策略對象GPO。
       但GPO是域中一個虛擬對象,在AD數據庫中並不存在真實的GPO對象。實際上,GPO對象由兩部分組成,分別是保存在AD數據庫中組策略容器GPC和保存在Sysvol共享文件夾中的對象組策略模板GPT。
       二者之間經過組策略對象的GUID保持關聯,而且GPC經過AD複製引擎複製到當前域的全部DC中,而GPT則是經過文件複製服務(FRS)複製到當前域的全部DC中。基本結構以下圖:
    
      注:由於AD複製與FRS複製機制不一樣,致使存在GPT與GPC可能不一致的可能性。
 
    2:組策略模板GPT
       GPT是實現了一系列組策略設置的指令集,包含具體組策略的相關設置參數。
           大多數GPT都採用文件形式,存放在sysvol共享文件夾中,以便於客戶端下載和處理。 除軟件部署使用的是二進制.aas文件外,其它GPT文件都是簡單的文本文件,客戶端下載GPT文件後,按照文件指令進行相應的操做和設置。GPT的版本號存儲在Gpt.ini文件中,用於與GPC保持同步。
 
    3:組策略容器GPC
       GPC是一個目錄服務對象,主要包含有以下重要屬性:
          versionNumber:版本號屬性的主要目的是爲了確保GPC與GPT信息保持同步。
          gPCFileSysPath:提供客戶端查找和定位對應組策略模板文件的路徑。
          gPCMachineExtensionNames:指定客戶端處理計算機策略GPT文件時須要使用的客戶端擴展的ClassID。
          gPCUserExtensionNames:指定客戶端處理用戶策略GPT文件時須要使用的客戶端擴展的ClassID
          gPCWQLFilter:指定應用於組策略對象的任何WMI篩選器。
       GPC對象存儲在AD數據庫Domain分區中,能夠經過AdsiEdit或LDP工具查看某個GPC對象屬性,增長感性認識。LDP工具查看到的屬性以下圖
 
    理解了上述三個概念後,很容易理解爲何客戶機能夠根據GPO列表,定位到sysvol文件夾並查找對應的組策略模板文件:
    GPC與GPT之間由GPO的GUID保持關聯,由GPC的gPCFileSysPath記載對應組策略模板具體位置,指示客戶機下載組策略模板文件!
 
四:客戶機如何正確處理每一個組策略設置
    客戶機根據GPO列表,查找到對應的組策略模板信息,經過比較緩存的GPO版本號與GPT中版本號,肯定該組策略是否已經更新,若是組策略已經更新,下載GPT文件,並執行相應的操做和設置。客戶機之因此能夠正確執行組策略指令集,是因爲在客戶機系統中有客戶端擴展的存在。
    在Windows系統共有11種功能能夠由組策略來管理,每一個功能都有一個相應的服務在客戶端運行,服務負責處理相應的組策略。
    這些服務稱之爲CSE(客戶端擴展),每一個CSE都做爲動態連接庫dll的方式存在,在客戶機啓動時,由winlogon服務動態加載。
    詳細的每一個功能和對應的CSE擴展以下圖:
 
    能夠在客戶機註冊表中查看詳細的客戶端擴展列表,具體註冊表位置在:
   HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions。
         
 
     列表中每一項表明一個具體的服務,以ClassID來標識,與GPC中gPCMachineExtensionNames/gPCUserExtensionNames保持一致。
     客戶機執行某一個GPO時,由GPC的gPCMachineExtensionNames/gPCUserExtensionNames屬性定位出該組策略具體由哪個CSE來執行。每一個CSE擴展知道如何正確處理所對應的組策略設置。
 
五:瞭解緩存登陸的客戶機組策略設置
    上述幾個步驟把正常狀況下客戶機處理組策略流程作了分析,如今咱們考慮一個特殊狀況:當客戶機聯繫不上DC時,組策略如何處理?
    MS給出的說法是客戶機上保存有組策略緩存,客戶機聯繫不上DC,客戶機使用域賬號登陸系統,會使用組策略緩存繼續處理,
    也就是已經執行的組策略繼續有效。那麼組策略緩存保存在客戶機什麼位置呢,結論是緩存在註冊表中,並不存在一個實際的緩存文件。
    能夠經過一個具體的實驗來測試緩存文件存在與否,測試方案以下:
    1:在GPMC中新建一個禁止修改網絡屬性的組策略,並連接給測試域賬號所在OU。禁止修改網絡屬性的設置以下:
       
      2:配置測試域用戶在客戶機爲管理員級別,在能聯繫DC狀況下域用戶在客戶機正確登陸,沒法修改網絡屬性。
        
 
      3:斷開客戶機網絡,重啓客戶機,經過緩存登陸後,仍是沒法修改網絡屬性,與上圖狀況相同。
         此時咱們查看當前客戶機註冊表中的的組策略緩存設置狀況,具體位置在:
         HKCU\Software\Policies\Microsoft\Windows\Network Connetions。
        
 
           手動將上圖中各個值爲0的鍵值修改成1,再次重啓客戶機,此時仍然在聯繫不上DC,但卻能夠修改網絡屬性。
          
 
 
           經過這個實驗,能夠得知在客戶機中並不存在實際的組策略緩存文件,由於若是存在某個組策略緩存文件,那麼在客戶機修改註冊表重啓過程當中,會從新加載該組策略緩存信息,從而覆蓋修改後的註冊表狀況。如同DC在線時客戶機執行組策略會覆蓋修改的註冊表信息同樣。
        但實驗證實相似狀況沒發生,從而能夠測試出組策略緩存實際上就保存在註冊表上述路徑中。同時也得出當DC不在線時,有權限用戶能夠經過修改註冊表實現取消組策略設置的管理和控制。
 
六:參考資料
    本文對組策略處理流程進行了稍深刻的分析,經過了解組策略流程,咱們能夠看到,組策略正確處理依賴於多個因素,如DNS,AD數據,AD複製與FRS複製,還包括安全性設置以及sysvol文件夾目錄權限以及客戶端擴展等。當組策略不能正確執行時,能夠從上述因素中查找與定位緣由。
    參考資料: [url]http://technet.microsoft.com/en-us/library/cc779838.aspx[/url]
相關文章
相關標籤/搜索