深入理解组策略一:组策略处理流程(转)

以下文章摘自

http://alligator.blog.51cto.com/36993/107174

概述:
    组策略是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服务动态加载。
   
 
    可以在客户机注册表中查看详细的客户端扩展列表,具体注册表位置在:
   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文件夹目录权限以及客户端扩展等。当组策略不能正确执行时,可以从上述因素中查找与定位原因。
Posted in Windows | Leave a comment

HCNA-Storage认证常见问题答疑

HCNA-Storage认证技术常见问题

问题1

对Windows操作系统,在没有安装多路径软件的情况下,配置Microsoft iSCSI initiator,为什么多次执行log on操作会导致应用服务器上出现多个虚假硬盘?

回答1:

在应用服务器上每执行一次log on操作,应用服务器和存储系统间就会建立一个会话。这时应用服务器的操作系统会通过该会话信息去扫描映射的LUN。在没有安装多路径软件的情况下,操作系统无法确定其从多个物理路径扫描到的LUN是否为同一个LUN,就默认为不同的LUN(数量和执行log on操作的次数一致),从而导致在应用服务器上出现多个虚假硬盘。安装多路径软件后,该软件可以通过LUN的WWN(World Wide Name)来识别多个会话中的LUN是否为同一个LUN,在这种情况下,就不会再出现扫描到虚假硬盘的情况了。

问题2

在使用存储系统过程中,如果修改了存储系统密码却忘记了怎么办?

回答2:

如果是只读用户和管理员用户忘记密码,请按照以下步骤进行操作:

  1. 使用admin用户登录CLI。
  2. 运行resetuserpwd命令进行密码初始化。
  3. 初始化密码后,密码为Admin@storage。

如果是忘记admin用户的密码,请联系华为的技术支持工程师寻求技术支持。如何申请存储系统的增值特性License

问题3

如何申请存储系统的增值特性License?

回答3:

  1. 请收集Entitlement ID、Customer No.、Contract No.(在License授权书上获取)和控制框序列号(粘贴在控制框前面板上)。
  2. 请通过E-Mail发送上述四个号码到邮箱。
  3. 请及时查收工作人员发送到您的邮箱中的License文件。保险箱硬盘是否可以和其他硬盘互换

问题4

保险箱硬盘是否可以和其他硬盘互换?

回答4:

不可以。

保险箱硬盘中保存了存储系统的配置数据、事件及日志信息。当存储设备电源掉电后,内存中的数据也会被写入到保险箱硬盘中。如果随意用其他槽位的硬盘替换保险箱硬盘,将导致存储设备无法正常运行,所以不允许互换。在什么情况下使用资源池

问题5

在什么情况下使用资源池?

回答5:

资源池用于向各种增值业务提供可用的公共资源。以下增值业务需要使用到资源池资源:

虚拟快照

激活虚拟快照时需要使用虚拟快照源LUN归属控制器上的资源池资源。

增量LUN拷贝

启动增量LUN拷贝时需要使用增量LUN拷贝源LUN归属控制器上的资源池资源。

异步远程复制

同步异步远程复制时需要使用异步远程复制主LUN归属控制器上的资源池资源,以及异步远程复制从LUN所在工作控制器端的资源池资源。

因此,在使用上述增值业务之前,请确认资源池中存在可用公共资源。如果公共资源不足,需要向资源池中添加LUN。

问题6

为什么能够Ping通iSCSI主机端口,但是iSCSI启动器一直显示在重新连接?

回答6:

这种情况是由于3620端口被屏蔽造成iSCSI启动器无法连接存储系统。网络上的硬件防火墙、主机上安装的软件防火墙或者其他安全软件为了安全,会进行端口屏蔽端口操作。此时,只需要取消对3620端口的屏蔽,即可解决该故障。

问题7

忘记了存储系统管理网口IP地址如何处理?

回答7:

  1. 通过串口登录存储系统。
  2. 运行命令showctrlip查询控制器管理网口的IP地址。

问题8

创建LUN时的不同写策略之间有什么区别?

回答8:

创建LUN时可选的写策略包括:透写、回写镜像、回写不镜像、强制回写镜像和强制回写不镜像。

不同写策略的区别如下:

  • 透写:数据直接写入硬盘。每次写操作都要访问硬盘,性能低,可靠性高。
  • 回写:数据直接写入Cache,然后待主机I/O空闲时再将数据写到硬盘上。每次写操作不需要访问硬盘,性能高,可靠性低。
  • 回写镜像:数据写入本地Cache,同时写到对端Cache。
  • 回写不镜像:数据直接写入本地Cache。
  • 强制回写镜像:强制要求存储设备将数据写入本地Cache,同时写到对端Cache。
  • 强制回写不镜像:强制要求存储设备将数据直接写入本地Cache。

问题9

拔插热备盘后,存储系统是否会自动将其继续设置为热备盘?

回答9:

不会。

用户需要在ISM管理界面上或CLI中将该硬盘重新手动设置为热备盘。

Posted in 网络存储 | Tagged , , | Leave a comment

解开拒绝本地登录的“死结”

在Windows 2003环境下,被组策略拒绝本地登录一直是件比较令人头疼的事情。本文将介绍一种所有用户都被拒绝本地登录后的解决方法。
  在Windows2003中,如果某个用户被取消了本地登录权限,当这个用户本地登录计算机时,系统就会提示“此系统的本地策略不允许您采用交互式登录”,导致登录失败。遇到这种情况,通常请管理员在组策略中重新设置一下,将该用户从“拒绝本地登录”列表中删除或添加到“在本地登录”列表中即可。但如果因为操作失误或其它方面的原因,我们将所有用户的本地登录权限都禁止了(通常是禁止了users组(非域环境下)或domain users组(域环境下)),那就有点麻烦了。这种情形看起来像一个解不开的“死结”:要解除禁止本地登录的组策略设置,必须以管理员身份本地登录;要以管理员身份本地登录,就必须先解除禁止本地登录的组策略设置。但实际上,事情并没有我们想象的那么糟。经过查询相关资料和测试,我发现借助网络的帮助,这个“死结”还是可以解开的。因为域安全策略与本地安全策略的数据保存机制不同,下面分两种情况分别进行说明。
