Windows Server 2008从入门到精通系列
《第二部分:在Windows Server 2008实现活动目录域服务》
第三篇:只读域控制器(RODC)
作者:王辉(MVP/MCT)
作者注:最近和余勇老大(MVP/MCT)组成了Windows Server 2008学习小组,互相督促,互相学习。今天又看到竹林冷雨兄弟发表了关于Windows Server 2008 Enterprise Core的文章,心有所感,再也不敢起懒惰之心,准备把我学习Windows Server 2008的一些心得和实验步骤整理写成文章,始有此系列。另外还是要说明一下,版权作者所有,未经作者同意严禁转载,如需转载请联系作者,联系方式为chinamct@msn.com。
本系列共10门课:
1. 安装和管理Windows Server 2008
2. 在Windows Server 2008中实现活动目录域服务
3. 在Windows Server 2008中实现活动目录标识与访问
4. 在Windows Server 2008中管理IIS 7.0和Windows媒体服务器
5. 在Windows Server 2008中实现网络基础架构服务
6. 在Windows Server 2008中实现网络访问保护(NAP)
7. 在Windows Server 2008中实现终端服务
8. 在Windows Server 2008中实现存储架构
9. 在Windows Server 2008中实现安全
10. 在Windows Server 2008中实现高可用性和虚拟化
本文为第二部分第三篇,文章将覆盖以下内容:
l RODC的特征
l 部署RODC的指南
l 实现RODC的需求
l 配置密码复制策略的选项
l 实现RODC
一、RODC的特征
l 只读数据:RODC上包含所有ADDS的对象和属性,但是和可读写的DC不一样的是,默认情况下,RODC上不包含账户的密码。在不能保证域控制器的安全性的情况下(例如分支机构),我们通过RODC实现域信息的安全性。在分支机构如果有LDAP的应用程序需要访问活动目录并对活动目录对象作修改,则该LDAP应用程序可以重定向到中央站点的可读写DC上。
l 单向复制:RODC对ADDS和DFS执行的常规的入站复制。因为您不能直接在RODC上进行写的操作,所以RODC是不支持出站复制的,所以作为RODC复制伙伴的可读写DC是不会从RODC接收到数据的。RODC的单向复制也同样应用到DFS复制。
l 凭据缓存:在RODC上存储用户和计算机的凭据称之为credential caching(凭据缓存)。默认情况下,RODC上只存储它自己的计算机账户和一个用于这台RODC的特殊的Kerberos 票据授权票 (KRBTGT)账户,此账户是被可读写DC用来验证RODC身份的。如果您需要在RODC上存储用户凭据或者计算机凭据的话,你需要在RODC上允许这些凭据被缓存。如果您在RODC上激活了凭据缓存,它只会影响组织中计算机和与用户账户的比较小的子集,这是因为RODC一般是总是放置在比较小的分支机构,所以您允许凭据缓存的计算机和用户账户应该都不多。这样即使您的RODC被偷了,您只会丢失那些缓存在RODC上的凭据。其实在后面会说到,在RODC被偷走之后,您可以马上在可读写DC上将RODC的计算机账户删除,在删除时可以对缓存在该RODC上的凭据进行密码重设,这样丢失掉的这些凭据就没有任何作用了。
l 只读DNS:您可以在RODC上安装DNS服务。RODC可以复制DNS所使用的所有应用程序目录分区(Application Directory Partition),包括ForestDNSZones和DomainDNSZones。如果您在RODC上安装了DNS,则客户端可以请求RODC进行名称解析。但是,在RODC上的DNS是不支持客户端直接进行更新DNS纪录的,因此RODC不会在它所拥有的活动目录集成区域里面注册任何NS纪录。当客户端找RODC进行DNS纪录更新时,RODC将返回一个指针。然后客户端计算机将联系指针所指向的DNS服务器更新DNS纪录。在后台,在RODC上的DNS服务器将尝试从执行更新的DNS服务器上复制更新的纪录。为了提高复制效率,RODC只会请求更新的纪录。
l 管理角色分离:您可以使用该特征来允许一个普通的域用户成为RODC的本地管理员。这样此用户可以对分支机构的RODC进行管理操作,例如安装安全更新或者驱动程序。这个特征好处在于此用用在域中或者任何可读写的域控制器上没有用户权利。而在以前都是可读写DC,DC的本地管理员和域管理员是没有区别的。这使得分支机构用户可以有效的管理RODC而不会影响整个域的安全性。
二、部署RODC的指南
如果您需要在有Windows Server 2003域控制器的域中安装RODC,您必须升级一些域控制器到Windows Server 2008。在部署RODC时您应该有以下考虑:
l 活动目录复制考虑。RODC可以从Windows Sever 2003域控制器复制架构分区和配置分区的数据,但是RODC只能从来自同一域的Windows Server 2008的可读写域控制器复制域分区的数据更新。因此,您至少应该在中央站点安装一台Windows Server 2008的域控制器用于RODC复制。
l 持有PDC角色的Windows Server 2008域控制器。作为PDC操作主控角色的域控制器一定要是Windows Server 2008,这样才可以识别新的RODC所使用的特殊的Kerberos 票据授权票 (KRBTGT)账户。
l 与其它域控制器一起部署。您可以在没有任何域控制器的站点部署RODC。但是您也可以在拥有以下域控制器的站点部署RODC:
n 来自于同一域或者不同域的Windows Server 2003域控制器
n 来自于同一域或者不同域的Windows Server 2008域控制器
n 来自不同域的RODC(注:不可以有来自于同一域的RODC)
l 降低中央站点域控制器的负载。在安装RODC时您可以指定RODC和位于中央站点的特定的桥头服务器进行单向复制,这样降低了网络流量和用于复制的服务器资源使用。
l RODC做GC(全局编录)。您可以将RODC设置为GC,但是不能使RODC持有操作主控角色。
三、实现RODC的需求
l 森林的功能级别需要为Windows Server 2003或以上。这样一个可以支持LVR复制以减少更新的丢失。LVR复制使得可以复制特定的值而不是复制包含一组值得属性。第二个可以支持强制委派(constrained delegation)。在RODC的场景中,有一个特殊的Kerberos 票据授权票 (KRBTGT)账户用于验证可读写DC和RODC之间的连接。该帐户在RODC上就拥有强制委派权限。
l 至少一台Windows Server 2008的DC。
l 如果只有一台Windows Server 2008 DC,此DC应该为PDC角色。
l 应该在同一域中实现多台Windows Server 2008 DC,来实现RODC复制的负载平衡。
l 一个域,一个站点只能拥有一台RODC。
四、密码复制策略
前面有提到RODC支持凭据缓存,但是RODC在发送凭据缓存请求到可读写DC时,可读写DC是通过密码复制策略来决定账户的密码是否可以被RODC缓存。
您可以有以下几种选择。
n 不缓存账户。这个是默认设置。
n 优点:
n 最高的安全性
n 快速的策略处理
n 缺点:
n 任何人都不可以离线访问
n 在另外一个站点一定要有一台可读写DC用于登陆
n 缓存大部分账户
n 优点:
n 很容易进行密码管理。我们只需要关注在管理RODC的安全而不是密码的安全。
n 缺点:
n 对于RODC来说,缓存的大部分的密码将是潜在的安全威胁。
n 缓存少数特定的分支机构账户
n 优点:
n 保护了密码安全
n 实现了用户离线访问
n 缺点:
n 您需要把每个计算机账户和用户账户映射到每个分支机构,在RODC的属性中可以查看哪些账户通过RODC进行身份验证,以此来决定有哪些账户是需要为该分支机构的,需要进行缓存。这是一个需要管理员交互式操作的过程,所以带来一定的管理成本增加。
五、实现RODC。
下面我们来看一下实验过程。
首先我们在Sea-DC1(此计算机为一台Windows Server 2008的域控制器)上进行RODC安装的活动目录准备工作。插入Windows Server 2008的安装光盘。进入\Sources\adprep目录,执行命令adprep /rodcprep,如下图(1)、(2)所示。

