因为某些原因,单位并未做域管理,为了便于维护,最简单的单机维护就是对系统做Ghost镜象了,系统有问题,不到10分钟就恢复完成了。
因有人询问有关域的一些问题,而对域的管理我仅是在校期间做兼职时,对windows server 2000 做过域管理,所以便利用一点空余时在虚拟机上对windows server 2003测试。
利用VMware,很轻松的就虚拟了二个OS,因为之前有做备份,直接复制一份,很快就虚拟为了二个OS,利用向导很轻松的将其中一个升级为域控制器,另一个嘛自然就是客户机了,当用管理员将客户机加入域重启后,问题出现了,无法登陆域,原因是SID重复,当然啦,呵呵,复制粘贴。
SID,安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户具有不同的 SID 号。
SID的作用
用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给 Windows 2000,然后 Windows 2000 检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,Windows 2000将会分配给用户适当的访问权限。
访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。
SID号码的组成
如果存在两个同样SID的用户,这两个帐户将被鉴别为同一个帐户,原理上如果帐户无限制增加的时候,会产生同样的SID,在通常的情况下SID是唯一的,它由计算机名、当前时间、当前用户态线程的CPU耗费时间的总和三个参数决定以保证它的唯一性。
一个完整的SID包括:
• 用户和组的安全描述
• 48-bit的ID authority
• 修订版本
• 可变的验证值Variable sub-authority values
例:S-1-5-21-310440588-250036847-580389505-500
SID的获得
开始-运行-regedt32 HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Builtin/Aliases/Members,找到本地的域的代码,展开后,得到的就是本地帐号的所有SID列表。
其中很多值都是固定的,比如第一个000001F4(16进制),换算成十进制是500,说明是系统建立的内置管理员帐号administrator,000001F5换算成10进制是501,也就是GUEST帐号了,详细的参照后面的列表。
Built-In Users
DOMAINNAME/ADMINISTRATOR
S-1-5-21-917267712-1342860078-1792151419-500 (=0x1F4)
DOMAINNAME/GUEST
S-1-5-21-917267712-1342860078-1792151419-501 (=0x1F5)
Built-In Global Groups
DOMAINNAME/DOMAIN ADMINS
S-1-5-21-917267712-1342860078-1792151419-512 (=0x200)
DOMAINNAME/DOMAIN USERS
S-1-5-21-917267712-1342860078-1792151419-513 (=0x201)
DOMAINNAME/DOMAIN GUESTS
S-1-5-21-917267712-1342860078-1792151419-514 (=0x202)
Built-In Local Groups
BUILTIN/ADMINISTRATORS S-1-5-32-544 (=0x220)
BUILTIN/USERS S-1-5-32-545 (=0x221)
BUILTIN/GUESTS S-1-5-32-546 (=0x222)
BUILTIN/ACCOUNT OPERATORS S-1-5-32-548 (=0x224)
BUILTIN/SERVER OPERATORS S-1-5-32-549 (=0x225)
BUILTIN/PRINT OPERATORS S-1-5-32-550 (=0x226)
BUILTIN/BACKUP OPERATORS S-1-5-32-551 (=0x227)
BUILTIN/REPLICATOR S-1-5-32-552 (=0x228)
Special Groups
/CREATOR OWNER S-1-3-0
/EVERYONE S-1-1-0
NT AUTHORITY/NETWORK S-1-5-2
NT AUTHORITY/INTERACTIVE S-1-5-4
NT AUTHORITY/SYSTEM S-1-5-18
NT AUTHORITY/authenticated users S-1-5-11
这一项默认是system可以完全控制,这也就是为什么要获得这个需要一个System的Cmd的Shell的原因了,当然如果权限足够的话你可以把你要添加的帐号添加进去。
SID重复问题的产生
安装NT/2000系统的时候,产生了一个唯一的SID,但是当你使用类似Ghost的软件克隆机器的时候,就会产生不同的机器使用一个SID的问题。产生了很严重的安全问题。
同样,如果是重复的SID对于对等网来说也会产生很多安全方面的问题。在对等网中帐号的基础是SID加上一个相关的标识符(RID),如果所有的工作站都拥有一样的SID,每个工作站上产生的第一个帐号都是一样的,这样就对用户本身的文件夹和文件的安全产生了隐患。
这个时候某个人在自己的NTFS分区建立了共享,并且设置了自己可以访问,但是实际上另外一台机器的SID号码和这个一样的用户此时也是可以访问这个共享的。
SID重复问题的解决
微软在ResourceKit里面提供了一个工具,叫做SYSPREP,这个可以用在克隆一台工作站以前产生一个新的SID号码。
位置在系统光盘support-tools目录下的Deploy.cab中,直接解压缩就能获得。注意还需要setupcl.exe。
但是这个工具并不是把所有的帐户完全的产生新的SID,而是针对两个主要的帐户Administrator和Guest,其他的帐号仍然使用原有的SID。
运行Sysprep,出现提示窗口,确定以后需要重启,然后安装程序需要重新设置计算机名称、管理员口令等,但是登陆的时候还是需要输入原帐号的口令。
一切都很顺利,Ghost最新的企业版已经自带有SID的修改,单机的,大家还是利用微软的自家工具,先清除本机的SID ,恢复后再利用工具生成新的。