计算机帐户SID重复的谣传

这篇是Mark刚写的文档,原文为 http://blogs.technet.com/markrussinovich/archive/2009/11/03/3291024.aspx
主要就是告知你们其实重复的计算机帐户SID不管是在域内或者是在工做组状态下并不会形成什么问题。你们这些年来一直用到的newsid其实没什么做用的。
为了方便你们,同时也提高俺的翻译能力,对此文进行了翻译。没兴趣的人请看英文版。
---不华丽的开始线---
2009-11-03,sysinternals去除了newsid工具。该工具能够用来修改计算机的主机SID。1997年,newsid被开发出来, 那时候还叫作ntsid。开发的缘由很简单,当时只有微软的syspre tool能够修改主机SID,但是它去不支持修改已经安装了应用的计算机。主机SID是在Windows安装过程当中建立的惟一标示符。Windows使用 它做为管理员定义的本地帐户和组的SID基础。当用户登陆到系统后,他们将使用帐户和组的SID来进行对象受权(权限检查)。若是2个主机拥有一样的 SID,那么这两个系统上的住哪一个户或组就可能拥有一样的SID。因而就能够推断出同一网络中存在多个拥有相同主机SID的计算机是一个安全威胁,对吧?
之因此考虑隐退NewSID的缘由是:尽管不少人都声称NewSID能够在Vista和windows server2008上运行成功,但Mark并无全面的进行测试,并且有部分人声称用过NewSID后,部分Windows组件运行失败了。因此当 Mark从新审视这些状况后,他决定找找重复的SID会形成什么问题,尽管大部分人都认为确定会出现问题。随着深刻,他愈来愈以为重复的主机SID其实并 不会形成任何问题。带着这个结论,他到Windows security and deployment teams询问,结果没有一个情景能够证实在域或者工做组环境中,2个拥有一样的主机SID的系统并不会形成任何问题。因此隐退NewSID就成为了顺水 推舟的事情了。
不过对于这样的结果,大部分人确定都很惊讶。尤为是修改镜像系统的SID是从Windows NT以来的基本准则。因此下面就来揭露真相。从主机SID的描述,到街市Windows 如何使用SID,以及Windows 历来不会讲本机SID暴露到外部,来证实拥有相同主机SID的系统并不会有什么问题。
SID
Windows使用SID来表示全部的安全对象( security principals)。 安全对象包括主机,域计算机帐户,用户和安全组。名字Name是用来表明SID的一个方法,能够容许用户更名儿无需更新ACL(access control list)。SID是一串数字代码包含了架构版本数字,一个48位的ID权威值,一个32位的子全位置或者RID值。权威值识别颁发出SID的代理,这个 代理通常是windows 本地系统或者域。子权威值识别颁发权威的委派,RID则是Windows用来建立惟一SID用到的一个普通SID。
使用Sysinternals PsGetSid 能够查看主机SID,可下载版本1.43,mark用到的是1.44

版本号是1,权威值是5,后面接着4个子权威值。Windwos NT的设计中,主机SID可能会用来做为网络即是,因此为了保持它的独一性,安装的时候,SID会有一个固定的子权威值21和3个随机生成的子权威值。 因此一般你都会看到S-1-5-21这个固定值。
在用户建立第一个帐户以前,Windows已定义了几个内置的用户和组,包括管理员和Guset帐户。与生成随机sid的方法不一样,windows为了确 保他们的惟一性,直接在主机SID后添加了一个每帐户惟一值,也称之为RID (关联ID)。初始帐户的RID是预设的,好比administrator帐户拥有的RID都是500.

安装完成后,Windows赋予新的本地用户和组的SID将从1000起派发.



除了这些动态建立的SID,windows还定义了一些只用固定SID的帐户。好比everyone组,Local System 帐户


加入域的机器还会有一个基于域SID的计算机域SID。查询域test.com的sid以及2台域内机器的sid

fulltest是手动建立的计算机帐户,而test02则是一台实际的机器,来自于dc的镜像clone。你们能够注意到其实也没什么区别,加域同样成功。因此其实有问题的状态时重复的域SID。

SIDs and Access Control Lists

帐户登陆到Windows系统后,Local Security Authority Subsystem (LSASS -Llsass.exe)会建立一个登录进程以及对应该进程的票据。票据是由windows内核定义的数据架构来表示帐户,期内包含了帐户的SID,,帐 户登陆时所属组的SID,以及赋予该帐户已经相应组的安全权限。当某个登陆进程的最后一个票据删除后,LSASS就会删除该登陆进程,用户就算是 logoff了。
使用Sysinternals LogonSessions 直接运行就能够查看了。

以及查看登陆的票据。

以及查看到相应的权限

当一个程序要打开系统对象,好比文件,注册表时,安全子系统就执行权限检查,对对象ACL中的条目与程序票据中包含的SID进行比对。