图(1)

图(2)
注:此命令将更新森林中所有DNS应用程序目录分区的权限。另外活动目录服务可以在那些同时是DNS服务器的RODC上成功进行复制。
接下来我将把一台计算机名称为Sea-Svr1(此计算机为一台加入域的成员服务器)的计算机安装为只读的域控制器(RODC)。在Sea-Svr1上打开Server Manager,如下图(3)所示。

图(3)
点击Roles,选择Add Role,出现如下图(4)所示的向导,选择Active Directory Domain Services,,点击Next。

图(4)
等待一段时间,Active Directory Domain Services安装完成了。如图(5)所示。

图(5)
通过提示可以看到,它告诉我们需要完成安装,还需要继续运行Active Directory Domain Service Installation Wizard。那下面我们就运行它,展开Roles,选择Active Directory Domain Service,在详细窗格中点击Run the Active Directory Domain Service Installation Wizard(dcpromo.exe)。如图(6)所示。

图(6)
此时将会运行Active Directory Domain Service Installation Wizard。如下图(7)所示。

图(7)
注意,要想安装RODC的话,需要选择Use Advanced mode installation。如上图(7)所示。
点击Next,选择Existing Forest。如下图(8)所示。

图(8)
点击Next,输入域名contoso.com,并指定执行安装的账户为contoso\administrator,如下图(9)所示。

