保护Windows Server 2003活动目录


如果我告诉你, Windows NT Server 4.0的安全性要高于Windows 2000 Server,你也许会认为我在说胡话。但是有时候,事实比胡话更加令人不可思议。在某些情况下,Windows NT Server确实要比Windows 2000 Server具有更好的安全性。

不过Microsoft已经发现了这个问题,并在Windows Server 2003的活动目录中重新采用了类似于Windows NT4.0的安全架构。下面我们就来研究一下这个安全问题,然后我会提供几个小技巧,帮助你更好的确保AD环境的安全。

物理安全是首位

当我们试图保证AD环境的安全时,首先要考虑的就是它的物理环境是否安全。如果任何你不信任的人可以随意接触到你的域控制器或DNS服务器,那么你的AD环境肯定不会安全。很多管理工具以及灾难恢复工具的存在也可以为黑客提供相当大的便利。

假如可以从物理上接触到服务器,那么就算是电脑水平一般的人也可以在较短时间内进入你的系统。因此,在你没有确保服务器位于一个安全环境时,也不用考虑如何加强AD的安全性了。

Windows NT 对阵 Windows 2000 不要误解我在文章开始时所说的话。在很多情况下,Windows 2000所提供的安全性确实要强于Windows NT。但是不能忘记计算机领域的一个基本规则:越是复杂的程序越容易出现可被利用的安全漏洞。毫无疑问,Windows 2000要比Windows NT复杂的多。

这方面最好的例子就是在不同操作系统中,域模式的实现方式不同。在Windows NT中,域是唯一的组织结构。一个域可以包含整个公司内的全部用户、组、以及计算机。如果这个公司非常大,那么可以设立多个域,并在域之间建立信任关系,但是每个域都是独立的结构。

在开发Windows 2000时,微软意识到Windows NT中的域模式并不能很好的用于更大型的企业,因此微软在一个被称为森林(forest)的结构上采用了活动目录(AD)模式。在一个森林中,你可以创建多个不同的域,甚至可以使用父域以及子域等树木结构。和在Windows NT环境中一样,每一个域仍然有自己的管理员,不过相似性也就只有这些了。

在Windows 2000中,微软认为应该让域变得更加易于管理,因此它为域的管理创建了不同的等级。比如,一个Domain Admins组的成员可以管理当前域以及当前域的子域。而Enterprise Admins组的成员则可以管理整个森林中的任何一个域。由此也产生了一些问题。

在Windows 2000 的AD模式中,最大的问题是森林中所有的域都是相互信任的,这将引发一系列问题。首先,当安全规则没有设立好时,域管理员可以通过把自己添加到 Enterprise Admins组的方式提高自己的管理权限,这样他们就具有了管理整个森林中任何一个域的权限。如果该域具有一定的安全规则,那么恶意的管理员也可以通过篡改SID纪录以及运行提升权限操作等对整个森林进行攻击。通过操作SID纪录,管理员可以赋予自己Enterprise Admin的权限。

另外,Windows 2000 的AD安全模式中还存在一些固有的薄弱环节。也许你知道,每一个域都至少需要一个域控制器,而每一个域控制器都包含了该域以及整个森林的信息。这些信息包括AD结构以及一些基本的配置。

现在设想一下,假如公司里的一个管理员一时疏忽,安装了一个恶意程序,或者对AD做了一些不正确的配置。如果这个配置的改动是针对森林级的AD 组件进行的,那么最终这个改变将传递到整个森林里的每个域控制器上,这将破坏每个域控制器上的AD配置副本并有可能造成整个公司的网络瘫痪。

让我们再来对比一下Windows NT中的情况。就算一个域信任另一个域,每个域中都会包含和各自域有关的安全帐户管理副本。因此,怀有恶意的管理员无法通过修改本地域的SAM文件来间接破坏对方域的SAM文件。同样,在Windows NT中没有一个足够大的管理员权限可以让某个域的管理员将权限提升到可以控制公司网络内其它域的地步。

