使用 Microsoft LAPS 安全 Windows 管理員密碼

您目前如何處理本地 Windows 管理員密碼?每個 Windows 系統都有一個本地管理員密碼,它們擁有每台電腦的最高權限。由於本地管理員密碼不是 Active Directory(AD)的一部分,您必須分別管理每台電腦上的每個帳戶。這是一個麻煩的工作。

大多數情況下,組織並不太在意這個問題,只是在每台 Windows 機器上設置一個標準的管理員密碼。儘管這樣很方便,但當那個唯一的主密碼落入錯誤的手中時,組織就面臨了更大的問題。在每台電腦上設置單獨的本地管理員密碼並不能完全防止惡意人士訪問一台電腦,但它可以大大減少橫向攻擊其他電腦的可能性。

Microsoft Local Administrator Password Solution(LAPS)可以幫助您。

在本文中,您將學習如何通過設置 LAPS 來保護您的 AD 加入的計算機。

什麼是 Microsoft LAPS?

LAPS 是保持 Windows 環境安全的重要部分。LAPS 是一個巧妙的工具;它可以自動隨機生成啟用了 LAPS 的所有域計算機上的本地管理員密碼並定期更改每個密碼。

LAPS確保您的域中的本地管理員密碼是隨機的,並防止黑客和惡意軟件的橫向移動。現在,您可能會認為客戶端上的長本地管理員密碼可以保護您免受此類攻擊,但這是不正確的

黑客可以使用Pass-The-Hash方法迅速在您的域中傳播,甚至可能通過使用相同的方法找到域管理員憑據。LAPS通過強制惡意個體發現每台個別機器的密碼來防止此類活動。

LAPS的實踐應用

LAPS有三個主要部分:

鎖定的AD屬性

LAPS在AD中存儲了每台受控計算機的本地管理員密碼,稱為ms-Mcs-AdmPwd。 LAPS還需要知道密碼何時過期以進行更改,因此它還存儲了另一個AD屬性,稱為ms-Mcs-AdmPwdExpirationTime。這些AD屬性僅可由指定的AD主體(如組或用戶)讀/寫,並且也可由使用該密碼的計算機帳戶寫入。

GPO設置

為了在計算機上配置LAPS並更改密碼,LAPS還有一組GPO設置。當將GPO鏈接到一組計算機時,LAPS設置將分發到每台計算機。當計算機應用GPO設置時,LAPS使用一個特殊的DLL文件來解釋這些設置。

當LAPS看到當前日期超過密碼到期日時,它將:

  • 隨機生成一個新密碼並將其設置為本地管理員密碼。
  • 將新的本地管理員密碼寫入AD中的Ms-Mcs-AdmPwd屬性。
  • 將新的到期日期寫入ms-Mcs-AdmPwdExpirationTime

通過使用這種巧妙而簡單的方法,域計算機的安全性更高。

設置LAPS

足夠的信息,讓我們開始看看LAPS可以做什麼!設置LAPS並不複雜,但需要進行幾個步驟,您將在本教程中學到。這些步驟包括:

  1. 在管理機器上安裝LAPS管理工具。
  2. 擴展AD架構以添加LAPS使用的兩個自定義AD屬性。
  3. 為AD中的各個組件設置適當的權限。
  4. 構建將應用於Windows計算機的LAPS GPO。
  5. 部署LAPS GPO擴展到適用的Windows計算機。

完成上述步驟後,您將擁有一個完全功能的LAPS環境,準備就緒!

先決條件

在本文中,您將真正設置LAPS。如果您想跟隨進行,請確保您首先滿足一些先決條件。

  • AD域(2003及以上版本)
  • A computer running Windows (10 or Server 2012+ is recommended) has RSAT for Active Directory installed.
  • 可以訪問同時屬於AD域管理員和模式管理員組的帳戶。

本文中的所有示例将使用一个名为contoso.com的AD域。

模式管理员组的最佳做法是只在需要权限时成为其成员。

安装Microsoft LAPS管理工具

首先,您必须在管理计算机上安装LAPS管理工具。这些管理工具将安装LAPS GPO扩展(如果选择)和配置LAPS的管理工具。

  1. 首先下载LAPS.x64.msi文件,以管理员身份启动并点击下一步
