ACL是Access Control Lists 的缩写,可理解为"存取控制表",ACL是windows2000&NT系统中,活动目录对象安全描述符的一部分,每个活动目录对象的安全描述符都由4部分构成:对象的创建者、对象所属的组、自由存取控制和系统存取控制。其中自由存取控制实际是归在ACL中的,ACL主要是决定活动目录对象的许可权限.而系统存取控制则主要是审核活动目录对象的许可权限.通俗说,好比社会上的许可证管理:有负责发放许可证的部门,还有负责审核许可证(权限)的部门.Acldiag就是在些机制出了问题之后,如何进行诊断和维修的工具.
这仍是一个命令行的工具,功能就是诊断活动目录对象的许可权问题.它从"存取控制表"中读取安全属性信息,并以易于理解的格式写入一个文本文件中,这些所谓的安全属性信息有:详细的权限描述、使用者和组等等,这个文本文件也可以作为上传的报告.
使用Acldiag可以完成的任务有:
1.在默认规划中,比较ACL目录服务对象定义的许可权限.
2.进行检查或维护,使用模板,执行标准授权.
3.对某个指定的使用者或组,或是对所有使用者和所有的组,得到它(或它们)有效的许可权限,并在ACL中显示出来.
使用AclDiag工具仅仅能显示出对象的许可权和用户权限.却不能显示其它诸如组策略之类的相应的信息,这主要是因为组策略是虚拟对象,而对虚拟对象的名字,这个工具不能使用它们.
二、AclDiag的语法:
acldiag "ObjectDN" [/chkdeleg] [/fixdeleg] [/geteffective:{User | Group}] [/schema] [/skip] [/tdo]
参数及说明:
ObjectDN
所指定活动目录对象的正确的名字,在命令行中使用这个参数时,活动目录对象名字必须使用引号.
/chkdeleg
检查对象的委托及授权的安全性能.
/fixdeleg
用控制向导的委托,检测或维护所有将要使用对象的授权.
/geteffective:{user | group}
以可读取的格式,打印输出指定用户或指定(工作)组关于许可权限方面的信息.
/schema
检查包括默认规划内的对象是否安全.
/skip
不显示(跳过)安全描述符..
/tdo
当需要将相关的资料进行保存时,以系统规定的表格格式或其它"可读取"的格式将信息资料写进文件中去.在windows2000或windowsNT中,为了统一标准和便于处理,微软公司专门规定有一套各种信息资料的填写样式,即所谓"电子表格"(不是我们通常说的Exce).
像验证其它工具一样,我在命令行窗口中实际执行了一下acldiag/?,得到程序提示的帮助信息,两下对比发现,帮助文档文档中介绍的内容和提示信息内容还是一致的.至于每个项目的结果,限于时间和条件,没有进行更为深入细致的研究.倒是帮助文档中介绍了一个实际诊断的例子:这个例子是诊断microsoft.com 域中,显示所有默认规划内的访问权限,其命令和参数如下:
C:>acldiag "DC=microsoft,DC=com" /schema
三、诊断输出信息释义
要确定系统的问题,不但要进行诊断,还要能看懂诊断工具所输出的信息含义.对这个工具来说,诊断信息中关键的部分如下:
仍以上面介绍的诊断为范本.先执行:
acldiag "DC=microsoft,DC=com"
执行之后,得到的屏幕输出不仅是英文,而且很长,所以不便附在这里.我仔细阅读后,觉得主要项目有以下几个方面:
1.列出是对哪个系统进行的诊断.相当于医生在病历单上所填写的患者姓名.
2.对象的描述:拥有者: {用户 |组}
3.许可权限:分四种:拒绝、允许、用户、组(团体),只能是其中之一
4.许可权限的继承关系:对象的许可权限允许从其父辈继承过来,或者说当前对象的权限也允许其子对象继承,所继承的权限也在上述四种之内.
5.权限审核:这也就是我们上面提到的部分了.许可权限的审核的结果只有两种:成功和失败.对许可权限的审核也包括所继承部分.
6.默认规划:如果仍以上面的诊断为范本,则默认规划的诊断命令是: acldiag "DC=microsoft,DC=com" /schema
结果分为三种:现有部分、不存在、局部.
7.授权模板:命令形式是:acldiag "DC=microsoft,DC=com" /chkdeleg
其输出如下:
状态: {OK | NOT PRESENT/MISCONFIGURED}
对象是否使用: {YES | NO}
是否继承 : {YES | NO}
竖线两侧的状态只能选其中之一.
8.有效权限:命令行形式是:
acldiag "DC=microsoft,DC=com" /geteffective:{User | Group}
输出结果如下:
{User | Group} 1:
对台式机配置更详尽的控制
组策略是Windows 2000中新增加的我最喜欢的功能,它给了我Windows NT从来没有提供过的功能━━对用户计算机集中而详尽的控制,我们可以把组策略看作是NT 4.0中系统策略的改进。组策略对象(GPO)是基于活动目录(AD)的对象,用户可以通过它集中地对Win2K台式机和服务器系统进行配置,它的功能包括从NT 4.0台式机的锁定到安全性配置和软件安装等。
篇文章主要讲述组策略是如何对系统起作用的、系统内部的工作原理以及在Win2K环境中采用这一技术时应该注意的问题,如果了解NT 4.0中系统策略的原理对我们理解组策略有一定的帮助。
组策略是什么?
GPO是一种与域、地址或组织单元相联系的物理策略。在NT 4.0系统中,一个单一的系统策略文件(例如ntconfig.pol)包括所有的可以执行的策略功能,但它依赖于用户计算机中的系统注册表的设置。在Win2K中,GPO包括文件和AD对象。通过组策略,可以指定基于注册表的设置、使用NT 4.0格式.adm模板文件的运行Win2K的本地计算机、域的安全设置和使用Windows安装程序的网络软件安装,这样在安装软件时就可以对文件夹进行重定向。
微软管理控制台(MMC)中的组策略编辑器(GPE)插件与NT 4.0中的系统策略编辑器poledit.exe相当。在GPE中的每个功能节点(例如软件设置、Windows 设置、管理模块等)都是MMC插件扩展,在MMC插件中扩展是可选的管理工具,如果你是应用程序开发者,可以通过定制的扩展拓展GPO的功能,从而针对你的应用程序提供附加的策略控制。
只有运行Win2K的系统可以执行组策略,运行NT 4.0和Windows 9x的客户机则无法识别到或运行具有AD架构的GPO。
组策略和AD
要充分发挥GPO的功能,需要有AD域架构的支持,利用AD可以定义一个集中的策略,所有的Win2K服务器和工作站都可以采用它。然而,每台运行Win2K的计算机都有一个本地GPO(驻留在本地计算机文件系统上的GPO),通过本地GPO,可以为每台工作站指定一个策略,它在AD域中不起作用。例如,出于安全原因,你不会在AD域中配置公用的计算机。利用本地GPO,可以通过修改本地策略来得到安全性和对台式机的限制使用而无需利用基于AD域的GPO。访问本地GPO的方法有2种,第1种方法,在需要修改GPO的计算机的“开始”菜单上选择“运行”,然后键入:
gpedit.msc
这个操作的作用与NT 4.0中的poledit.exe相同,可以打开本地策略文件。第2种方法,可以通过在MMC控制台中选择GPE插件,并选择本地或远程计算机来人工地编辑本地GPO。
本地GPO支持除软件安装和文件夹重定向之外的所有缺省扩展,因此,只利用本地GPO你不能完成这些工作,如果想充分发挥GPO的功能,还是需要AD的支持。
GPO的多样性和继承
在AD中,可以在域、组织单位(OU)或地址三个不同的层次上定义GPO。OU是AD中的一个容器,可以指派它对用户、组、计算机等对象进行管理,地址是网络上子网的集合,地址形成了AD的复制分界线。GPO的名字空间被划分为计算机配置和用户配置两个大类,只有用户和计算机可以使用GPO,象打印机对象甚至用户组都不能应用GPO。
在一个域或组织单位(OU)中编辑策略的途径有几种。在活动目录用户或计算机MMC插件中,右击一个域或组织单位(OU),在菜单中选择“属性”,然后选择“组策略”标签。在编辑地址中的策略时,需要右击“活动目录地址和服务”插件,然后右击需要的地址得到其GPO。此外,还可以从“开始”菜单,选择“运行”,然后键入:
mmc.exe
启动MMC,选择“控制台”,“增加/删除”插件,然后选择“组策略”插件、“浏览”,在AD域内的GPO就会显示出来,可以选择一个GPO进行编辑。
根据GPO在AD名字空间中的不同位置,可以有几个GPO对用户对象或计算机对象起作用。只有域中的其他对象是通过继承生成时GPO才是通过继承生成的。Win2K通过下面的方式执行GPO,首先,操作系统执行现有的本地系统上的策略,然后,Win2K执行定义的地址级的GPO、域一级的GPO和基于OU的GPO,微软把这一优先顺序取其首个字母缩写为LSDOU(执行的顺序依次是本地、地址、域、OU层次的GPO),用户可以在这个链上的许多层次上定义GPO。我们以pilot域为例说明如何察看一个系统中的GPO,启动“活动目录用户和计算机MMC”工具,右击pilot域名,从菜单中选择“属性”项,然后选择组策略标签。在这个列表顶端的GPO(例如域范围的安全策略)有最高的优先权,因此,Win2K最后才会执行它。除了本地系统外,可以在每个层次上定义几个GPO,因此如果不能严格地管理GPO,就会出现不必要的问题。
GPO的继承模型与Novell公司的Zenworks策略方式截然不同。在Zenworks中,如果在Novell目录服务(NDS)树上的不同点使用多个策略包,只有距离用户对象最近的策略包才起作用。在Win2K中,如果在AD的不同层次上定义四个GPO,操作系统使用“LSDOU”优先顺序来执行这些策略,对计算机或用户的作用是这四个策略执行的“和”。此外,有时在一个GPO中的设置会被其他GPO中的设置抵销。通过AD级GPO,用户可以拥有更多的策略控制委托,例如,公司的安全部门负责在域一级上设计用于所有系统设备的安全GPO。通过使用GPO,可以让某个OU的系统管理员拥有在OU上安装软件的权利。在Zenworks模型中,必须在希望使用策略的所有层次上复制这些策略,而且策略对用户或计算机对象的作用并非是所有策略的“和”。
为了进一步地控制GPO,微软提供了三种设置来限制GPO继承的复杂性。在地址、域、OU三个层次上用户都可以通过选择一个检查框阻止从更高一个层次上进行继承,同样,在每一个层次上,用户可以选择缺省的域策略选项,方法是打开“活动目录用户和计算机”插件,右击GPO所在的域或OU,从菜单中选择“属性”,然后选择“组策略”标签。让你希望修改的项目变亮,然后选择“选项”按钮,可供选择的选项有“不覆盖”或“禁止”。如果选择了“不覆盖”选项,即使选择了不能继承的检查框,该GPO还是会起作用。如果想在任何一个地方执行一个GPO时,这一功能就很有用处。如果一个OU的管理员试图阻止对安全策略的继承,包含安全策略的GPO仍然会被系统执行。“禁止”检查框可以完全禁止一个GPO执行,这一功能在你对一个GPO进行编辑而不想让其他的用户执行它时特别有效。
GPO的执行和过滤
只有用户和计算机对象才能执行组策略。在计算机的启动和关闭时,Win2K执行在GPO的计算机配置部分定义的策略,在用户登录和注销时,Win2K执行在GPO中用户配置部分定义的策略。事实上,在用户登录时可以通过手动方式执行一些的策略,例如可以在命令行方式下运行secedit.exe程序执行安全策略应用程序。此外,通过管理员模块策略可以定期地对用户和计算机的GPO设置进行刷新,缺省情况下,这种刷新每90分钟进行一次,这种刷新可以使其他用户不容易修改通过组策略定义的策略。但是,软件安装策略是不会刷新的,因为没有人希望周期性地改变策略引起软件的“?载”,尤其是有其他用户在使用时,就更是这样了。计算机、用户对象只有在计算机启动或用户登录时才会软件安装策略。
尽管只有AD中的计算机和用户对象才能执行GPO,但我们可以过滤GPO的效果。使用Win2K中的安全组、应用组策略━━这是Win2K中的一项新的安全特性,可以使特定的用户组不能执行某一个GPO。右击MMC中GPO的名字,选择“属性”,然后再选择“安全”,就可以看到GPO目前的安全设置。认证用户组具有应用组策略权利,从而附属这一GPO的所有用户可以执行它。在Win2K中,安全组可以包括用户和计算机对象。因此,利用安全组可以仔细地调整用户、计算机对象如何执行一个GPO。你还可以对个别的应用程序应用安全组,可以指派一个GPO的软件安装部分。例如,假设你在一个GPO中发布10个应用程序,可以指定只让金融用户用户组访问其中的5个,其他用户登录到这个域时,它们也不会发现这5个应用程序。
GPO的内部构成
一个GPO是由两部分组成的:组策略容器(GPC)和组策略模板(GPT)。GPC是GPO在AD中的一个实例,在一个特殊的被称作系统的容器内有一个128位的全球唯一的ID码(GUID)。在“活动用户目录用户和计算机”插件中选择“浏览”,从MMC菜单中选择“高级属性”,就可以看到“系统”容器。GPT是组策略在Win2K文件系统中的表现,与一个GPO有关的所有文件依赖于GPT。
GPO带来的难题
虽然GPO的功能很强大,但要掌握它可不容易。最难掌握的是如何判断一条有效的策略如何对域中的计算机或用户起作用,由于GPO可以存在于AD链中不同的层次上,这种判断就特别困难。同时,由于可以指派一个GPO的控制,因此不大容易清楚其他的GPO是否会对你没有控制权的容器中的GPO有影响。因此,计算一个计算机或用户对象接收的“策略的结果集”(RSoP)是相当困难的。尽管微软还没有提供计算RSoP的工具,但已经有第三方厂商提供了相应的计算RSoP的工具。
另一个难题是策略的执行。如果在AD链上的许多层次上都存在有GPO,在用户每次登录或系统启动时都会执行所有的GPO。在Win2K系统中,微软推出了一些新的功能来优化系统的性能。首先,GPO的版本信息依赖于工作站和GPO,如果GPO没有变化,系统就不会执行它。另外,在GPE的属性页上,可以禁止用户或计算机对GPO的执行。如果建立一个GPO用来分发关闭系统或启动系统时的脚本,禁用GPO的用户配置部分,这样会使工作站不能解析GPO并判断它是否已经发生了什么变化。
最后的一个难题起源于GPC和GPT是两个单独的实体。GPC是AD中的一个对象,它与GPT中包含的文件的复制不同步,这意味着创建一个GPO时,在GPT开始向域控制器上的Sysvol复制文件之前GPC可能已经开始进行复制了。
所有问题的起源都是由于AD使用了一种多主体的复制模式。理论上,当另一个系统管理员在一个域控制器上编辑一个GPO时,你也可以在某个域上对它进行编辑。因此,当建立一个GPE时,缺省状态下指的是在“操作主体”中充当PDC的域控制器。(“操作主体”是AD基础结构中的一系列托管功能,用作PDC的服务器可以兼容运行NT和Win9x的工作站。)一般情况下,可以通过只向少数的系统管理员授予编辑GPO的权利来避免这种情况的发生,并保证如果有人在编辑GPO时,让其他的人都知道。此外,需要注意的是,在对一个GPO进行编辑时,要“禁止”它,修改结束后重新使能。
GPO的优缺点
GPO的优点是可以让用户灵活地控制Win2K环境,但伴随着灵活性而来的是复杂性。如果能够正确、灵活地运用GPO,就能使Win2K发挥出更加强大的功能。