[原创]ADMT2.0迁移案例+SIDHistory验证(第二版)-转自Winmag 作者:江小帅

[原创]ADMT2.0迁移案例+SIDHistory验证(第二版)
转自:Winmag.com.cn 作者:江小帅
http://desperado.blogdriver.com/


仅以此篇文档献给本人(江小帅)的女朋友,因为她的存在《ADMT迁移案例+SIDHistory验证第二版》才推迟了1个多星期。她在正常作息时间上对小帅的苛刻要求才真正是这篇文档发布的绊脚石。正是在她“坚决按时吃饭、绝对保证睡眠、全身心投入逛街”的人生信条压迫下,小帅才得以利用雷锋叔叔的精神勉强支撑着写完ADMT迁移的第一个版本~~~~~~~~~“忠”心说一句:为了小帅的健康!您老辛苦了!!


一、实验环境配置:
小帅的主机为XP+sp1系统,安装了Vmware4.0并设置4台虚拟机构成实验环境,(如图ADMT00)



2个森林:2003domain.com(目标:2003域模式)2000domain.com(源:2000本机模式/混合模式)
4台计算机:dc01.2003domain.com(2003、DC、GC、DNS)、xpsp1.2003domain.com(XPSP1)、dc02.2000domain.com(2000Server、DC、GC、DNS)、pc02.2000domain.com(2000Server)
IP依次设置:   10.0.0.1    10.0.0.2   10.0.0.3   10.0.0.4
域管理员:administrator@2003domain.com 密码:P@ssw0rd
                 administrator@2000domain.com 密码:jzlld
注:确保两个域时钟一致(使用虚拟机完成域实验这点特别重要)
----------------------------------------------
二、域背景设置:
目标域:2003domain.com背景:
1、在2003domain.com域建立一个组织单元:Destination
2、在Destination内建立用户:
帐户:Alx.Rose 登录名:Alx@2003domain.com 密码:P@ssw0rd
源域:2000domain.com背景:
1、在2000domain.com域内建立一个组织单元:source
2、在Source内建立用户:
帐户:Kurt.Cobain 登录名Kurt@2000domain.com 密码:jzlld (不符合目标域密码复杂度要求);
帐户:Courtney.Love 登录名Courtney@2000domain.com 密码:P@ssw0rd (符合目标域密码复杂度要求);
3、将Courtney Love设置为Kurt Cobain的经理;
4、在Source内建立全局组G2000,将Kurt@2000domain.com和Courtney@2000domain.com两个用户加入到该全局组G2000;
5、在pc02.2000domain.com计算机上建立共享文件夹A1并在其中建立A1.txt,赋予G2000组“Full Controll”权限(共享、安全权限都这么设置);
6、在pc02.2000domain.com计算机上建立共享文件夹A2并在其中建立A2.txt,赋予Kurt@2000domain.com和Courtney@2000domain.com“Full Controll”权限(共享、安全权限都这么设置);
注:5、6两步的设置是为了验证SIDHistory是否有效
----------------------------------------------
三、条件准备部分:
1、将2003domain域提升为2003域模式(SIDHistory要求目标域模式必须为2000本机模式或更高版本);
2、设置DNS:将两个域的DNS服务器互相设置转发(2003域可以设置条件转发);
3、使用netdom建立信任关系(完成这个部分的操作有很多种操作方式,可以利用ADMT的信任关系向导、ADDT、netdom等),在dc01.2003domain.com上以
administrator@2003domain.com登录,安装2003光盘上support tools,运行netdom命令建立双向信任(如图ADMT01)



并利用各自域的ADDT确认设置;
注:具体参数请查看帮助,但要注意一定使用/enablesidhistory参数;
    注意命令成功后的提示信息(小帅使用红色框来注明),该信息对后面的SIDHistory的验证帮助太大了!
4、分别把Domain Admins组加入彼此的Administrator本地组中(如图ADMT02、ADMT03);





