這篇是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