[Note] 有關系統管理:Systems Administration – Director Services

此篇主要是紀錄 Coursera 平台上的課程 Google IT Support Professional Certificate 中 System Administration and IT Infrastructure Services 的第四個星期的上課筆記,大致上是系統管理相關介紹。其他的筆記也一併附上,未來整理好之後下方文字可以直接連結到該筆記:


目錄


Introduction to Directory Services

What is a directory server?

目錄伺服器包含檢索服務,可提供網絡資源與其網絡位置之間的映射。它用於組織和查找組織對象和實體,範圍包括用戶帳戶、用戶組、電話號碼和網絡共享等。我們不需要在每台機器上管理帳戶和電腦訊息,這些都可以儲存在目錄伺服器上,以便於訪問和管理。

一般理想狀態的目錄伺服器支援複製功能,意思是可以複製並分佈在多個物理分佈式伺服器上,但是仍顯示為統一的資料儲存以供查詢和管理。若一台伺服器有問題,也能對服務的中斷降到最低。若我們訪問目錄服務時,複製還能夠減少延遲。透過在每個辦公室放置目錄伺服器的副本,我們可以更快地進行目錄服務查詢。

目錄服務必須是靈活的,允許我們根據需要的變化創立新的類型。也可用於組織資料並讓它可以提供組織搜索。這是通過使用容器的分層模型來實現的。容器稱為 OU(organizational units,組織單位),就像資料夾一樣,可以包含目錄服務的單個文件,也可以包含其他資料夾。這種層次結構可以用於傳達有關儲存內容的附加訊息。例如說我們有一個包含所有帳戶的 OU code user,在這個 OU 中,可能還有其他的 OU,代表組織實際的團隊結構。使用者的 OU 可以包含其他 OU,像是銷售、工程等等。這個結構可以用於傳達這些子 OU 使用者之間的差異,像是我們可以設定工程人員要有更嚴格的密碼要求。

Implementing Directory Services

目錄服務成為不同軟體供應商之間的開放網路標準。

1988 年,X.500 目錄標準獲得批准,包括 DAP、DSP(目錄系統協議)、DISP(目錄信息屏蔽協議)、DOP(目錄操作綁定管理協議)等等。DAP 的替代方案旨在允許客戶端訪問 X.500 目錄,由於 X.500 太複雜了,比較熱門的是 LDAP(Lightweight Directory Access Protocol,輕型目錄存取協定)。

由於這些是目錄服務通信和訪問的開放標準,因此出現了這些服務的許多不同實現方法,像是 Microsoft 的AD(Active Directory),另外還有 OpenLDAP,它支援許多平台。

除了伺服器軟體,還有用於訪問和管理目錄伺服器的客戶端工具。Microsoft Office Active Directory Users and Computers 或是 ADUC。

所有主要作業系統平台都支持集成到目錄伺服器中以用於登錄和身份驗證,這樣做的好處是可以集中管理用戶帳戶。

Centralized Management

What is centralized management?

集中管理,為所有不同的分部提供指令的集中服務。目錄服務算是其中之一。像是我們不可能在一個有數百甚至數千台電腦公司,一台一台進入電腦設定。目錄服務提供認證(Authentication)、授權(Authorization)、審計(Accounting ),也稱為 AAA。當電腦和應用程式被設定為使用目錄服務或 AAA 富務實,表示關於 IT 資源的決策是集中的。

LDAP

What is LDAP?

LDAP(Lightweight Directory Access Protocol,輕型目錄存取協定)用於訪問目錄服務中的訊息。可以使用許多不同的操作,像是新增一個新條目、刪除條目、修改條目等等。這裡的條目(entry),指的是目錄服務中紀錄的 LDAP 條目格式

您可以在目錄服務器數據庫中添加一個新條目,例如創建一個名為 Cristi 的新用戶對象。 您可以刪除目錄服務器數據庫中的條目。 您可以修改條目等等。 當我們說條目時,我們指的是目錄服務中記錄的 LDAP 條目格式(LDAP entry format)或 LDAP 表示法。LDAP 條目只是用於描述某事的訊息集合。LDAP 條目的格式基本上有一個唯一的條目名稱,例如:

