Microsoft LAPSでWindows管理者パスワードを安全にする

現在、Windowsのローカル管理者パスワードをどのように処理していますか?すべてのWindowsシステムにはそれぞれ1つの管理者パスワードがあり、各PCのキングダムの鍵を持っています。ローカル管理者パスワードはActive Directory(AD)の一部ではないため、各コンピューターのアカウントを個別に管理する必要があります。これは手間です。

多くの場合、組織はあまり重要視せず、各Windowsマシンに標準の管理者パスワードを設定するだけです。この慣行は便利ですが、その一つのマスターパスワードが誤った手に渡ると、組織はより大きな問題に直面する可能性があります。各コンピューターに別々のローカル管理者パスワードを設定することは、悪意のある個人が1つのPCにアクセスすることを必ずしも防ぎませんが、他のPCへの横断的な攻撃をかなり防ぎます。

Microsoft Local Administrator Password Solution(LAPS)はその助けになります。

この記事では、LAPSを設定して、ADに参加したコンピューターをセキュアにする方法を学びます。

Microsoft LAPSとは何か?

LAPSはWindows環境を安全に保つための重要なツールです。LAPSは巧妙な方法で動作し、LAPSが有効になっているすべてのドメインコンピューターのローカル管理者パスワードを自動的に乱数化し、定期的にパスワードを変更します。

LAPSは、ドメイン全体にわたってランダムなローカル管理者パスワードを確保し、ハッカーやマルウェアによる横方向の移動を防止します。おそらく、クライアントの長いローカル管理者パスワードがこれを防ぐことができると思うかもしれませんが、それは真実ではありません

ハッカーは「Pass-The-Hash」という方法を使用してドメイン全体に急速に広がり、同じ方法を使用してドメイン管理者の資格情報にもたどり着くかもしれません。LAPSは、悪意のある個人が各個のマシンのパスワードを見つける必要があるため、このような活動を防止します。

実践におけるLAPS

LAPSには3つの主要なパーツがあります:

ロックダウンされた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. LAPSが使用する2つのカスタムAD属性を追加するためにADスキーマを拡張する。
  3. AD内のさまざまなコンポーネントに適切な権限を設定する。
  4. Windowsコンピュータに適用されるLAPS GPOを作成する。
  5. 適用可能なWindowsコンピュータにLAPS GPO拡張機能を展開する。

上記の手順を完了すると、完全に機能する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拡張機能を選択してください。

Click Management Tools

3.  インストールが完了し、インストーラーを終了するまで次へをクリックします。

これで、LAPS GPO拡張機能(選択した場合)とその管理ツールがインストールされましたので、ADスキーマを拡張し、GPOを追加する準備ができました。

ADスキーマの拡張

先ほど説明したように、LAPSはms-Mcs-AdmPwdms-Mcs-AdmPwdExpirationTimeという2つのAD属性を使用します。これらの2つの属性はデフォルトではありませんので、ADスキーマに追加する必要があります。

  1. Domain Admins グループのメンバーを Schema Admins グループに追加します(アカウントがまだメンバーでない場合)。このアカウントを「管理者アカウント」と呼びます。
  2. 管理者アカウントとして PowerShell を開始し、Import-module AdmPwd.PS を実行して AdmPwd PowerShell モジュールをインポートします。
  3. モジュールがインポートされたら、コマンド Update-AdmPwdADSchema を実行して AD スキーマを更新し、2つの AD 属性を追加します。出力は次のスクリーンショットで確認できます。
Powershell Admin Account

これで、AD スキーマを拡張して LAPS をサポートし、Active Directory での権限設定に備える準備が整いました。

Active Directory の権限設定の構成

各コンピュータは、ローカル管理者パスワードと有効期限の AD 属性を更新できる必要があります。それには、各コンピュータが ms-Mcs-AdmPwd および ms-Mcs-AdmPwdExpirationTime の AD 属性に対して自己書き込み権限を持つ必要があります。幸い、AdmPwd PowerShell モジュールを使用することで、ほとんどの作業は簡単に行うことができます。