5、在2000domain.com域和2003domain.com域各自的“域控制器策略”--“审核策略”--“审核帐户管理”中设置审核“成功、失败”,如果这步没做的话ADMT向导也会帮助你完成设置;
6、在目标域2003domain.com启用匿名访问(域控制器策略中-安全设置-本地策略-安全选项-“网络访问:让everyone组的权利应用到匿名用户”),然后使用命令“gpupdate.exe /tatget:computer /force”刷新计算机策略设置;
7、在目标域2003domain.com中把Everyone组放入“Pre-Windows 2000Compatible Access"组(使用命令net localgroup "pre-windows 2000 compatible access" everyone /add);
8、在目标域dc01.2003domain.com上安装ADMT2.0到C:/ADMT2.0目录下(小帅也将其添加到管理员桌面上的2003domain.msc中,该MMC中还包含ADUC和DNS);
9、如果希望将源域2000domain.com的用户迁移至目标域2003domain.com的同时用户的密码也一同迁移,需要在目标域2003domain.com上创建一个密码密钥文件,该密码密钥文件的作用是当你使用ADMT2.0(ADMT1.0不可以)来迁移密码的时候,源域2000domain.com用它来加密用户的密码并传递到目标域2003domain.com(如图ADMT04),



具体参数大家可以查看帮助。
10、将该EXWLGODY.pes文件(该文件名为随机的)通过文件共享等方式转移到源域中的dc02.2000domain.com上,小帅把它放在C盘根目录下;
11、在源域2000domain.com中安装密码迁移DLL。在dc02.2000domain.com虚拟机上的CD-ROM中放入2003光盘。在/I386/ADMT/PWDMIG中运行一个文件名为PWMIG.EXE的程序启动密码迁移DLL安装向导,注意定位到在10步中的C:/EXWLGODY.pes(如图ADMT05)。



完成操作之后需要重新启动计算机;
12、修改源域dc02.2000domain.com中本地安全机构的注册表
HKLM/System/CurrentControllSet/Control/LSA下面有一个名字为AllowPasswordExport的记录项,把这个值由0改成1。并创建以个新的REG_DWORD值项(双字节值),名为TcpipClientSupport,把这个值也设为1(以上两值如果没有建立,第一次迁移向导会做出提示,并帮助你建立,因为迁移SID历史需要以上设置)。设置好后仍然需要重新启动计算机。
经过以上的准备工作迁移的条件设置基本完成。这里的抓图不如小帅写《ADMT迁移案例第一版》中的多了,希望大家多多参考ADMT帮助。
----------------------------------------------
四、迁移全局组部分:
先迁移2000domain.com域中的全局组G2000到2003domain.com域:
注:肯定有人会问为什么要先迁移全局组?先迁移帐户不行吗?全局组中的成员只能是来自其各自域中的用户。因此,当将用户帐户从一个域迁移到其他域时,通过 Active Directory 迁移工具在目标域中创建的新帐户不能是源域中全局组的成员。当迁移全局组时,组从属关系将被还原。然而,如果在迁移全局组之前迁移用户,那么该用户将可能通过迁移帐户登陆到目标域,而该迁移用户帐户不具备任何组从属关系。因此在该环境中,要确保顺利迁移,应在迁移Kurt和Courtney两个用户之前迁移全局组GJZLLD。以下只对关键设置做图列分析
1、使用administrator@2003domain.com在dc01.2003domain.com上登录并运行ADMT;
2、开启“组帐户迁移向导”,“下一步”;
3、“现在迁移”(如果在实际环境中推荐大家一定要选“测试迁移设置,然后再迁移”),“下一步”;
4、选中源域为2000domain目标域为2003domain,“下一步”;
5、添加要迁移的全局组G2000,“下一步”;
6、在目标OU栏中定位到2003domain.com域中的destination组织单元中,“下一步”;
7、一定要选中“将组SID迁移到目标域”复选框以保证该G2000组的SID被迁移到2003domain.com域(如图AGMTG01的红色标识区域),



其他复选框不用我多说了应该很好理解,“下一步”;
8、弹出对话框(如图ADMTG02),



这个2000domain$$$的本地组需要在2000domain.com域中建立。当然如果在“三、条件准备部分”自己手工建立,该对话框不会出现。一定要选“是”;
9、在“从迁移中排除具体对象的属性”中定义你所需要在迁移时排除的属性,小帅我什么都不定义,“下一步”;
10、输入在源域2000domain.com中有权利完成此操作的用户帐户密码,帐户:administrator密码:jzlld,“下一步”;
11、在“命名冲突”中设置必要设置,小帅使用默认设置,“下一步”;
12、“完成”组帐户迁移向导,查看日志信息(如图ADMTG03);