另一个有关Windows NT的信任关系的优势在于,这种信任关系既可以是单向的,也可以是双向的,并且这种信任关系本质上是不可以传递的。这种单向性意味着,假如你有两个域,Users 域和Admin域, 你可以让他们之间相互信任,也可以仅让Users 域信任Admin域,而Admin域不信任Users 域。而信任关系的不可传递性意味着,假如域A信任域B,而域B又信任域C,那么域A 依然不会信任域C,除非管理员亲自指定这种信任关系。

Windows Server 2003 的安全性

看到这里,你也许会很好奇,在Windows Server 2003中,这种域的安全性到底有什么特点呢?我之所以在一开始介绍了Windows NT 和Windows 2000的区别,就是为了让大家更好的理解Windows Server 2003的特点。在Windows Server 2003种,微软将Windows NT和Windows 2000的两种模式融合在一起,因此,为了更好的保护你的Windows Server 2003网络,你必须理解上两个系统的安全模式中存在的优势和不足。 Windows 2000中最大的 AD安全弱点就是一个森林中的所有域都是通过一个通用的管理架构相联系的,这个通用的管理架构也就是森林本身。在Windows Server 2003中,森林架构依然被沿用下来,并且其作用也和Windows 2000中没有什么区别。

而Windows Server 2003的森林结构与Windows 2000 Server中的森林结构最大的不同是,在Windows Server 2003中,可以方便的建立森林和森林间的信任关系。在Windows 2000中,信任关系只存在于森林内部的域之间,而在2003中,这种信任关系扩展到了森林之间。管理员可以让一个森林中的用户像访问本地资源一样访问另一个森林中的内容。

单一森林与多个森林

单一的森林结构比较适用于小型或中型的企业,因为这种结构更易于管理。但是对大型企业来说,每个部门或者办公区域都需要有完整的管理用户和计算机的能力。在这种环境下,各个部门之间更多的是一种不信任的关系。因此一个企业内设立多个森林是比较理想的解决方案,它使得每个部门都能有完全的自主权。

同时,虽然在多个森林的环境中,管理负担被分散了,但是实际上,管理多个森林环境要比管理单一森林的负担重很多,这使得公司的管理成本也相应提升。我个人的观点是,设计Windows Server 2003的AD环境,成本和安全性如何相互权衡是一个问题。

森林间的信任关系

下面我们看看多森林机制下,如何确保公司AD的安全性。首先,每个森林都有自己的AD;各个森林之间没有一个公共的连接关系。因此,我们可以让每个森林都使用同一个通用的DNS服务器。假设这个通用的DNS服务器以及备份DNS服务器受到可靠的管理,那么将它们合并成一个DNS服务器可以部分降低资源成本和管理负担。不过这种方法也有不足的地方,当这个公用的DNS服务器崩溃时,由于网络内没有备用DNS服务器,那么网络可能会无法正常运转。

在Windows Server 2003中设置森林间的信任关系,首先要满足一些前提条件。其中最难满足的条件是令所有参与信任关系设置的森林都以“功能级”模式运行。我们都知道, Windows 2000的AD可以按照混合模式或本机模式运行,而Windows Server 2003的“功能级”模式与此类似。将一个森林设置为Windows Server 2003的“功能级”模式需要森林内的所有域控制器均采用Windows Server 2003操作系统。

要创建森林内部的信任关系,作为管理员,你必须是Enterprise Admins组的成员。同时,你还必须对DNS服务器进行配置,以便它可以解析森林内部所有确立了信任关系的域和服务器。

最后,让我们回想一下Windows 2000中的AD结构,每个森林都有一个根域,并且其它所有的域都依存在这个根域之下。在Windows Server 2003中,只可以自根域创建内部信任关系,因为森林内部的信任关系在域一级上是可以传递的。这意味着假如你在森林A和森林B之间确立的信任关系,那么森林A中的所有域都会信任森林B中的所有域,反之亦然。不过在森林级别上,信任关系是不能传递的。

比如,如果森林A信任森林B,森林B又信任森林C,那么森林A 并不会信任森林C,除非是管理员手动确立这种信任关系。因此,森林内部的信任关系的传递,是一个具有很强能力的特性。如果你的森林包含了多个域,你肯定不希望一个低等级的管理员在未经过你同意的前提下随便建立森林内部的信任关系,因为这会导致很大的安全问题。这就是为什么你只可以在森林根域一级建立信任关系的原因。