コンピュータがパスワードを保存し、パスワードの有効期限が ms-Mcs-AdmPwdExpirationTime の AD 属性に更新できるようにする

まず、各コンピュータが ms-Mcs-AdmPwd の AD 属性にパスワードを保存し、そのパスワードの有効期限を更新できるようにします。AdPwd PowerShell モジュールには、組織単位(OU)ごとにこれらの権限を設定するための Set-AdmPwdComputerSelfPermission というコマンドがあります。このコマンドは、すべての子OUに適用されます。

PowerShellで、Set-AdmPwdComputerSelfPermission -OrgUnit ‘OU=Workstations,DC=contoso,DC=com’を実行します。特定のOUとドメイン名を更新してください。

Update OU and Domain Name

LAPSが他のOUを制御する場合は、上記のコマンドをAD内の各OUに対して繰り返してください。

拡張権限を見つけることでAD属性を制限する

各コンピューターのローカル管理者パスワードを読み取りおよびリセットする権限を持つユーザーとグループのみがアクセスできるようにするために、アクセス権限を監査する必要があります。具体的には、「拡張権限」が必要なアカウントのみがそれを持っていることを確認する必要があります。

拡張権限を持つアカウントを見つけるには、Find-AdmPwdExtendedRights -OrgUnit 'OU=Workstations,DC=contoso,DC=com' | Select -ExpandProperty ExtendedRightHoldersを実行します。OUとドメイン名を置き換えてください。

次のスクリーンショットでは、CONTOSO\joe-the-adminCONTOSO\MDT-serviceWorkstations OUに対して拡張権限を持っていることが確認できます。

Workstations OU

MDT-serviceの権限には確かに拡張権限が必要ですが、joe-the-adminには必要ありません。したがって、joe-the-adminの権限を削除する必要があります。

以前の手順で自己書き込み権限を設定したすべてのOUに対して、この手順を繰り返す必要があります。

拡張権限の削除

拡張権限を削除するアカウントを特定したら、実際に削除する時が来ました。

  1. Active Directory Users And Computersを開き、上部のメニューで表示をクリックし、高度な機能が有効になっていることを確認してください。高度な機能を有効にすると、通常非表示のOUが表示されます。次のスクリーンショットに示すようになります。
Hidden OUs

2. 削除したいOUを右クリックし、プロパティをクリックします。

Right Click OU to Remove

3. セキュリティタブをクリックし、高度ボタンをクリックします。
4. 拡張権限を削除したいアカウントまたはグループを見つけ、選択して削除をクリックして削除します。

Security Tab for Account Removal

5. 必要に応じて、すべての拡張権限を持つ主体に対してこれらの手順を繰り返します。

ローカル管理者パスワードの読み取りとリセットの権限を付与する

適切なアカウントのみが拡張権限を持つことを確認したので、LAPS Workstations Password ReadLAPS Workstations Password Resetという2つのADグループを作成する必要があります。

ここで指定されているグループ名は必須ではありません。任意のグループ名を使用することができます。

管理者アカウントで開いたままのPowerShellコンソールに、次のコマンドを入力してWorkstations OU内のコンピュータのローカル管理者パスワードを読み取る権限とリセットする権限を両方のADグループに与えます。

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グループに、Workstations OU内のコンピュータのローカル管理者パスワードを読み取りおよびリセットする権限を付与しました。次に、パスワードを読み取るかリセットするために必要な管理者またはグループを追加する必要があります。

Group Policyテンプレートのための中央ストアの作成

コンピュータにインストールされたLAPSが自動的に有効になるようにするために、まずPolicyDefinitionストアにGroup Policyテンプレートをインポートしてグループポリシーを作成します。 PolicyDefinitionストアは、すべてのドメインコントローラーに存在するフォルダです。