图(9)
点击Next,选择域contoso.com,如下图(10)所示。

图(10)
点击Next,选择站点Default-First-Site-Name,如下图(11)所示。

图(11)
点击Next,在此处是关键设置,我们需要选择Read-only Domain Controller(RODC),我同时还指定它为DNS Server。如下图(12)所示。

图(12)
点击Next,在此将会指定密码复制策略来设置那些账户的密码是允许被此RODC缓存的。其中Settings下设置为Allow将会缓存。如下图(13)所示。

图(13)
因为在安装好RODC之后是可以重新修改密码复制策略的,因此我们在这里不作任何修改,直接点击Next,将出现如下图(14)所示的画面。

图(14)
在图(14)中我们指定一个普通的域用户Alice Mutten为Sea-svr1这台RODC的本地管理员。其实在这里也体现了管理角色分离的思想。以后Alice Mutten可以管理和维护这台RODC,但是在域中只有普通用户的权限,当然更加不能管理其他可读写的DC,所以提高了域的安全性。
点击Next,将出现Install from media窗口,我们可以选择从网络复制数据,也可以选择从媒介读取数据。在这里我选择了默认设置,也就是从网络复制数据,如下图(15)所示。

图(15)
点击Next,指定那一台源域控制器将作为安装时复制数据的复制伙伴,通常我们可以指定中央站点的可读写的Windows Server 2008的桥头服务器。在这里,我指定Sea-DC1。如下图(16)所示。

图(16)
后面的步骤非常简单,我就不在一一解释了。如下图(17)~图(19)所示。

图(17)

图(18)

图(19)
完成安装以后,重新启动Sea-svr1这台计算机并用contoso\administrator进行登录。打开Active Directory Users and Computers,展开Computers容器,发现Sea-Svr1显示为一台RODC。如下图(20)所示。

图(20)
选择contoso.com,右击选择Change Domain Controller,选择Sea-svr1.contoso.com。这样我们就连接到了Sea-svr1这台RODC上了。如下图(21)所示。

图(21)
然后尝试在组织单位Sales下右击,可以发现根本没有新建对象的选择。如下图(22)所示。

图(22)
重新选择contoso.com,右击选择Change Domain Controller,选择Sea-DC1.contoso.com。创建用于后面密码复制策略和管理角色分离实验中用到的全局安全组Sales Admins。如下图(23)、(24)所示。

图(23)

图(24)
将Alice Mutten用户账户从Users容器移动回组织单位Sales并添加作为Sales Admins组的成员。如下图(25)、(26)所示。
图(25)

图(26)
下面我们将配置密码复制策略。点击Domain Controllers组织单位,打开Sea-svr1计算机账户的属性,如下图(27)所示。

图(27)
点击Password Replication Policy选项卡。如下图(28)所示。

图(28)
从图(28)中点击Advanced,将打开图(29)所示的画面。