---------------------------------------------
五、验证SIDHistory的有效性#%&*@#$%^^
方法一、在2000domain.com和2003domain.com两个域的DC上分别安装ADSI工具并将其添加到各自administrator的桌面上的2000domain.msc和2003domain.msc中,然后比较2000domain/G2000的objectSID属性值与2003domain/G2000的SIDhistory属性值是一致的(如图ADMTG04、ADMTG5)。





证明SIDHistory确实被迁移到目标域了。
注:2003ADSI可以使用16进制hexadecimal、8进制octal、10进制decimal、2进制binary来显示SID信息,而2000只使用16进制hexadecimal显示SID信息,以上两图使用的是16进制hexadecimal进行的比较。
方法二、将Alx@2003domain.com加入到2003domain.com/G2000全局组中(如图ADMTG06),



然后使用该帐户在xpsp1.2003domain.com上登录并测试是否能够连接到//pc02.2000domain.com/A1的共享,因为Alx@2003domain.com是2003domain/G2000组的成员,该组具有SIDHistory,并且该SIDHistory的值与2000domain/G2000的SID是一致的。但结果却出现"拒绝访问"的提示(如图ADMTG07)。



使用Alx@2003domain.com直接在pc02.2000domain.com登录“拒绝访问”依旧(在“域背景设置”中的5、6步小帅的操作肯定没有问题)。为什么呢???
解决该问题的过程:
小帅使用了WhoamI.exe工具(2000 Resource Kits)在登录的计算机上测试,该工具可以查看一个用户登录之后封装在登录令牌中SIDs。以下是Alx@2003domain.com在
xpsp1.2003domain.com和pc02.2000domain.com登录之后的令牌封装SIDs比较(感谢WINMAG论坛的archangel兄弟,没他的提示我根本就没注意Whoami有/all参数):
------------------------------------------
Alx@2003domain.com在xpsp1.2003domain.com登录之后的令牌封装:
C:/>whoami.exe /all
[User]     = "2003DOMAIN/Alx"  S-1-5-21-447874980-3871260856-2932105411-1107
[Group  1] = "2003DOMAIN/Domain Users"  S-1-5-21-447874980-3871260856-2932105411
-513
[Group  2] = "Everyone"  S-1-1-0
[Group  3] = "BUILTIN/Users"  S-1-5-32-545
[Group  4] = "2003DOMAIN/G2000"  S-1-5-21-447874980-3871260856-2932105411-1109
[Group  5] = "2003DOMAIN/G2000"  S-1-5-21-861567501-838170752-839522115-1107(这个是SIDHistory)
[Group  6] = "LOCAL"  S-1-2-0
[Group  7] = "NT AUTHORITY/INTERACTIVE"  S-1-5-4
[Group  8] = "NT AUTHORITY/Authenticated Users"  S-1-5-11

(X) SeChangeNotifyPrivilege         =
(O) SeShutdownPrivilege             =
(X) SeUndockPrivilege               =
-----------------------------------------------
Alx@2003domain.com在pc02.2000domain.com登录之后的令牌封装:
C:/>whoami.exe /all
[User]     = "2003DOMAIN/Alx"  S-1-5-21-447874980-3871260856-2932105411-1107
[Group  1] = "2003DOMAIN/Domain Users"  S-1-5-21-447874980-3871260856-2932105411
-513
[Group  2] = "Everyone"  S-1-1-0
[Group  3] = "BUILTIN/Users"  S-1-5-32-545
[Group  4] = "NT AUTHORITY/INTERACTIVE"  S-1-5-4
[Group  5] = "NT AUTHORITY/Authenticated Users"  S-1-5-11
[Group  6] = "LOCAL"  S-1-2-0
[Group  7] = "2003DOMAIN/G2000"  S-1-5-21-447874980-3871260856-2932105411-1109