ドメインコントローラーを対象とするLAPS GPOを有効にしないでください。サポートされていないため、予期しない問題が発生する可能性があります。

  1. AD内のドメインコントローラーを選択します。どのドメインコントローラーでも構いません。
  2. \\contoso.com\SYSVOL\Policies\PolicyDefinitionsが存在することを確認します。存在しない場合は、作成してください。
  3. C:\Windows\PolicyDefinitionsの内容を管理者コンピューター(LAPSがインストールされているコンピューター)上の\\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拡張の展開

適用可能なすべてのOUにGPOが適用されると、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を展開する

LAPS GPO拡張がすべてのコンピューターにインストールされることを確実にするために、GPOを使用するのが最も簡単な方法です。

  1. すべてのドメインコンピュータからアクセス可能なネットワーク共有に LAPS.x64.msi をコピーします。
  2. 管理コンピュータで グループポリシーマネージメント を開き、「Install LAPS」などと呼ばれる GPO を作成します。
Creating GPO called Install LAPS

3. 「Install LAPS」GPO を右クリックし、編集 をクリックし、コンピュータの構成 —> ポリシー —> ソフトウェアの設定 —> ソフトウェアのインストール に移動します。

LAPS GPO Software Installation

4. ソフトウェアのインストール を右クリックし、新規作成—> パッケージ… に移動します。

GPO New Package

5. LAPS.x64.msi をコピーした共有に移動し、選択し、OK をクリックして 割り当て を選択します。

Assigning LAPS.x64.msi

6. これで LAPS の設定を行った OU に GPO をリンクします。これで LAPS のテストの準備が整いました!

LAPS のテスト

制御されたコンピュータ上で LAPS が設計通り動作していることを確認するために、上記の GPO を適用するためにコンピュータを再起動し、その動作を確認します。

  1. 設定した OU のいずれかに属するコンピュータを再起動します。再起動後、コンピュータは LAPS のインストールを開始するはずです。
  2. LAPS がコンピュータにインストールされたら、再びコンピュータを再起動し、管理者としての PowerShell コンソールを開きます。この際、LAPS Workstation Password Read および LAPS Workstation Password Reset AD グループのメンバーであるアカウントを使用します。
  3. Get-AdmPwdPassword <コンピュータ名>コマンドを実行して、再起動してLAPSをインストールしたコンピュータ名を使用します。すべてがうまくいけば、以下のスクリーンショットの出力に似たものが表示されます。
LAPS Installation Output

4.  表示されたパスワードを使用して、LAPSで制御されるコンピュータにログインしてみてください。うまくいけば、ログインできるはずです。
5.  Reset-AdmPwdPassword <コンピュータ名>を実行し、コンピュータを再起動してパスワードをリセットしてみてください。以下のスクリーンショットでパスワードが変更されたことがわかりますか?

LAPS Password Reset

これで環境でLAPSが動作するようになりました。管理は非常に簡単ですが、いくつか知っておくべきことがあります。

実際にLAPSを使用するためのヒントとトリック

上記の設定は、ほとんどの小規模環境には十分ですが、大規模な組織にはセキュリティが不十分であるか、必要な監査レベルを提供していない場合があります。実世界での動作に必要ないくつかのヒントをご紹介します。

1. 監査をオンにする

パスワードを読み取るまたはリセットするときの監査は重要です。特に、誰かがすべてのコンピュータのパスワードを読み取った場合にアラームを設定できる場合はさらに重要です。幸いなことに、AdmPwdモジュールにはそれを有効にするためのコマンドレットが用意されています。

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の期限が切れると、トリガーされます。

AdmPwd モジュールを使用せずに ExpirationTime をリセットするための次の PowerShell コマンドを使用できます。

# 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グループを使用し、グループメンバーシップのTimeToLiveを使用してください。

結論

LAPSの展開方法、アクセス許可の設定、セキュリティ向上のためのヒントとトリックについて学びました。LAPSが展開されている環境では、ローカル管理者パスワードが定期的に自動的に変更されます。これにより、ドメインに参加しているコンピュータがハッカーやマルウェアに乗っ取られるリスクが大幅に減少し、頭痛の種から救われることを願っています。

ご質問がありましたら、@AlexAsplundまでツイートしていただくか、以下にコメントを残してください。

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