图(29)
从图(29)可以看出,除了RODC自身的计算机账户和Kerberos 票据授权票 (KRBTGT)账户之外,确实默认情况下没有缓存任何账户的密码。
更改选项,选择Accounts that have been authenticated to this Read-Only Domain Controller,可以看出它把曾经找RODC进行身份验证的用户Administrator列出来了(通过这个列表其实可以帮助您来确定哪些账户的密码应该允许此RODC进行缓存)。如下图(30)所示。

图(30)
点击Close,添加Sales Admins组,设置为Allow。这样Sales Admins组的成员的密码将可以被Sea-svr1这台RODC缓存。设置步骤如下图(31)、(32)所示。

图(31)

图(32)
再次点击Advanced,选择Resultant Policy选项卡。添加Alice Mutten 和 Bob Smith两个账户,可以发现ADDS将自动检查这两个账户的密码复制策略设置是什么。如下图(33)所示。
图(33)
在Sea-svr1这台RODC上点击注销,重新以Alice mutten进行登陆。如下图(34)所示。

图(34)
使用whoami命令查看Alice Mutten的令牌中组的成员信息。如下图(35)所示。

图(35)
从图中可以看出Alice Mutten是Sea-svr1这台RODC的本地管理员的成员。其实这是我们在安装Sea-svr1这台RODC的时候指定的设置。
从Sea-DC1上打开Active Directory Users and Computers,打开Sea-svr1的属性,选择Password Replication Policy,点击Advanced。可以看到Alice Mutten的密码已经被Sea-svr1缓存了下来。如下图(36)所示。

图(36)
更改选项,选择Accounts that have been authenticated to this Read-Only Domain Controller,可以看出它列出了Administrator和Alice Mutten。如下图(37)所示。

图(37)
其实您也可以在用户没有找RODC进行身份验证的时候手动的把账户的密码复制到RODC上,当然该账户依然要满足密码复制策略的设置。否则手动复制是不能进行的。
下面我把Bob Smith账户也加入Sales Admins 组,如下图(38)所示。

图(38)
打开Sea-svr1的属性,选择Password Replication Policy,点击Advanced。点击Prepopulate Passwords。如下图(39)所示。

图(39)
添加Bob Smith,如下图(40)所示。

图(40)
在这里,请注意一下,如果您希望在没有可读写DC可用的情况下,用户依然可以通过RODC登陆,则用户账户的密码和用户登陆的计算机账户的密码都必须存储在RODC上。也就是说您除了要添加Bob Smith,最好同时要添加Bob Smith所使用的计算机账户。
添加完以后,可以看到Bob Smith的密码也已经被缓存了。如图(41)所示。

图(41)
如果Sea-Svr1因为分支机构的安全问题丢失了或者被偷了。你可以在任何可读写的DC上删除此RODC的计算机账户,在删除计算机账户的时候,您可以重设所有被RODC缓存的账户的密码。如下图(42)~(44)所示。

图(42)

图(43)

图(44)
从图(44)可以看出,如果您重设了所有被缓存的用户账户密码,那这些用户将需要联系Helpdesk来获得新密码,如果重设了所有被缓存的计算机账户的密码,那么这些计算机需要重新加入域。另外我们也可以把被缓存的账户的列表导出来获知在此RODC上具体有哪些账户被缓存了。
最后我们来看一下管理角色分离这一特性。
回到Sea-svr1这台RODC上,之前我们是以Alice Muten用户登录此计算机的,该用户是此计算机的本地管理员组的成员。打开run,输入cmd,输入命令dsmgmt.exe。如下图(45)所示。

图(45)
从图中可以看出有一个权限提升的提示,这其实就是和Windows Vista一样的UAC(用户账户控制)功能。在打开的窗口依次输入local roles,list roles,如下图(46)所示。

图(46)
我们把Sales Admins全局安全组加入Sea-svr1这台RODC的本地Account Operators(账户操作员)组中。如下图(47)所示。

图(47)
将Sea-svr1注销,用Bob Smith登陆,使用Whoami命令查看令牌中组成员资格信息,可以看到Bob Smith已经属于Account Operators组了。如下图(48)所示。

图(48)
作者按:本文到此就结束了,请关注《第四篇:Windows Server 2008 活动目录备份及还原》。在下一篇中我将讲解Windows Server 2008 活动目录的备份及还原。
今天我拼了,连发三篇。