(X) SeChangeNotifyPrivilege =
(X) SeUndockPrivilege =
-----------------------------------------------
结论:
Alx@2003domain.com在xpsp1.2003domain.com登录的时候令牌中封装了G2000的SIDHistory了,可还是不能访问(如图ADMTG07),而当Alx@2003domain.com在pc02.2000domain.com上登录的时候令牌里却根本没有封装G2000的SIDHistory郁闷了好几天,翻阅了微软的KB还有一些相关的ADMT技术文档,最后知道原来原因是:FilterSIDs的禁用与否!!!这也就是小帅为什么要在“条件准备部分-3”中强调了命令运行完的提示信息的重要性并用红色框体标识。以下给出一些FilterSIDs的相关帮助信息(太多了,小帅只摘录重要部分):
----------------------------------------
《Microsoft KB322970》部分摘录:
Additional sIDHistory Information
The sIDHistory is a multivalued attribute of security principals in the Active 
Directory that may hold up to 850 values. To provide backward-compatibility with 
domain controllers that are running earlier versions of Windows, the sIDHistory attribute is only available in domains that are operating at the functional 
level of Windows 2000 Native mode or later.
Some third-party vendor products make it possible to turn on sIDHistory in mixed mode domains. These claims do not represent the legitimate use of public 
APIs. Domain administrators that use such tools risk putting their Active 
Directory deployment in an unsupported state.
During intra-forest migrations, LDAP_Rename is responsible for moving objects. Because of this, migrated objects retain important identification data, 
including the objectGUID and password. This is not the case for inter-forest migrations, which call DSAddSidHistory to populate the attribute in the target domain. Password migration may be turned on for inter-forest cloning, but the 
objectGUID is always lost during this type of migration.

In both cases, migrated objects are assigned a new sID by the target domain. The original sID is added to the sIDHistory attribute of the migrated object in the new domain. After this occurs, the sIDHistory attribute may not be modified or deleted by using the standard Active Directory administration tools. This is not permitted because the sIDHistory attribute is owned by the SAM. It is possible to clear the sIDHistory by using a script or a non-public Microsoft internal 
tool. 

Note that the sIDHistory is a transitional tool and is not meant to exist 
indefinitely attached to security principals. Although migrating the sIDHistory can significantly ease and simplify the domain migration process, there are important security ramifications that must be considered before you implement the sIDHistory in a production enterprise. 

A Windows 2000 security token can hold a maximum of 1,023 sIDs, including sIDHistory and group sIDs. Kerberos is also limited because Windows 2000 
Kerberos has a 73-sID buffer. After you apply Windows 2000 Service Pack 2 (SP2), this size can be doubled by an enterprise-wide registry change. 
----------------------------------------------------------------
《SIDHistory白皮书》一文部分摘录:
Configure SID Filtering
The administrator of the trusting domain applies SID filtering to filter out 
migrated SIDs stored in SIDHistory from specific domains. For example, where an 
external trust relationship exists so that the noam domain trusts the acquired domain, an administrator of the noam domain can apply SID filtering to the 
acquired domain, which allows all SIDs with a domain SID from the acquired domain to pass, but all other SIDs (such as those from migrated SIDs stored in SIDHistory) to be discarded.Requirements
? Credentials: Domain Admins of trusting domain.
? Tool: Netdom.exe (Support tools)
------------------------------------------------------------- 
《Windows 2003 Active Directory新增特性》一文部分摘录:
为了防止特权提升攻击,Windows Server 2003将过滤SID以确保它们与受信任的森林中的某个域相关。这样还确保了其他森林仅颁发预定的域的授权信息,而不会传入任何未经授权的SID。 SID过滤通过“森林信任”自动启用。在Windows 2000 SP4中,SID过滤对外部信任关系也是默认启用的。如果您混合安装了早于Windows 2000 SP4 DC的版本和更高版本,那将很有趣;因为结果将取决于您使用哪个DC来创建信任。
重要提示:如果将用户迁移到一个使用SID History的受信任的域,您必须手动禁用SID过滤。
-------------------------------------------------------------
怪不得所有的微软的ADMT迁移案例包括Winmag杂志2004年第2期中〈活动目录迁移工具-ADMT2.0〉一文统统都是从NT4.0ADMT到2003。NT4.0域默认根本不做FilterSIDs的操作。当然没必要验证了。:)

netdom到目前为止有3个版本(2000/XP/2003)应该使用哪一个呢?小帅分别尝试了,在2000/2003的support中的netdom根本没有/FilterSIDs参数(为什么我也不知道,我的XP虚拟机是SP1的),如果硬是使用一定会出现参数错误,应该使用XP的版本,于是在xpsp1.2003domain.com上安装了XP的support工具,使用administrator@2003domain.com在xpsp1.2000domain.com登录运行命令(如图ADMTG08)



然后使用Alx@2003domain.com在xpsp1.2003domain.com(pc02.2000domain.com也可以)上登录,访问//pc02.2000domain.com/A1(如图ADMTG09)。