dn:CN=Alex BlaBla,OU=Sysadmin,DC=example,DC=com

dn(distinguished name)表示該條目關聯的屬性和值。
CN 是對象的通用名稱。
OU 是組織單位。
DC 是網域元件,所以 example.com 被分為 examplecom

What is LDAP Authentication?

應該有看過早期美國電影跑去電話亭翻電話簿的畫面,上面都是公開的姓名、地址和電話,跟現在我們存在手機的通訊錄雖然功能差不多,但可見度很不一樣。通訊錄裡面的人給了電話號碼,提供我自己使用。而使用 LDAP 時,也能夠有不同的身分驗證級別,用於限制某些目錄的訪問。

上面有提到過可以使用 LDAP 執行的不同操作,例如新增、刪除或修改目錄中的條目。 可以執行的另一個操作是綁定操作,它向目錄伺服器驗證客戶端。假設我們想登入一個使用目錄服務的網站,輸入帳戶登入訊息和密碼,並且把這些訊息發送回網站。它將使用 LDAP 檢查該使用者帳戶是否是目錄中的使用者,以及密碼是否有效。若是的話,就會被授予訪問權限。

一共有三種常見的身分驗證方法。一個是匿名驗證(anonymous),一個是簡單驗證(simple),最後一個是 SASL(simple authentication and security layer)。匿名驗證實際上沒有進行身分驗證,取決於它的設定方式,任何人都可能訪問該目錄,就像公共電話簿一樣。另外當我們使用簡單驗證時,只需要目錄條目名稱和密碼即可,這通常會以文本的形式發送,也就是不安全。SASL 可以利用 TLS 等安全協議的幫助,SASL 身份驗證要求客戶端和目錄伺服器使用某種方法進行身份驗證,這種身份驗證最常用的方法之一是使用 Kerberos。Kerberos 是一種網絡身份驗證協議,用於驗證用戶身份、保護用戶驗證資訊的傳輸等等。

Active Directory

What is Active Directory?

AD(Active Directory)是 Microsoft Windows 的本機目錄服務,一直用於集中管理電腦網路。Active Directory 以類似的方式打開 LDAP,並且可以與使用該協議的 LINUX、OS X 和其他非 Windows 主機進行互動操作。使用 Active Directory 管理一組 Windows 伺服器和客戶端電腦時,它會提供目錄服務和集中身份驗證。

ADAC(Active Directory Administrative Center,Active Directory 管理中心),在 Active Directory 中看到的一切都是物件。有些物件是容器,其中可以包含其他物件。另一種類型的容器稱為 OU (organizational unit,組織單元),可以將 OU 想像成一個資料夾或目錄,用於在集中管理系統中組織物件。普通容器不能包含其他容器,但 OU 可以包含其他 OU。

Managing Active Directory

有些系統管理員將所有時間都花在管理 AD 上。

首次設置 Active Directory 網域時,它包含一個默認帳戶、管理員和幾個默認使用者群組。

管理員或是 root user 可以對作業系統做任何的更改。

Domain Admins 組中的使用者可以對網域進行任何更改,由於網域可以控制與其綁定的所有電腦的設置,因此網域管理員也可以成為所有這些電腦的本地管理員,所以不要輕易將帳戶添加到該組。

企業系統管理員(Enterprise Admin)是 Active Directory 網域的管理員。企業系統管理員只在非常特殊的情況下才需要,例如將 Active Directory forest 升級到新版本時。

網域使用者(Domain Users)包含網域中的所有使用者帳戶,在網域中建立使用者帳戶時,它會自動新增至此群組。如果您想要向網域中的每個人授予對網絡資源的訪問權限,則不需要向每個單獨的帳戶授予訪問權限,可以使用域用戶。

Domain Computers 包含加入域的所有電腦,但網域控制器(domain controllers)除外。網域控制器包含網域中的所有網域控制器。