使用Windows Server 2003 创建信任关系的一个有趣现象是,你不必创建一个完整的森林内部的信任关系。假设你的业务部门需要与厂商建立一个信任关系,只需要与厂商的一个域建立信任关系即可,而不用一一和厂商的各个部门的域建立这种关系。这种情况下,你所建立的信任关系就被称为一个外部信任。

外部信任是域和域之间的信任关系,它和Windows NT中的信任关系类似。一个外部信任可以令你的森林中的一个域信任另一个森林中的一个域。除了对任何等级的域建立外部信任关系外,外部信任和森林内部信任关系还有一个重要的区别。

这个区别就是,与森林内部信任关系不同,外部信任关系是完全不可以传递的,也就是说信任关系只对管理员手动确立信任关系所涉及的域有效。而这两个森林中的其它域,都不会受到这种信任关系的影响。

不论是森林内部的信任关系还是外部信任关系,都具有双向性,你可以实现双向的信任关系,也可以只设定单向的信任关系。双向的信任关系意味着两个域之间的信任是相互的,而单向的信任关系对于某个域来说,则分为信任对方以及被对方信任。在被对方信任的关系中,你的本地域可以访问对方域或对方森林中的内容,但对方不能访问你的资源;而在信任对方的关系中,你的本地域或森林则可以被对方域或者对方森林访问,反之也不行。

跨森林身份验证

Windows Server 2003的森林内信任支持跨森林身份验证。假设一个在森林A 上登录的用户需要登录到森林B进行业务操作。通过跨森林身份验证功能,就算这个用户是在森林A登录,他依然可以像登陆森林A一样登录进森林B。

由于森林B中的域控制器和全局目录中都没有关于该用户在森林B中的资料,因此这种登录方式看上去非常不可思议。实际上,当用户试图登录时,计算机会先后检查域控制器和全局目录上有关该用户的账户信息。由于找不到该账户,系统会开启跨森林的按账户名匹配的搜索功能。该功能会搜索所有确认的命名空间 (即森林)中与这个账户匹配的账户证书。由于这种搜索和比较功能是通过Kerberos 和NTLM实现的,因此非常安全。

跨森林授权

Windows Server 2003的另一个优势是可以跨森林授权。管理员通过访问控制列表(Access Control List,ACL)就可以直接为本森林内或者是其它森林内的用户赋予权限。当然,取消权限也可以同样操作。

比如,你是公司研发部门的管理员,你需要确保部门内的全部文件都是保密的。而公司内另一个具有森林级权限的管理员却与竞争对手公司之间建立了一个森林内信任关系。如果你希望能让竞争对手公司的用户无法访问到你的数据,你可以拒绝这些用户访问你部门所在域的所有服务器。

虽然这有一定效果,但是你必须完整地输入所要屏蔽的用户名或者用户组的名字,而不能通过其它措施屏蔽他们。因此,你很难完全保证对方森林的用户不会看到你的保密数据。不过另外还有一个相对有效的措施,即获取对方森林下的所有域的域名,然后屏蔽这些域下的 Everyone组,这样基本可以实现屏蔽的作用。

总结

虽然Windows 2000要比Windows NT新,但是它的一些改变却降低了系统的安全性。而Windows Server 2003则向你提供了一些更加灵活的安全方案。其中一个比较有效的安全措施就是构建多个森林,然后在森林之间实现信任关系。当然,这个方案实施起来并不轻松,它需要很多先决条件,并且会使整个架构的建设成本以及后期维护成本大大增加。

 

本文作者:



相关阅读:
.NET调用PHP Web Service的典型示例
试验:内存512MB对Windows系统的测试
如何实现asp.net 2.0的SqlCacheDependency
兼容性
php ss7.5的数据调用 (笔记)
将CSS按照层叠式结构化重新组织与构建
一个可以删除字符串中HTML标记的PHP函数
上传文件先创建目录 再上传到目录里面去
另类网页中添加运行效果
FreeBSD如何通过代理上网更新
SQL Server错误18456的解决方法
CSS网页制作技巧:文字图片水平对齐vertical-align
CSS教程(2):通过实例学习CSS背景
js取得当前网址
快速导航

Copyright © 2016 phpStudy |