访问成功并可以完全控制(幽Winmag论坛一默!呵呵)SIDHistory确实在起作用!!!!!!!
---------------------------------------------
六、迁移用户部分:
迁移源域2000domain.com的两个用户帐户Kurt@2000domain.com和Courtney@2000domain.com到目标域2003domain.com/destination组织单元
当利用ADMT迁移用户帐户出现“密码选项”的时候要注意,因为这里要迁移密码了,所以如果选择“复杂密码”或“与用户名相同”,则用户的密码会统一的保存到一个文本文件。因为我们在“条件准备部分9、10”项已经选择了要迁移密码的,所以在这里我们选择最下面的一项“迁移密码”并在“密码迁移源DC”中定位dc02也就是dc02.2000domain.com(如图ADMTU01)。



注意SID历史的选择(如图ADMTU02),



完成操作的日志(如图ADMTU03)。



迁移之后Kurt@2003domain.com的经理也自动更改为Courtney@2003domain.com了(如图ADMTU04)。



七、验证SIDHistory部分:
方法一:使用ADSI比较,这个在上面迁移组的时候有讨论!不复述了;
方法二:让Kurt@2003domain.com在网络上登录,然后访问//pc02.2000domain.com/A2文件夹,因为在“2000domain.com域背景”部分已经设置了A2的共项权限Kurt@2000domain.com和Courtney@2000domain.com“Full Controll”权限(共享、安全权限都这么设置),由于FilterSIDs的禁用,所以SIDHitory可以正常使用。
----------------------------------------
八、迁移计算机帐户部分:
注:在迁移计算机帐户的时候使用administrator@2003domain.com帐户来运行迁移向导往往会在迁移的最后出现错误(如图ADMTC01),



原因是administrator@2000domain.com虽然已经被加入到2000domain/Domain Admins组了,但对2000domain.com域中每台计算机的帐户操作权限不够,所以在最后让目标计算机重新启动的时候出现“拒绝访问,安装代理的时候失败了”的提示(ADMT2.0不用额外在目标计算机上安装代理)。解决办法很简单,让administrator@2000domain.com在dc01.2003domain.com上登录然后运行ADMT2.0来迁移计算机帐户。
1、在“转换对象”的设置步骤中,可以根据需要做适当选择(如图ADMTC02);



2、在“安全性转换选项”中,选择“替换”,也可以根据需要选择“添加”和“删除”;
3、如果在“转换对象”步骤中,选择了“用户权利”并在上一步中选择了“替换”,在这一步中将出现提示(如图ADMTC03);



4、设置“计算机机选项”中目标计算机重新启动的时间,1分钟及命名的一些设置(如图ADMT04);



5、当所有设置完成之后出现代理的安装及运行对话框(如图ADMTC05),



在目标计算机pc02.2000domain.com上出现倒记时提示(如图ADMT06)



6、重新启动之后,以administrator@2003domain.com登录,在计算机属性--网络标识;
7、在c:/B1和c:/B2的权限设置上也有了相应的变化(如图ADMTC07),



这是因为我们在“转换对象”的设置中选择了“文件和文件夹”还有“共享”;
---------------------------------------
九、后续处理部分:
1、断开信任关系,可以使用ADDT或netdom命令:
“netdom trust 2000domain.com /uo:administrator /po:jzlld /d:2003domain.com /ud:administrator /pd:P@ssw0rd /remove /twoway”;
2、卸载dc02.2000domain.com,如果有必要可以重新安装OS,然后再加入到2003domain.com域中,因为源域中的DC是不能够以DC身份迁移目标域的。
十、删除SID历史部分
由于当整个迁移完成之后,迁移过来的对象都被赋予了新的SID,并且源域2000domain.com也已经彻底消失了,SIDHistory已经没有存在的必要。利用一个脚本文件将指定对象的SIDHistory属性值删除。比如Kurt@2003domain.com对象的SIDHistory属性值为Kurt@2000domain.com的objectSID属性值“01 05 00 00 00 00 00 05 15 00 00 00 0D 7A 5A 33 80 78 F5 31 43 17 0A 32 51 04 00 00”(16进制),我们可以利用KB295758中的脚本来删除该SIDHistory属性的值,运行操作如下:
1、将该脚本ClearSidHistory.vbs拷贝到C盘
2、运行命令(如图ADMTS01)



3、然后再利用ADSI查看一下对象Kurt@2003domain.com的属性SIDHistory的值为“Not Set”(如图ADMTS02)



4、利用此脚本将所有SIDHistory删除
------------------------------------------
完(没待续)!!!(转载请注明作者及出处)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值