Installing Microsoft LAPS

2.连续按下一步,直到进入自定义设置,然后点击管理工具整个功能都将安装在本地硬盘上来安装这两个组件。如果您不希望当前计算机由LAPS管理,则选择AdmPwd GPO Extension

Click Management Tools

3.连续点击下一步,直到安装完成并退出安装程序。

现在,您已安装了LAPS GPO扩展(如果选择的话)以及其管理工具,我们现在可以开始扩展AD模式并添加我们的GPO。

扩展AD模式

如前所述,LAPS使用两个AD属性,称为ms-Mcs-AdmPwdms-Mcs-AdmPwdExpirationTime。这两个属性不是默认的,必须添加到AD模式中。

  1. 開始時,將Domain Admins群組的成員添加到Schema Admins群組中,如果該帳戶尚未是其成員。我們將此稱為您的「管理帳戶」。
  2. 以您的管理帳戶身份啟動 PowerShell,並執行Import-module AdmPwd.PS以匯入AdmPwd PowerShell 模組
  3. 模組匯入後,執行命令Update-AdmPwdADSchema以更新 AD Schema,添加兩個 AD 屬性。您可以在以下截圖中看到輸出結果。
Powershell Admin Account

現在,我們已擴展 AD Schema 以支援 LAPS,準備好在 Active Directory 中設置權限了。

配置 Active Directory 權限

每台計算機都需要能夠更新其本地管理員密碼和過期時間的 AD 屬性。為此,每台計算機必須對ms-Mcs-AdmPwdms-Mcs-AdmPwdExpirationTime AD 屬性具有自我寫入權限。幸運的是,大部分工作都可以通過 AdmPwd PowerShell 模組輕鬆完成。

允許計算機保存其密碼

首先,確保每台計算機可以將其密碼保存到ms-Mcs-AdmPwd AD 屬性中,並在密碼過期時更新ms-Mcs-AdmPwdExpirationTime AD 屬性。AdPwd PowerShell 模組具有一個命令可以設置這些權限,稱為Set-AdmPwdComputerSelfPermission,可以按組織單位(OU)設置,並應用於所有子 OU。

在PowerShell中运行Set-AdmPwdComputerSelfPermission -OrgUnit ‘OU=Workstations,DC=contoso,DC=com’,记得更新特定的组织单位和域名。

Update OU and Domain Name

如果您想让LAPS控制更多的组织单位,请为AD中的每个组织单位重复上述命令。

通过查找扩展权限来锁定AD属性

为了确保只有您希望具有读取和重置每台计算机本地管理员密码权限的用户和组,您需要审计谁有访问权限。具体而言,您需要知道只有需要“扩展权限”的帐户才拥有该权限。

要查找具有扩展权限的帐户,请运行Find-AdmPwdExtendedRights -OrgUnit 'OU=Workstations,DC=contoso,DC=com' | Select -ExpandProperty ExtendedRightHolders,请确保替换您的组织单位和域名。

您现在可以在以下截图中看到CONTOSO\joe-the-adminCONTOSO\MDT-service具有Workstations组织单位的扩展权限。

Workstations OU

确实需要MDT-service权限的扩展权限,但joe-the-admin不需要。现在,您需要移除joe-the-admin的权限。

您需要为之前在一个较早的步骤中设置了自写权限的所有组织单位重复此过程。

移除扩展权限

一旦确定要从中移除扩展权限的每个帐户,现在是实际执行的时候了。

  1. 打開活動目錄使用者和電腦,並在上方菜單中點擊檢視,確保已啟用高級功能。啟用高級功能後,您將看到通常隱藏的所有組織單位,如下圖所示。
Hidden OUs

2.右鍵單擊要刪除擴展權限的組織單位,然後點擊屬性

Right Click OU to Remove

3.點擊安全性標籤,然後點擊高級按鈕。
4.找到要刪除擴展權限的帳戶或組,然後選擇它並點擊刪除以刪除它。

Security Tab for Account Removal

5.根據需要重複執行這些步驟,以刪除所有具有擴展權限的主體。

授予讀取和重置本地管理員密碼的權限