Managing Active Directory Users and Groups

常見的系統管理任務是管理使用者帳戶的生命週期,

SAM(security count manager)是 Windows 中存儲用戶名和密碼的數據庫。

若需要大量建置帳戶,則需要學習如何編寫一個腳本來執行這些命令。

Managing Active Directory User Passwords

除了某些例外,AD 不存儲用戶的密碼,它存儲密碼的單向密碼雜湊。基本上密碼很容易變為雜湊,雜湊不容易變回密碼。因此即使管理員有需要,也無法查找使用者的密碼。在安全審計或故障排除情境下,只有一個人可以使用他們的帳戶進行身份驗證很重要。

Joining an Active Directory Domain

將電腦加入 Active Directory 意味著兩件事:AD 知道該電腦並為其配置了一個帳戶,該電腦知道 AD 網域並使用它進行身份驗證。

關於圖形介面我這裡就不再筆記了,主要講解 PowerShell 的操作。我們可以將電腦加入網域。

Add-Computer -DomainName 'example.com' -Server 'dcl'

系統將會出現憑證視窗。另外因為這個命令預設是不會重新啟動電腦,所以我們會加上重新啟動參數 -Restart,讓網域加入的動作可以處理完成。

多年來,已經有多個版本的 Active Directory。我們將這些版本稱為功能級別(functional levels)來描述它支援的功能。如果管理 Active Directory,將需要知道網域和 forest 功能級別,並且可能有一天需要升級您的 Active Directory forest 或網域或新功能。查看 forest 模式和網域模式屬性:

Get-AdForest
Get-AdDomain

Group Policy: Group Policy Object (GPO)

我們將討論如何用 Active Directory 群組原則來配置電腦和網域本身。目錄服務是用於儲存物件訊息的數據庫,這些物件表示我們希望能夠引用或管理的網絡中的事物。

GPO(Group Policy Object,群組原則物件)是一組原則和偏好,可應用於目錄中的一組物件。GPO 包含電腦和使用者帳戶的設置。使用群組原則將有助於標準化每個團隊的偏好,並有助於快速設置以及更易於管理。 群組原則可以創立登入和註銷的腳本,也可以設定事件日誌,告訴電腦應該記錄哪些事情以及紀錄該發送到哪裡,也可以安裝希望可用的軟體以及阻止不想執行的軟體。

我們可以新建任意數量的群組原則物件,連接到網域或 OU 之前,他們不會執行任何動作。連接 GPO 時,該網域、網站或 OU 下的所有電腦或使用者就會使用這個原則。我們可以使用其他工具來輔助,像是 security filtering 或是 WMI filters。

GPO 可以包含電腦設定、使用者設定,這些會在不同的時間應用。當電腦登入到 AD 網域時,就會開始實行使用者設定。一旦 GPO 生效,每隔幾分鐘就會檢查並執行一次,這可以確保網路上的電腦不會偏離系統管理員定義的設定。

而群組原則偏好(preferences)則是在許多情況下為了作為設置模板的設定。系統管理員會選擇應用 GPO 的電腦上的預設,但是使用電腦的人可以更改原則中定義的設定,並且該更改不會被覆蓋。

加入網域的電腦實際上要如何獲得 GPO 呢?當加入網域的電腦或使用者通過聯繫網域控制器登入網域時,這個網域控制器為會提供電腦應該使用的群組原則清單,電腦從一個名為 SYSVOL 的特殊資料夾下載這些原則。這個資料夾在所有網域控制棄之間複製,還可以包含像是登入、註銷腳本的內容。只要電腦下載了它的 GPO,這些設定就會開始被套用到電腦上。

另外,GPO 很多原則和偏好都表示成 Windows 登錄檔(Windows Registry)中的值,登錄檔是 Windows 和 Windows 應用程式用於儲存設定數據的分層資料庫。

Group Policy Creation and Editing