远程登陆进程会有相似的检查,好比访问远程计算机的共享。为了成功的链接到一个共享,用户须要使用远端系统知晓的帐户来经过远端系统的验证。也就是说,如 果远端计算机是一台工做组内机器,那么用户输入的凭证就得是远端系统本地的帐户,而对于域内计算机而言,凭证能够是远端系统本地的帐户或者域帐户。当用户 访问共享上的一个文件时,远端系统上的文件服务器驱动就会使用登陆进程中的票据来应对权限检查,这种方法就称之为扮演 impersonation

重复的SID建立一个Windows安装来对一组计算机进行部署受微软支持的方法在一台参考计算机上安装Windows而后使用sysprep工具来进行 克隆前的准备。也就是常说的生成镜像。当用户启动已建立好的镜像后,Sysprep工具在安装过程会建立一个新的主机SID,去除即插即用设备的检测,重 置产品激活时钟,修改其余的配置信息,好比新的计算机名。
可是,一些IT管理员装完Windows系统,安装并配置应用,使用部署工具的时候,并不会去重置那些clone系统的SID(麻烦,并且容易出错)。所 以如今最佳实践就成了适应SID重置工具,好比NEWSID去重置SID。这些工具生成一个新的主机SID,找到系统上全部包含了主机SID副本的位置, 包括文件系统和注册表ACL,而后更新它们到新的SID。微软不支持这种系统修改方法的缘由是,这些工具并不必定彻底知道Windows藏匿主机sid的 全部位置。一个混合了新旧主机SID的系统的安全性和可靠性是没法获得保证的。
因此多个计算机使用同一个主机SID就是问题了么?出现这种问题的惟一办法就是Windows使用了主机SID去与其余计算机比对。好比,当用户链接到远 端主机上时,本地主机SID须要传送到远端主机并在全县检查中使用,这样重复的SID就成为了一个安全问题。由于远端主机没法辨别拥有一样SID的入站远 端帐户和本地帐户(相同的SID包括相同的主机SID和相同的RID)。但是Windows只容许用户在远端计算机上使用只有本地计算机知晓的帐户信息来 作验证。用户必须使用远端主机上的本地帐户或者远端主机信任的域用户来作验证。远端主机从本机的SAM中获取本地帐户的SID,或者从DC的ad信息中获 取域帐户的SID。远端计算机历来就不验证链接计算机的SID。
也就是说,SID并非通往计算机的永恒之门,实际上是帐户的用户名和密码。知道一个远端计算机上的帐户SID并没有法去访问到远端计算机以及其上的资源。还 有一些其余证据,还记得内置的帐户,好比本地系统帐户在全部的计算机上都拥有一样的SID,若是真如上一段的疑问所说,这早就是一个安全问题了。
不过尽管如此仍是有例外的,那就是DC。每一个域都有一个惟一的域SID,这个SID就是第一台域控的主机SID,并且全部的DC主机sid都和域SID相符合。

有时候,其余计算机会验证DC的主机SID。也就是说,域内计算机不能够拥有和dc以及域相同的主机SID。和全部成员计算机同样,每一个DC都有一个域的 计算机帐户,那是他们用来被远端主机验证的ID。域内全部的额帐户包括计算机,用户,安全组,所用到的SID都是基于的域SID,而本地帐户的SID则是 基于的主机SID,这二者并无什么联系。
对于一些关于SID重复的文档,包括 KB article 都警告多个计算机若是使用一样的SID,可移动存储上的资源对于本地帐户来讲并不安全。可是他们忘记提到的一件事,移动存储上的权限毫无安全性可言。由于 用户能够随意在任何计算机上插入他们,并不须要遵循NTFS权限。移动存储倾向于赋予访问权限给已知的SID,好比全部的计算机上都有相同SID的管理员 组。这是物理安全的基本准则,也是Windows 7提倡是用Bitlocker-to-go的缘由。Bitlocker-to-go能够加密移动存储。
最后一个问题,一个分发应用使用主机SID来识别计算机会由于SID重复出问题么?非微软软件使用主机SID来作验证是没法工做的。由于全部的DC拥有有一样的主机SID。基于惟一计算机ID的软件要不是用计算机名要不就是用计算机域SID。

新的最佳实践

因而,SID重复的问题就这样消失了。这又是一个典型的我觉得你觉得他觉得我知道你知道我知道你知道的循环谣传。因此NewSID历来就没有作任何有意义 的事情,也必要再怀念这个工具了。微软官方针对SID重复的策略也将修改。将来Sysprep会升级并跳过SID生成的部分。注意Sysprep重置了那 些若是重复可能致使问题的计算机指定状态, 好比相同SID致使的WSUS报错。因此受微软支持的策略依然会要求镜像系统须要使用Sysprep重置成惟一的。

----终于完成的插花线---
用了3个小时总算翻译完成了,虽然里面可能有一些计算机名称的错误,可是大致意思你们应该能明白了吧。还有就是你们不要仅仅局限在这个问题是否被说清了。你们要有这样的心态就是没有什么东西是永远正确的,跳出某个思惟才能理解 作人要厚道,转贴请注明出自bbs.winos.cn
相关文章
相关标签/搜索