域內LDAP學習
Naming Context
微軟將Active Directory劃分爲若干個分區(這個分區我們稱爲Naming Context,簡稱NC),每個Naming Context都有其自己的安全邊界。
預設定的有三個Naming Context。
Configuration NC(Configuration NC)
Schema NC(Schema NC)
Domain NC(DomainName NC)
Configuration NC
Configuration NC是林配置信息的主要存儲庫,包含有關站點,服務,分區和Active DirectorySchema 的信息,並被複制到林中的每個域控制器。配置NC的根位於配置容器中,該容器是林根域的子容器。
RDN | 說明 |
---|---|
CN=DisplaySpecifiers | 定義了Active Directory管理單元的各種顯示格式 |
CN=Extended-Rights | 擴展權限對象的容器 |
CN=ForestUpdates | 包含用於表示森林狀態和與域功能級別更改的對象 |
CN=Partitions | 包含每個Naming Context,Application Partitions以及外部LDAP目錄引用的對象 |
CN=Physical Locations | 包含位置對象,可以將其與其他對象關聯 以表示該對象的位置。 |
CN=Services | 存儲有關服務的配置信息,比如文件複製服務 |
CN=Sites | 包含所有站點拓撲和複製對象 |
CN=WellKnown Security Principals | 包含常用的外部安全性主題的對象,比如Anonymous,Authenticated Users,Everyone等等 |
Schema NC
包含Schema 信息,該Schema 信息定義Active Directory中使用的類,對象和屬性。與域NC和配置 NC 不同,模式 NC 不維護容器或組織單位的層次結構。
Domain NC
每個域都有一個域Naming Context,不同的域內有不同的域Naming Context,其中包含特定於域的數據。
RDN | 說明 |
---|---|
CN=Builtin | 內置本地安全組的容器,包括管理員,域用戶和賬號操作員等等 |
CN=Computers | 機器用戶的容器,包括加入域的所有機器 |
OU=Domain Controllers | 域控制器的容器,包括域內所有域控 |
CN=ForeignSecurityPrincipals | 代表域中來自森林外部域的組中的成員 |
CN=Keys | Server 2016之後纔有,關鍵憑證對象的默認容器 |
CN=Managed Service Accounts | 託管服務帳戶的容器。 |
CN=System | 各種預配置對象的容器。包括信任對象,DNS對象和組策略對象 |
CN=TPM Devices | 可信平臺模塊(TPM)密鑰的恢復信息的容器。 |
CN=Users | 用戶和組對象的默認容器 |
LDAP類和繼承
在域內每個條目都是類的實例。而類是一組屬性的集合
右側是這臺機器對應的屬性。
查看objectClass屬性
看到這個對象中的Values值中,有Computer的值。說明Computer的實例對象。
子類可以繼承父類的所有屬性,Top類是所有類的父類。
Computer等這些對象都存儲在Schema NC中。
Schema NC
域內每個條目都是類的實例。所有的類都存儲在Schema NC裏面,是Schema NC的一個條目。
如Computer
類有三種類型
-
結構類(Structural)
結構類規定了對象實例的基本屬性,每個條目屬於且僅屬於一個結構型對象類。前面說過域內每個條目都是類的實例,這個類必須是結構類。只有結構類纔有實例。比如說前面說過的Computer類。
-
抽象類(Abstract)
抽象類型是結構類或其他抽象類的父類,它將對象屬性中公共的部分組織在一起。跟面對對象裏面的抽象方法一樣,他沒有實例,只能充當結構類或者抽象類的父類。比如說top 類。注意抽象類只能從另一個抽象類繼承。
-
輔助類(Auxiliary)
輔助類型規定了對象實體的擴展屬性。雖然每個條目只屬於一個結構型對象類,但可以同時屬於多個輔助型對象類。注意輔助類不能從結構類繼承
objectCategory與objectClass
objectClass
在對象的objectClass
屬性裏面,可以看到這個對象是哪個類的實例,以及這個類的所有父類。
比如CN=ali.hama,CN=Users,DC=test,DC=com
使用adfind 查找設置過濾條件爲(objectClass=top)
可以找到域內的所有對象。設置爲(objectClass=person)
,則可以找到所有域內用戶對象。
objectCategory
在Windows Server 2008之前默認不對objectClass 屬性進行索引。
對象類的每個實例還具有一個objectCategory屬性,該屬性是一個單值屬性。並且建立了索引。其中包含對象是其實例的類或其父類之一的專有名稱.
創建對象時,系統會將其objectCategory屬性設置爲由其對象類的defaultObjectCategory
屬性指定的值。無法更改對象的objectCategory屬性。
索引objectCategory
的屬性爲CN=Person,CN=Schema,CN=Configuration,DC=test,DC=com
過濾條件:
(objectCategory="CN=Person,CN=Schema,CN=Configuration,DC=test,DC=com")
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(objectCategory="CN=Person,CN=Schema,CN=Configuration,DC=test,DC=com")"
如果在目錄中已經索引了ObjectClass ,或者所有域控制器都在運行Windows Server 2008或更高版本,則可以隨意使用 objectClass。
組
安全組是權限的集合。運維需要對公司的網絡進行管理,需要一些特殊的管理權限,我們就可以設置個組,對組配置權限。然後將運維拉近組裏面,組裏面的運維就擁有了該權限。安全組可以根據作用範圍劃分爲
全局組 (Global group)
通用組(Universal group)
域本地組(Domain Local group)
可以用(objectClass=group)
或者(objectCategory=group)
來過濾組。
查詢所有組
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(objectCategory=group)"
查詢所有全局組
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(&(objectcategory=group)(grouptype:AND:=2))" -dn
查詢域內所有通用組
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(&(objectcategory=group)(grouptype:AND:=8))" -dn
查詢域內的所有安全組,(包括全局組,通用組,域本地組)
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(&(objectcategory=group)(grouptype:AND:=2147483648))" -dn
查詢域內的所有通訊組(包括全局組,通用組,域本地組)
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(&(objectcategory=group)(!(grouptype:AND:=214748648)))" -dn
查詢域內系統創建的羣組
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(&(objectcategory=group)(grouptype:AND:=1))" -dn
組範圍
組類型 | 可以授予權限 | 可包含 | 可包含於 | 成員是否在全局編錄複製 |
---|---|---|---|---|
全局組 | 在同一林中或信任域或林中的任何域上。 | 來自同一域的帳戶。 來自同一域的其他全局組 | 來自同一林中任何域的通用組。 來自同一域的其他全局組。 來自同一林中任何域或任何信任域的域本地組。 | 無 |
通用組 | 在同一林或信任林中的任何域上。 | 來自同一林中任何域的帳戶。 來自同一林中任何域的全局組。 來自同一林中任何域的其他通用組。 | 同一林中的其他通用組。 在同一個林或信任林中域本地組。 | 是 |
域本地組 | 在同一個域中 | 來自任何域或任何受信任域的帳戶。 來自任何域或任何受信任域的全局組。 來自同一林中任何域的通用組。 來自同一域的其他域本地組。 | 來自同一域的其他域本地組 | 無 |
- 域本地組(Domain Local group)
顧名思義,就是本域內的本地組。不適用於林,適用於本域。可包含林內的賬戶,通用組,全局組。其他域內的通用組要在本域擁有權限,一般都是加入這個域的域本地組。比如說一個林裏面,只有林根域有Enterprise Admins
這個組,這是個通用組。然後其他子域的域本地組Administrators
會把林根域的Enterprise Admins
加進裏面,所以林根域的Enterprise Admins
組用戶纔在整個林內具備管理員權限。如果想要一個只允許訪問同一個域中的資源的組,那麼使用域本地組即可。
- 通用組(Universal group)
上面已經簡單提過了通用組,典型例子是Enterprise Admins
這個組。在林的場景下比較有用。組內成員會在GC內複製。如果你想要一個可以訪問林中任何東西的組,並且可以在林中包含任何賬戶,請使用通用組。
- 全局組 (Global group)
全局組比較複雜,在單域內用域本地組,在林中使用通用組。全局組應該說是一種比較折中的方案,他可以在林中使用,但是隻能包含本域內的賬戶。全局組的使用範圍是本域以及受信任關係的其他域。最爲常見的全局組是Domain Admin,也就是我們常說的域管。因爲全局組只能包含本域內賬戶,因此來自一個域的賬戶不能嵌套在另一個域中的全局組中,這就是爲什麼來自同一個域的用戶不符合在外部域中的域管的成員資格(由於其全局範圍的影響)。
常見組
- Administrators
域本地組。具備系統管理員的權限,擁有對整個域最大的控制權,可以執行整個域的管理任務。Administrators包括Domain Admins
和Enterprise Admins
。
- Domain Admins
全局組。我們常說的域管組。默認情況下,域內所有機器會把Domain Admins加入到本地管理員組裏面。
- Enterprise Admins
通用組。在林中,只有林根域纔有這個組,林中其他域沒有這個組,但是其他域默認會把這個組加入到本域的Administrators裏面去。
- Domain Users
全局組。包括域中所有用戶帳戶,在域中創建用戶帳戶後,該帳戶將自動添加到該組中。默認情況下,域內所有機器會把Domain Users加入到本地用戶組裏面,也就是爲什麼默認情況底下,啥都不配置。域用戶可以登錄域內任何一臺普通成員機器。
OU 組織單位(Organization Unit)
組織單位(Organization Unit),簡稱OU,是一個容器對象,將域中的對象組織成邏輯組,幫助網絡管理員簡化管理組。組織單位包含下列類型的對象:用戶,計算機,工作組,打印機,安全策略,其他組織單位等。可以在組織單位基礎上部署組策略,統一管理組織單位中的域對象。 在企業域環境裏面,我們經常看到按照部分劃分的一個個OU。
OU跟組的區別
組織單位跟組是兩個完全不同的概念。組是權限的集合。OU是管理對象的集合。舉個前面舉過的例子,運維需要對公司的網絡進行管理,需要一些特殊的管理權限,我們就可以設置個組,對組配置權限。然後將運維拉近組裏面,組裏面的運維就擁有了該權限。比如我們需要對財務部裏面的用戶進行統一管理,那我們可以設置個OU,然後把財務部的用戶拉近這個OU,這樣就可以進行集中管理,比如說下發組策略。說通俗點,組是管理的集合,OU是被管理的集合。
查詢OU
查詢所有ou
adfind.exe -b "DC=test,DC=com" -s subtree -bit -f "(objectclass=OrganizationalUnit)" -dn
查詢ou內容直接指定basedn即可
adfind.exe -b "OU=Admins,DC=test,DC=com" -s subtree -bit -dn