有關(guān)AD的攻擊及預(yù)防措施知識簡介二
繼上文常見AD攻擊及預(yù)防措施詳解一這篇文章之后,我們繼續(xù)介紹AD的攻擊和預(yù)防措施的知識。
攻擊四:基于過度創(chuàng)建AD對象的DoS攻擊
具有管理員權(quán)限的用戶過度創(chuàng)建新的對象會引發(fā)針對AD的拒絕服務(wù)(DoS)攻擊。例如,授權(quán)用戶不斷創(chuàng)建AD對象,直到耗盡域控制器的磁盤空間,會導(dǎo)致AD服務(wù)器崩潰。另一個例子則是授權(quán)用戶用一個命令將幾千個成員添加到一個組中,同樣會導(dǎo)致服務(wù)器崩潰。
攻擊四預(yù)防措施
要預(yù)防這種攻擊,必須對授予AD對象創(chuàng)建權(quán)限的人要特別小心。還可以采用在WindowsServer2003中的AD對象配額這個功能,而Windows2000里的對象配額功能有限。
AD對象配額會限定AD命名關(guān)聯(lián)(NamingContext,NC)或根據(jù)特定安全項建立的目錄分區(qū)中可以擁有的對象數(shù)量。每個ADNC和目錄分區(qū)都可以獨立設(shè)置和管理AD對象配額。不過,在SchemaNC中不能定義AD對象配額。對于每個ADNC和分區(qū),可以定義默認的配額,如果沒有特別定義,則配額沒有限制。
對于安全項擁有的ADtombstone對象,也計入AD對象配額。tombstone對象是AD對象被刪除時創(chuàng)建的臨時對象,用于在AD的域控制器之間保持被刪除對象數(shù)據(jù)的一致性。對于每個NC和分區(qū),可以指定tombstone配額參數(shù),確定tombstone對象在配額中的權(quán)重。例如,為NC或分區(qū)指定tombstone的配額參數(shù)是25,即分區(qū)中一個tombstone對象被計算為一個普通AD對象的0.25。默認的每個分區(qū)中tombstone配額參數(shù)是100,也就是說,一個tombstone對象和一個普通AD對象具有相同的權(quán)重。
對于每個安全項,都可以分配配額,包括用戶、計算機、組和inetOrg-Person。一個安全項可以有多個配額,例如,用戶可以被分配獨立的配額,他所屬的組又具有一個配額,在這種情況下,配額將采用最大的那個設(shè)置。域管理員組和企業(yè)管理員組成員沒有AD對象配額限制。
AD對象配額保存在ADNC或分區(qū)的NTDSQuotas容器中,屬于msDS-QuotaControl類的對象。在Accounting的域NC中設(shè)置用戶Joe的AD對象配額為10,可以使用下列Dsadd命令:
- Dsaddquota
- -partDC=Accounting,DC=COM
- -acctAccounting\Joe
- -qlimit10
- -desc"QuotaforJoe"
設(shè)置Accounting域NC的tombstone配額參數(shù)為25,可以使用下列Dsmod命令:
- Dsmod
- partitionDC=Accounting,DC=COM
- -qtmbstnwt25
將Accounting域NC的默認對象配額設(shè)置為0,可以使用下列Dsmod命令:
- Dsmod
- partitionDC=Accounting,DC=COM
- -qdefault0
只有運行WindowsServer2003的域控制器可以強制配額,只能在發(fā)起目錄操作時強制配額,而不能用于復(fù)制操作中。要想在AD域目錄分區(qū)有效使用AD對象配額,域中所有的域控制器必須運行WindowsServer2003。而在AD配置分區(qū)使用AD對象配額,則森林中的所有域控制器都必須運行WindowsServer2003(例如,所有域和森林必須運行WindowsServer2003功能level2)。
AD對象配額功能本身和任何指定的功能級別并沒有關(guān)系——在任何WindowsServer2003域控制器上都可以使用。如果定義了配額的WindowsServer2003域中有Windows2000域控制器,用戶可以繼續(xù)連接這些域控制器,同時受到配額的限制。
與WindowsServer2003AD的配額系統(tǒng)相比,Windows2000的配額功能十分有限。在Windows2000中,管理員可以限制某個用戶帳號創(chuàng)建計算機帳號的數(shù)量,必須使用AD域?qū)ο笾械膍s-DS-MachineAccountQuota屬性,這個限制并不適用于域管理員組和帳號操作員組的成員。WindowsServer2003支持ms-DS-MachineAccountQuota屬性(默認值為10)。如果想禁止添加計算機帳號,可以將該屬性值設(shè)置為0。
對于認證用戶組來說,在用戶權(quán)限中刪除“向域中添加工作站”也可以達到同樣的目的。在WindowsServer2003和Windows2000中,認證用戶組默認具有該權(quán)限。
攻擊五:基于MaxTokenSize屬性的DoS攻擊
微軟擴展了基本的Kerberos協(xié)議,利用Kerberos認證ticket包含認證數(shù)據(jù)。WindowsKerberosticket和TicketGrantingTicket(TGT)都包含一個特殊的區(qū)域,稱之為權(quán)限屬性驗證(PrivilegeAttributeCertificate,PAC),可以利用Kerberos協(xié)議傳輸認證數(shù)據(jù),如在Kerberos認證ticket中的用戶組成員和用戶權(quán)限。
Kerberosticket具有固定的大小,間接限制了PAC的大小。如果用戶屬于很多的組(比如100個或更多),他的ticket大小可能會超出限制,Windows認證和組策略處理就會失敗。因此具有AD創(chuàng)建和修改組權(quán)限的用戶可以利用這個漏洞針對管理員帳號發(fā)起拒絕服務(wù)攻擊(DoS),這種攻擊將導(dǎo)致管理員帳號無法登錄網(wǎng)絡(luò)。
攻擊五預(yù)防措施
為了預(yù)防這種攻擊,必須相當(dāng)仔細地為組管理委派AD管理權(quán)限,還必須限制管理管理員帳號組成員的權(quán)限。因為在森林中,管理員可以管理本地和全局組,添加任何用戶帳號并不需要特殊的權(quán)限,所以在AD中限制默認權(quán)限很困難。因此,必須將企業(yè)管理員組或域管理員組的帳號放置在一個特殊的組織單元(OU)中,不給被委派的管理員讀取的權(quán)限。
此外,可以設(shè)置注冊表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\
MaxTokenSize的值增加Kerberosticket的最大尺寸,
可以參考微軟知識庫文章“解決用戶屬于多個組出現(xiàn)問題的新方法”(http://support.microsoft.com/kb/327825)。
對于用戶使用Kerberos登錄域的所有Windows系統(tǒng),都需要修改MaxTokenSize(REG_DWORD)的值。在Windows2000中,MaxTokenSize的默認值是8000字節(jié);在Windows2000SP2和后續(xù)版本以及WindowsServer2003中,MaxTokenSize的默認值為12000字節(jié)。
為了減少PAC的大小,微軟在Window2000SP4中還采用了新的方法在PAC中存儲認證數(shù)據(jù)。新的PAC認證數(shù)據(jù)存儲方法如下:
如果是本地組或來自其它域,組的全部SID(例如S-1-5-21-1275210071-789336058-1957994488-3140)將保存在PAC中。
如果用戶所屬的全局組在用戶所屬的域的本地,則只存儲組的相對識別號(RelativeIdentifier,RID)。
微軟在Windows認證過程中采用特殊的處理過程,在客戶端和服務(wù)器端將RID重新分解成SID格式。需要注意的是,即使采用新的PAC認證數(shù)據(jù)存儲方法,仍然需要修改MaxTokenSize或減少用戶所屬組的數(shù)量。
為了避免Kerberostiket的PAC域的空間浪費,從WindowsNT4.0域遷移到WindowsServer2003域或Windows2000域時,應(yīng)該刪除AD帳號的SIDHistory屬性,可以參見微軟知識庫文章“如何使用VisualBasic腳本清除SidHistory”(http://support.microsoft.com/kb/295758)。
微軟發(fā)布了Tokensz工具,用于解決Kerberos令牌大小相關(guān)的問題,該工具可以從http://www.microsoft.com/downloads/details.aspx?familyid=4a303fa5-cf20-43fb-9483-0f0b0dae265c&displaylang=en下載。下列Tokensz命令列出了當(dāng)前系統(tǒng)的MaxTokenSize值和當(dāng)前的令牌大?。?/p>
- tokensz/compute_tokensize
- /package:negotiate
- /use_delegation
- /target_server:
關(guān)于如何使用Tokensz,可以參見微軟的白皮書“解決Kerberos錯誤”(http://www.microsoft.com/downloads/details.aspx?familyid=7dfeb015-6043-47db-8238-dc7af89c93f1&displaylang=en)。
全方位較量
本文提到的這些攻擊手段說明了采用多種措施保護AD架構(gòu)的重要性。除了技術(shù)上的安全措施,還必須考慮物理上和組織上的安全措施。物理上的安全措施包括對Windows域控制器、網(wǎng)絡(luò)設(shè)施和公司建筑物的物理安全訪問;組織上的安全措施包括建立安全規(guī)則和操作步驟,定期對AD架構(gòu)進行外部安全審計,不斷培訓(xùn)管理員和用戶的安全風(fēng)險知識和操作實踐。在公司內(nèi),保護AD的安全是一項重要的工作,應(yīng)該列為高優(yōu)先級,應(yīng)該從技術(shù)上、物理上和組織上建立聯(lián)合的團隊共同完成。
希望系統(tǒng)管理員通過本文對AD的攻擊和預(yù)防措施的介紹能夠引起對AD安全的重視。
【編輯推薦】