深刻理解组策略一:组策略处理流程

概述:
    组策略是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]
相关文章
相关标签/搜索