GPMC(group policy management console,群組原則管理主控台)是用於新增和查看 GPO 的工具,我們可以透過命令視窗輸入 GPMC.MSE 來執行。GPMC 類似於我們在 Active Directory 中使用的其他管理工具,可以看到 Active Directory 的結構。

GPO 容器會包含網域中定義的所有的 GPO。WMI 篩選器可以幫我們的 GPO 定義目標規則。WMI(Windows Management Instrumentation,Windows 管理規範),這些篩選器會依物件的屬性來決定 GPO 是否應該套用於特定電腦。

要記得的是,使用者和電腦容器不是 OU。GPO 只能連接到網域、站點和 OU。如果電腦和使用者物件位於預設容器中,則只能將它們視為連接到網域和站點的 GPO 目標。在 OU 中管理使用者和電腦帳戶是一種好的做法,這樣它們就可以成為更具體的目標。

審計帳號 log 事件原則指出電腦應該為每次成功和失敗的登錄新建一個 Windows 事件,另外要更改設定前,可以先備份 GPO,如果操作錯誤,則可以從備份中復原這項原則。一些組織將建立最佳實踐來測試其環境中的 GPO 更改。 如果是這樣,那麼您應該遵循這些標準。可能還需要遵循變更管理流程,以便把將要進行的變更通知組織中的其他人。

通常會先測試更改,確保不會破壞線上正在運作的機器。首先可以設定一個包含測試機器或使用者帳戶的測試 OU,並將測試機器放在測試 OU 中,讓測試機器保留所有現有的 GPO,但提供了一個連結將覆蓋目前測試 GPO 的位置。更改後可以備份測試原則,然後備份導入目前在線上的原則。

組織也可能使用 AGPM(advanced group policy management),它是 Microsoft 的一組附加工具,可以在 GPMC 中提供一些額外的配置控制功能,應遵循使用 AGPM 進行 GPO 版本控制。

Group Policy Inheritance and Precedence

如果遵循新建特定 GPO 來滿足特定需求的做法,最終可能會在 Active Directory 層次結構的許多級別上連接大量策略。控制安全設置 GPO 在這種情況相當常見。電腦或使用者帳戶可能分配多個 GPO,但有些 GPO 在設計上是互相矛盾的。當電腦處理適用於它的 GPO 時,這些原則將依據一組規則,依照特定順序套用。首先套用連結到最不特定明確或最大容器的 GPO,最後連接到最特定明確或最小容器的 GPO。

當我們將特定機器的所有群組原則加在一起並對其套用優先規則時,我們會將它稱為該機器的 RSop(Resultant Set of Policy,結果集)。

Group Policy Troubleshooting

任何網路都可能會是一個問題。為什麼 DNS 會這麼重要,主要是因為若要讓電腦聯繫到網域控制器,它需要先找到 DNS。

網域電腦將對綁定的網域匹配的 SRV 紀錄發出 DNS 請求,如果電腦無法聯繫 DNS 伺服器,或這些 DNS 伺服器沒有電腦正在查詢的 SRV 紀錄,則它無法找到網域控制器。我們感興趣的 SRV 紀錄是 _ldap._tcp.dc._msdcs.DOMAIN.NAME,其中域名是我們網域的 DNS 名稱,所以試試看使用 PowerShell,輸入

Resolve-DNSName -Type SRV -Name _ldap._tcp.dc._msdcs.example.com

應該會看到每個網域控制器的 SRV 記錄。如果我們不能為網域控制器解析 SRV 紀錄,那麼 DNS 伺服器可能設定錯誤。

根據網域和電腦的配置,本地驗證通常會繼續執行,一旦有人登錄到網域電腦,驗證該使用者所需的訊息就會被複製到本地電腦。也就是說在首次登錄後,即使網路斷線,也可以登錄電腦。

另外一個阻止使用者進行身分驗證的問題可能和時間有關。Kerberos 是 AD 使用的身份驗證協議,它對時間差異很敏感,這裡指的時間是 UTC 時間。如果控制器和電腦不同意 UTC 時間(通常在五分鐘內),則身份驗證將會失敗。我們可以使用 w32tm/rsync 命令手動強制電腦重新同步。