現在,您已確保只有適當的帳戶具有擴展權限,現在需要創建兩個 AD 群組,用於讀取和重置名為LAPS 工作站密碼讀取LAPS 工作站密碼重置的本地管理員密碼。

請注意,此處指定的群組名稱並非強制性的。您可以自由選擇任何群組名稱。

在仍然使用管理帳戶的 PowerShell 控制台中,輸入以下命令,以使這兩個 AD 群組具有讀取工作站 OU 中計算機的本地管理員密碼的權限。

PS> Set-AdmPwdReadPasswordPermission -OrgUnit 'OU=Workstations,DC=contoso,DC=com' -AllowedPrincipals "LAPS Workstations Password Read"

PS> Set-AdmPwdResetPasswordPermission -OrgUnit 'OU=Workstations,DC=contoso,DC=com' -AllowedPrincipals "LAPS Workstations Password Reset" 

您已啟用上述 AD 群組,以便讀取並重置 工作站 OU 中電腦的本機管理員密碼。現在您需要添加必要的管理員或群組以便讀取或重置密碼。

建立群組原則範本的中央存儲

為了在電腦上安裝 LAPS 後使其自動啟用,首先通過將群組原則範本導入到PolicyDefinition 存儲來創建一個群組原則。 PolicyDefinition 存儲是位於所有域控制器上的文件夾。

請勿啟用針對域控制器的 LAPS GPO。這不受支援且可能導致意外問題。

  1. 從 AD 中選擇一個域控制器;任何一個域控制器都可以。
  2. 確保 \\contoso.com\SYSVOL\Policies\PolicyDefinitions 存在。如果不存在,現在創建它。
  3. 將管理員計算機上的 C:\Windows\PolicyDefinitions 的內容複製到域控制器上的 \\contoso.com\SYSVOL\Policies\PolicyDefinitions 文件夾中。

創建 GPO

現在讓我們將 LAPS GPO 範本複製到中央存儲 (PolicyDefinitions 文件夾)。

  1. 在您的管理员帐户下打开组策略管理,右键单击要启用LAPS的OU,然后点击链接现有GPO…
Group Policy Management

2. 导航到计算机配置 —> 管理模板 —> LAPS,并将启用本地管理员密码管理设置为已启用。如果对密码复杂度有不同的要求,请相应地编辑密码设置

Linking GPO to all OUs

您已经接近完成了!现在将此GPO链接到您想要使用LAPS的所有OU。

部署LAPS GPO扩展

一旦GPO应用于所有适用的OU中的计算机,您现在需要部署LAPS GPO扩展。您有几种不同的方法可以安装此扩展,可以通过安装MSI(如前所示)或者通过注册LAPS DLL文件来进行。

如果选择安装MSI,在每个LAPS受控OU中的计算机上运行以下命令以启用LAPS。

> msiexec /q /i \\server\share\LAPS.x64.msi

如果选择通过注册DLL来启用LAPS,则可以使用以下命令执行此操作。

> regsvr32.dll \\server\share\AdmPwd.dll

您可以使用任何远程执行工具来在计算机上运行这些命令。

使用GPO部署LAPS MSI

使用GPO是确保LAPS GPO扩展在所有计算机上安装的最简单方法。

  1. LAPS.x64.msi 複製到能被所有網域電腦存取的網路共享資料夾中。
  2. 在管理電腦上開啟 群組原則管理,並建立一個名為 安裝 LAPS 或類似的群組原則對象。
Creating GPO called Install LAPS

3. 按一下右鍵選擇 安裝 LAPS 群組原則對象,選擇 編輯,然後導航到 電腦設定 -> 原則 -> 軟體設定 -> 軟體安裝

LAPS GPO Software Installation

4. 在 軟體安裝 上按一下右鍵,然後導航到 新建 -> 套件…

GPO New Package

5. 導航到你複製 LAPS.x64.msi 的共享資料夾,選擇它,按一下 確定,然後選擇 指定

Assigning LAPS.x64.msi

6. 現在將群組原則對象連結到與你設定 LAPS 的相同 OU 上。現在你已經準備好測試 LAPS 了!

測試 LAPS

