轉自:https://blog.csdn.net/xcntime/article/details/51746148 導讀:對於Windows內置安全主體特別需要註意的是:你無法創建、重命名和刪除它們,並且它們在任何一個Windows系統中都是一樣的。 在上期雜誌的“理解Windows內置安全主體(上 ...
轉自:https://blog.csdn.net/xcntime/article/details/51746148
導讀:對於Windows內置安全主體特別需要註意的是:你無法創建、重命名和刪除它們,並且它們在任何一個Windows系統中都是一樣的。
在上期雜誌的“理解Windows內置安全主體(上)”一文中,我們初步瞭解了Windows內置安全主體(它們是Windows安全子系統中預定義和控制的特殊對象)在管理和維護系統安全方面的強大功能。若仔細閱讀了該文,那麼你應當瞭解安全主體在簡化和控制Windows資源訪問控制上的能力。對於這些Windows內置安全主體特別需要註意的是:你無法創建、重命名和刪除它們,並且它們在任何一個Windows系統中都是一樣的。在本期文章中,我們將深入瞭解每個安全主體,為大家展示Windows是如何使用這些內置安全主體,並同時提供一些有用的使用技巧。
Authenticated Users和Everyone
Authenticated Users內置安全主體包括了所有通過Windows用戶登錄身份驗證的用戶——包括了域和森林中的所有用戶,以及來自其他受信任域森林的用戶。
Everyone內置安全主體可以認為是Authenticated Users的父集,它包括了Authenticated Users和Guest帳戶。成員關係在不同的環境中稍顯複雜。表1中顯示了Authenticated Users和Everyone的詳細成員關係。從表中可以看出對於Windows XP和Windows 2000的Active Directory(AD),Anonymous帳戶預設是Everyone的成員,但不是Authenticated Users的成員。對於Windows Server 2003的AD和Windows XP SP2,Anonymous帳戶預設就不是Everyone的成員,但是你可以通過修改Network Access: Let Everyone permissions apply to anonymous users設置,啟用這個功能。還可以通過修改註冊表HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Control\LSA\EveryoneIncludesAnonymous(REG_DWORD)中,鍵值改為1。無論任何情況下,Anonymous帳戶都不會是Authenticated Users的成員
表1:Authenticated Users和Everyone的成員關係對比 |
||
成員 |
Authenticated Users |
Everyone |
域中所有用戶 |
是 |
是 |
森林中所有用戶 |
是 |
是 |
被信任的域和森林中的所有用戶 |
是 |
是 |
Guest |
否 |
是 |
Anonymous |
是 |
對於Windows XP和Windows 2000 AD,是;對於Windows Server 2003和Windows XP SP2,否。 |
表1:Authenticated Users和Everyone的成員關係對比
System, Local Service和Network Service
在Windows 2000和更早的版本中,Windows的服務和很多第三方應用程式通常都運行在System內置安全主體的安全上下文環境中(有時也被稱為Local System和LSA帳戶)。AD用戶將其歸類為Well-Known-Security-ID-System。System代表了該電腦在網路中的電腦帳戶,網路中顯示為Domain name\ machine name$。本地系統的帳戶名為NT AUTHORITY\System。此帳戶沒有密碼,也不需要系統管理員的管理和干預:它自動使用Windows指派的電腦帳戶憑據。
System安全主體的威力大抵與UNIX系統中的root帳戶類似。當你在System的安全上下文環境中運行服務或者應用程式,那麼該服務或應用程式就具備了在這個Windows系統中無所不能的許可權。例如,假設一個服務使用System安全主體登錄到一臺域控制器,那麼該服務就成為DC上的本地服務。一旦該服務被黑客攻擊利用,那麼惡意用戶就具有了任何修改AD的許可權。所以要特別小心——尤其是遵從最小許可權的原則,儘量避免使用System。
為了遵從最小許可權原則和避免使用System帶來的隱患,Windows Server 2003和Windows XP SP2提供了兩種替代方案:Local Service和Network Service。Local Service提供了一般服務在本地運行所需的最小許可權。智能卡、遠程註冊表和Telnet服務都使用Local Service帳戶。使用Local Service的服務在訪問網路資源時,將預設使用Anonymous憑據。要配置一個服務使用Local Service,打開“服務”控制台,選擇所需服務點擊右鍵,“屬性”在“登錄”對話框中,選擇“此帳戶”並輸入NT AUTHORITY\LocalService。無需為此帳戶設置密碼。
Network Service提供了一般服務在需要訪問網路中其它電腦運行所需的最小許可權。如同運行System下的服務一樣,一個運行在Network Service下的服務在訪問網路資源時,需要使用它們的電腦帳戶憑據。功能變數名稱解析服務(DNS)和遠程過程調用(RPC)服務都預設使用Network Service。要配置一個服務使用Network Service,打開“服務”控制台,選擇所需服務點擊右鍵,“屬性”在“登錄”對話框中,選擇“此帳戶”並輸入NT AUTHORITY\NetworkService。無需為此帳戶設置密碼。
This Organization和Other Organization
Windows Server 2003中新增了This Organization和Other Organization兩個內置安全主體,它們是與一種新的,被稱為selective authentication或者authentication firewall的域森林間信任關係而出現的。Selective authentication允許你定義一個額外的訪問控制層,從而實現跨森林間的資源訪問控制。例如,你可以使用selective authentication限制幾台電腦的登錄,之後在那台電腦上再允許或者拒絕訪問對象。
你可以為域森林信任關係或者外部域森林間信任關係配置selective authentication。你可以為兩個域森林的根域創建信任關係,將其應用到森林之間的資源訪問控制。也可以為兩個域森林中任意兩個域之間創建信任關係,將其應用到森林之間的資源訪問。
通過“AD域和信任關係”控制臺中的“新建信任嚮導”或者信任關係的屬性頁來配置一個森林或者外部信任關係為selective authentication。要配置selective authentication,在信任關係“屬性”對話框的“驗證”中選擇selective authentication。
需要註意,只有當你的Windows Server 2003域運行在純模式狀態,並且森林中的域定義了向外的信任關係之後才能夠選擇設定selective authentication。此外,你也可以為一個Windows NT 4.0域配置selective authentication,用以限制它對另一個Windows Server 2003域中資源的訪問控制。
當一個域森林或者外部信任關係被設置為selective authentication,若有用戶嘗試訪問外部被信任域的資源時(通過跨森林的信任關係),Windows會在該用戶的訪問令牌中加入Other Organization內置安全主體。所有在域森林內跨域訪問資源的用戶,在其訪問令牌中預設都持有The Organization的內置安全主體標識。當有用戶訪問外部被信任域的資源(通過跨森林的信任關係),而此信任關係沒有被配置為selective authentication,那麼Windows則將This Organization安全主體添加到該用戶訪問令牌中。在這種情況下,This Organization的成員就與Authenticated Users的成員一樣了。
若一位用戶的訪問令牌中包括Other Organization內置安全主體,資源伺服器會檢查該用戶的訪問許可權是否在資源伺服器的Allowed-to-Authenticate中被允許。你可以在電腦對象的ACLs中修改Allowed-to-Authenticate許可權。如果該用戶具備Allowed-to-Authenticate中的許可權,那麼跨森林的驗證成功。在驗證階段,資源伺服器將檢測是否為Other Organization賦予了的許可權,並以此決定允許或者拒絕對資源的訪問。
Restricted Code
Windows新增的Restricted Code內置安全主體,在Windows Server 2003中當用戶使用帶Run this program with restricted access選項的RunAs命令和在Windows XP中使用帶Protect my computer and data from unauthorized program activity選項的RunAs命令時,系統將把該安全主體加入到用戶訪問令牌中。RunAs命令為廣大系統管理員提供了非常便利的條件,在普通用戶帳戶的安全上下文中,使用該命令方便的切換至只有系統管理員才有許可權運行的各種管理程式,這樣能夠有效防止惡意程式濫用管理員許可權,而且遵循了最小許可權原則。要瞭解更多關於RunAs命令的信息,請參閱文章“Learn to Be Least”(2005年10月,InstantDoc ID 47622)。
當用戶訪問令牌中包括Restricted Code內置安全主體,Windows會忽略該用戶除了Bypass Traverse Checking之外的所有許可權設置,防止應用程式訪問用戶的配置文件,對註冊表區域HKEY_LOCAL_ MACHINE和HKEY_CURRENT_ USER僅有讀的許可權。
Restricted Code安全主體為遵從最小許可權配置和使用單一用戶名密碼提供了非常便利的條件。要瞭解更多關於RunAs命令的功能以及如何結合使用Restricted Code安全主體的知識,建議閱讀Aaron Margosis的Blog文章“Running Restricted”(http://blogs.msdn.com/aaron_ margosis/archive/2004/09/10/227727.aspx)。
Logon-和Authentication-Type
在Windows Server 2003、Windows XP和Windows 2000的操作系統中,Windows還會根據登錄方式在訪問令牌中加入相應的內置安全主體。其中Logon-Type安全主體包括Batch、Dialup、Interactive、Network、Service和Terminal Server User(Terminal Server User是指所有使用終端服務4.0相容應用程式登錄的用戶)。
Windows Server 2003和Windows XP SP2中還增加了Remote Interactive Logon內置安全主體,它代表所有使用Windows Server 2003或者Windows XP版本的終端服務或者遠程桌面登錄的用戶。要瞭解更多關於登錄類型的信息,請參閱本刊2005年9月刊文章“登錄許可權:Windows訪問控制的核心”。
Windows Server 2003還增加了三個與驗證協議有關的內置安全主體——NTLM Authentication、SChannel Authentication和Digest Authentication。這三個內置安全主體分別對應了用戶在登錄Windows時所採用的身份驗證協議。值得註意的是,微軟沒有為Kerberos和基本身份驗證提供相應的安全主體。
你可以利用登錄和身份驗證類型的內置安全主體,對用戶和資源進行更加細緻的顆粒級訪問控制。這些新的內置安全主體賦予了你根據用戶採用的身份驗證協議(例如:NTLM,Digest,SSL)和登錄類型(例如:通過控制台、使用終端服務等),為不同類型的用戶配置不同級別的訪問許可權。
Self,Creator Owner和Creator Group
在Windows系統中運用了很多層次結構的概念(包括AD,註冊表以及文件系統),並且它們都支持用戶許可權的繼承關係。當你為父對象定義了一種許可權,那麼該許可權將自動應用到父對象中的所有子對象上。實現這種功能的原理就在於:Windows利用了Self、Creator Owner和Creator Group這幾個內置安全主體。
一般而言,當你將這三個內置安全主體加入父對象的ACL中後,其中的子對象將通過以下幾種方式繼承這些安全主體:
對於父對象上Creator Owner安全主體具備的許可權,在新創建的子對象上這些許可權將被自動繼承。例如,AD管理員在一個OU上為Creator Owner設置了Write的許可權,那麼當一個用戶在該OU中創建一個新用戶之後,該用戶對於此新建的對象就天然具備Write的許可權。
Creator Group的功能與Creator Owner十分類似,但並不是在子對象上為Creator Owner添加許可權,而是為Creator Group賦予允許或者拒絕的許可權。
Self作為對象的一個占位符。例如,AD管理員在一個OU上將用戶對象屬性中的postalAddress屬性為Self設置了Write許可權。當你創建一個稱為Jan的用戶之後,用戶Jan對這個postalAddress屬性將具備寫的許可權(也就是說,Jan可以自行更改用戶屬性中postalAddress地址的權力)。註意在其他用戶對象上相同的Self許可權,Jan將無法更改其他用戶的postalAddress屬性,因為Self僅僅針對其自身的用戶帳戶。
預設情況下,Windows為Self賦予組成員關係Read的許可權。這個設置保證了每個組成員都可以查看他們所在的組還有其他成員。由於AD還賦予了Authenticated Users對組成員列表讀的許可權,所以Authenticated Users也可以看到相同的內容。
功能強大但是稍顯複雜
至此,你大概已經瞭解了Windows內置安全主體具備的強大功能,對Windows如何進行訪問控制更加加深了一些理解。看看Windows Server 2003中新增的內置安全主體,以及許可權委派、自我管理的應用越來越普及,可以想象將來的Windows還將添加更多的內置安全主體。