我們可能需要解決的另外一個常見問題是 GPO 無法套用於電腦上。發生這種狀況有幾種常見的原因。

第一種是和群組原則的套用方式有關,根據網域的配置方式,將原則設定套用於本地電腦的群組原則引擎可能會犧牲某些原則的應用,以便加快登錄速度。這稱為快速登錄最佳化(Fast Logon Optimization),它可能意味著某些 GPO 更改的自動套用時間比預期的要長得多。我們可以使用 gpupdate/force 強制完全並立即套用所有的 GPO,徹底一點可以執行 gpupdate/force/sync/sync 參數將註銷並重新啟動電腦。因為某些類型的原則只能在電腦首次啟動或使用者首次登錄時執行,註銷並重新啟動是確保強制更新的 GPO 所有設置的唯一方法。

第二種可能是複製失敗,讓 GPO 無法按預期套用。我們可以利用 $env:LOGONSERVER 查看變量的內容或是 %LOGONSERVER%。根據 Active Directory 基礎結構的大小和復雜性以及 AD 站點之間網絡鏈接的可靠性和吞吐量,複製可能需要幾分鐘才能完成。 如果複製沒有在合理的時間內完成,可能需要對 Active Directory 複製進行故障排除。

如果試圖找出特定 GPO 不適用於電腦的原因,首先要做的是執行生成的結果集 RSoP(resultant set of policy)。我們可以使用群組原則管理控制台,或是直接在命令視窗中命令以產生報告。gpresult /R 能讓我們在終端機得到一份總結報告。也可以執行 gpresult /H [FILENAME].html,例如 gpresult /H test.html,這也可以產生報告。可以查看要申請的 GPO 是否已列出? 它是否鏈接到包含我正在排除故障的電腦的 OU? 我關心的 GPO 是否列在已應用的 GPO 下或已拒絕的 GPO 下?

每個 GPO 可以配置 WMI 篩選器,它允許我們根據電腦的設定套用 GPO。WMI 篩選器功能強大,但價格昂貴,而且容易配置錯誤。

Mobile Device Management (MDM)

MDM(Mobile Device Management,行動裝置管理),用於配置行動裝置的原則。是一種組織或企業管理處理公事的行動裝置的方式,可以避免公司機密被員工外洩或被不當使用,也可以避免行動裝置遺失時,行動裝置內的企業應用程式被利用。

OpenLDAP

What is OpenLDAP?

OpenLDAP 是輕型目錄存取協定的自由和開源的實現,在其OpenLDAP授權條款下發行,並已經被包含在眾多流行的 Linux 發行版中,其運行方式與 Active Directory 非常相似。使用 LDAP 表示法或 LDAP 資料交換格式或 LDIF,OpenLDAP 可以在任何操作系統上使用。但由於 Active Directory 是 Microsoft 的目錄服務專有軟體,建議在 Windows 上使用 AD 即可而不需要特地改用 OpenLDAP。

sudo apt-get install slapd ldap-utils

安裝後,它會提示您輸入 LDAP 的管理密碼。現在它已經安裝好了,我們實際上要重新配置。

sudo dpkg-reconfigure slapd。

這個執行會問一系列關於新設定的問題。

Managing OpenLDAP

透過 Web 瀏覽器和 phpLDAPadmin 等工具管理 OpenLDAP 很簡單,也可以利用命令工具獲得相同的操作結果。這裡我也一樣不做圖形介面的筆記,主要紀錄命令列工具的操作方法。

首先我們需要使用一種稱為 LDIF 檔案的東西。它是一個文字檔,列出了某些內容的屬性和值。

ldapadd:接受 LDIF 檔案輸入,添加檔案上下文。
ldapmodify:修改現有物件。
ldapdelete:刪除 LDIF 檔案引用的對象。
ldapsearch:目錄資料庫中搜索。

可以隨時在官方文檔中查找語法。


我對這部分的課程超級沒概念,直接就地陣亡……

讓我知道你在想什麼!