為了確保 LAPS 在受控電腦上按設計運作,現在我們將強制其中一台電腦應用前述的群組原則對象,並觀察情況。

  1. 重新啟動位於你剛剛配置的其中一個 OU 下的電腦。重新啟動後,該電腦應該開始安裝 LAPS。
  2. 一旦 LAPS 在電腦上安裝完成,再次重新啟動該電腦,然後以管理員身分在你的管理電腦上打開 PowerShell 終端機,使用一個屬於 LAPS 工作站密碼讀取LAPS 工作站密碼重置 AD 群組的帳戶。
  3. 執行Get-AdmPwdPassword <computername>命令,使用剛剛重新啟動並安裝LAPS的電腦名稱。如果一切順利,您將看到與以下屏幕截圖中的輸出類似的內容。
LAPS Installation Output

4. 現在嘗試使用上面顯示的密碼登入受LAPS控制的電腦。如果成功,您應該能夠登入。
5. 現在嘗試運行Reset-AdmPwdPassword <ComputerName>命令重置密碼,然後重新啟動電腦。請參閱以下屏幕截圖,了解密碼如何更改。

LAPS Password Reset

現在您已經在您的環境中成功使用LAPS。雖然管理相當簡單,但有幾件事情您應該知道…

使用LAPS的技巧和訣竅

儘管上述設置足夠滿足大多數較小的環境,但對於較大的組織來說可能不夠安全,或者不能提供所需的審計級別。以下是在實際環境中使其運作的一些技巧。

1. 啟用審計

審計某人讀取或重置密碼很重要,特別是當您可以將警報連接到它時,如果有人讀取所有計算機的密碼。幸運的是,AdmPwd模塊為我們提供了一個啟用審計的cmdlet。

PS> Set-AdmPwdAuditing -AuditedPrincipals Everyone -OrgUnit "OU=Workstations,DC=contoso,DC=com"

2. 確保沒有用戶能直接讀取ms-mcs-AdmPwd AD屬性

確保用戶無法讀取ms-mcs-AdmPwd AD 屬性的一種方法是創建一種自助服務方法,以獲取計算機的本地管理員密碼。雖然超出了本文的範圍,但如果您沒有適合這個目的的現有自助服務門戶,可以查看像JEAWebJEA這樣的工具。

3. 在磁盤映像期間重置Ms-Mcs-AdmPwdTime 屬性

在重新映像一個受 LAPS 控制的計算機時,必須記得重置Ms-Mcs-AdmPwdTime 屬性,否則不會觸發密碼更改,並且會保留映像中給出的本地管理員密碼。不過,在Ms-Mcs-AdmPwdTime 到期後,它將會觸發密碼更改。

您可以使用以下 PowerShell 命令重置ExpirationTime,而不使用 AdmPwd 模塊:

# 使用 RSAT 
Get-ADComputer Workstation1 | Set-ADObject -Replace @{"ms-mcs-AdmPwdExpirationTime"=(Get-Date)} 

# 不使用 RSAT
$Computer = New-Object DirectoryServices.DirectoryEntry "LDAP://CN=Workstation1,OU=Workstations,DC=contoso,DC=com"
$Computer.'ms-Mcs-AdmPwdExpirationTime'.Clear()
$Computer.CommitChanges()

4. 請記住ms-Mcs-AdmPwd 屬性保留在 AD 回收站中

當您在 AD 中刪除對象並啟用 AD 回收站時,AD 通常會刪除重要屬性;幸運的是,ms-Mcs-AdmPwd 受到保護,不會被刪除!

5. LAPS 不適用於臨時訪問

雖然誘人,LAPS 並不是用來提供臨時訪問供應商、用戶和其他類型帳戶的。與其使用 LAPS,不如使用一個 AD 群組作為特定電腦的本地管理員,並使用 群組成員的存活時間

結論

您已經學會了如何部署 LAPS,設置其權限以及一些使其更安全的技巧。在部署 LAPS 的環境中,本地管理員密碼會定期且自動更改。這大大降低了被黑客或惡意軟件控制的域加入計算機的風險,希望這能為您節省很多麻煩。

如果您有任何問題,請隨時在推特上向我發推 @AlexAsplund 或在下方留言。

Source:
https://adamtheautomator.com/microsoft-laps/