被域策略拒绝本地登录时的解决办法
  域策略的安全设置部分都保存在一个名为“GptTmpl.inf”的安全模板中,这是一个文本文件,存放在DC(域控制器)的SYSVOL(物理目录指向DC的“c:\winnt\sysvol\sysvol”)共享中。要解除对所有用户本地登录限制,在不能本地登录的情况下,最快捷的办法可能就是直接编辑这个文本文件。
  具体操作如下:
  1.. 在另一台计算机(Win9X/2000/XP均可)上,使用域管理员账号连接到DC的SYSVOL共享,在“\\\sysvol\\Policies\GUID>\MACHINE\Microsoft\Windows NT\SecEdit”下找到该文本文件“GptTmpl.inf”。(路径中的“DC name”是你放置该组策略的域控制器的名字,“Domain name”是你的域的名字,“Policy GUID”是你要编辑的组策略的GUID,类似于“{31B2F340-016D-11D2-945F-05C04FB98439}”)。
  2.. 使用记事本打开“GptTmpl.inf”文件,找到文件中“PrivilegeRights”小节下的“SeDenyInteractiveLogonRight”关键字,它的值就是被拒绝本地登录的用户或组的SID,将这些SID删除,使“SeDenyInteractiveLogonRight”关键字的值为空。修改完毕将文件保存回原位置。
  3.. 使用记事本打开位于“\\\sysvol\name>\Policies\”下的“GPT.INI”文件,提高“General”小节下的“Version”关键字的值,通常是加1000。这是我们修改的这个组策略的版本号,版本号提高后可以保证我们的更改被复制到其它DC上。修改完毕将文件保存回原位置。
  4.. 域策略刷新后,问题即告解决。
  5.. 本地登录DC重新设置域策略中的相关项目 。

被本地安全策略拒绝本地登录时的解决办法
  解决被本地安全策略拒绝本地登录的最正统的方法,应该是使用另一台Windows2000计算机,使用组策略MMC管理单元通过网络连接到故障计算机的本地安全策略,然后进行修改。但我测试后发现,使用这种方法成功的机率非常小(具体的原因也不十分的明了),不是连接不上故障计算机,就是打不开故障计算机上本地安全策略的安全设置。因此我们还需要一个更稳妥些的解决方法。
  本地安全策略的安全设置通常存放在一个二进制的安全数据库secedit.sdb中,这个安全数据库的结构我们无从知道,因此象第一部分那样直接编辑secedit.sdb文件的办法是无能为力了,我们需要采用迂回进攻的策略,“曲线救国”。
  具体操作如下:
  1.. 假设故障计算机的IP地址是”192.168.0.111″。在另一台计算机(Windows9X/2000/XP均可)上,使用“Telnet 192.168.0.111”命令使用管理员账号连
接到故障计算机。(如果故障计算机的“telnet”服务没有启动,可以通过网络启动,具体方法不在详述)
  2.. 通过telnet在故障计算机上执行“net share tmp$=d:\tmp”命令,将故障计算机上的“d:\tmp”隐藏共享为“tmp$”,共享权限缺省是everyone完全控制(此时要特别注意网络安全)。当然你也可以共享其它的目录。
  3.. 通过telnet在故障计算机上执行“secedit /export /CFG
d:\tmp\sec.inf”命令,将故障计算机的本地安全策略配置导入“d:\tmp\sec.inf”安全模板文件中,这是一个文本文件。
  4.. 连接到故障计算机上的tmp$共享,用记事本打开共享文件夹中的“sec.inf”文件。找到文件中“Privilege Rights”小节下的“SeDenyInteractiveLogonRight”关键字,它的值就是被拒绝本地登录的用户或组的SID,将这些SID删除,使“SeDenyInteractiveLogonRight”关键字的值为空或者是随便另设置一个无关的值。文件修改完毕保存回原位置。
  5.. 通过telnet在故障计算机上执行“secedit /configure /db
c:\secedit.sdb /CFG d:\tmp\sec.inf”命令,使用新的安全模板和安全数据库重新配置故障计算机的本地安全策略。
  6.. 通过telnet在故障计算机上执行“secedit /refreshpolicy
machine_policy /enforce”命令,强制在故障计算机上刷新策略设置,问题即告解决。
  7. 本地登录故障计算机后,删除我们建立的Tmp$共享,重新设置本地安全策略中的相关项目。

  secedit简介
  Secedit.exe,Windows2000自带的自动化安全配置任务命令行工具,功能强大。我们可以用它来分析系统的安全性、配置系统安全性、刷新安全性设置、导出安全性设置和验证安全配置文件。它的具体用法请使用“secedit /?”查看其帮助文件。

  补充说明
  上面所说的两种方法,都是以有权限用户(如管理员)没有被禁止从网络登录为前提的,如果你的策略把从网络登录也禁止了,让故障计算机成了真正的“孤家寡人”,那问题解决起来要麻烦的多,但同样不是一个解不开的“死结”。具体的解决办法,我会另具文说明,在此不再细说。

Posted in Windows, 操作系统 | Tagged , , | Leave a comment