组策略(Group Policy)是微软Windows NT家族操作系统的一个特性,它可以控制用户账户和计算机账户的工作环境。组策略提供了操作系统、应用程序和活动目录中用户设置的集中化管理与配置。组策略有一个版本名为本地组策略,它可以在独立且非域的计算机上管理组策略对象。
本地组策略(Local Group Policy,缩写为LGP或LocalGPO)是组策略的基础版本,它面向独立且非域的计算机。至少在Windows XP家庭版中它就已经存在,并且可以应用到域计算机中。在Windows Vista以前,LGP可以强制施行组策略对象到单台本地计算机,但不能将策略应用到用户或组。从Windows Vista开始,Windows允许LGP管理单个用户和组,并允许使用GPO Packs在独立计算机之间备份、导入和导出组策略—组策略容器包含导入策略到目标计算机的所需文件。
当想批量管理域内计算机时,域管理员就可以通过组策略管理来统一对域内用户进行管理。接下来详细阐述域内组策略内容。可以通过gpmc.msc命令打开“组策略管理”界面,其中Default Domain Policy、Default Domain Controllers Policy是默认的组策略,如图2-24所示。
图2-24 查看域组策略
如图2-24所示,链接指的是相应组策略影响范围,链接的位置可以是站点、域及OU,图中组策略的影响范围为“安全部”这个OU。如果想要看到组策略的具体内容,可以通过单击右键并保存报告的方式进行查看,如图2-25所示。
图2-25 保存组策略报告
之后就可以看到其中的具体内容,如图2-26所示。
图2-26 查看组策略报告
组策略在域内的存储分为两部分,分别为组策略容器(GPC)及组策略模板(GPT)。活动目录以容器的概念来组织和管理策略。组策略容器存储了每一个组策略详细的基本信息,如策略名称、标识组策略的GUID、组策略链接到的层级(即作用的对象)、策略模板的具体路径、策略应用的筛选与过滤等。客户端可以从组策略容器中获取到关于该策略的所有元信息及具体配置路径。
1.组策略容器
使用CN=Policies,CN=System,<BaseDn>命令可以通过LDAP查询组策略容器,位置如图2-27所示。
组策略容器描述了名称、文件路径等信息,其中较为关键的信息如下。
❑displayname:组策略的名称。
❑gPCFileSysPath:组策略模板所在的具体路径,即客户端查找具体的配置信息的物理路径,位于域控制器的SYSVOL共享中。
❑gPCMachineExtensionNames:客户端执行该组策略所需的客户端扩展程序。
图2-27 通过LDAP查询组策略容器
在某个对象应用了相应组策略之后,该对象的gPLink值将会指向包含该组策略的完整域名,也就完成了LDAP的链接,如图2-28所示。
图2-28 查看gPLink值
2.组策略模板
组策略模板是组策略的策略配置信息,它位于域控制器的共享目录C:\Windows\SYSVOL\sysvol\DomainName\Policies下的各个GUID文件夹内。执行net share命令可以看到该共享目录,如图2-29所示。
图2-29 查看组策略模板所在的共享目录
在任意一台域用户所在的计算机上,我们可以查看sysvol的默认共享,如图2-30所示,还可以查看共享policies目录,如图2-31所示。
图2-30 查看sysvol默认共享
在GPT目录中可以看到如图2-32所示的结构。
图2-32中各个目录和文件的含义如下。
❑Machine目录:包含针对计算机的策略配置。
❑User目录:包含针对用户的策略配置。
❑gpt.ini文件:该组策略对象的一些配置信息(如版本信息、策略名称)。
图2-31 查看共享policies目录
图2-32 查看GPT目录
上述Machine及User目录根据设置的不同组策略配置,拥有不同的目录结构,如Scripts目录包含开关机和登入登出的执行脚本,Applications目录包含关于软件的配置,Preferences目录包含首选项配置。在文件夹内也有一些策略数据,如图2-33所示。
了解过什么是组策略后,接下来了解什么是组策略对象(Group Policy Object,GPO)。可以将组策略对象理解为组策略设置的集合,例如之前提到的默认的Default Domain Policy、Default Domain Controllers Policy。实际上每条组策略都有自己的唯一ID,如图2-34所示。
图2-33 查看GptTmpl.inf
图2-34 查看组策略唯一ID
根据唯一ID可以构造组策略的存放路径,构造后的存放路径为C:\Windows\SYSVOL\sysvol\domain\Policies\{AF792A2C-BF19-4B22-84C7-A793D0D822B3},如图2-35所示。
首先通过PowerShell,使用Import-Module GroupPolicy-verbose命令加载组策略模块,如图2-36所示。
然后使用Get-GPO-All命令获取所有GPO,如图2-37所示。
图2-35 组策略存放位置
图2-36 加载组策略模块
可执行Get-GPO -All | %{Get-GPOReport -name $_.displayname -ReportType html -path("c:\"+$_.displayname+".xhtml")}命令导出所有GPO,如图2-38所示。
执行Get-GPPermission-Name"test"-All命令查看指定GPO的权限,如图2-39所示。
图2-37 获取所有GPO
图2-38 导出所有GPO
图2-39 查看指定GPO的权限