{"id":1006,"date":"2023-04-21T09:14:52","date_gmt":"2023-04-21T09:14:52","guid":{"rendered":"https:\/\/int64software.com\/blog\/?p=1006"},"modified":"2023-04-21T09:14:54","modified_gmt":"2023-04-21T09:14:54","slug":"windows-local-administrator-password-solution-laps-new-and-improved-from-microsoft","status":"publish","type":"post","link":"https:\/\/int64software.com\/blog\/2023\/04\/21\/windows-local-administrator-password-solution-laps-new-and-improved-from-microsoft\/","title":{"rendered":"Windows Local Administrator Password Solution (LAPS) \u2013 New and Improved from Microsoft"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The Windows LAPS Announcement<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On April 11<sup>th<\/sup> 2023, Microsoft announced the release of Windows LAPS, a new and improved version of their Local Administrator Password Solution. The new LAPS is designed to completely supersede the old product and is now delivered by default to compatible devices. You can read the announcement here:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/techcommunity.microsoft.com\/t5\/windows-it-pro-blog\/by-popular-demand-windows-laps-available-now\/ba-p\/3788747\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/techcommunity.microsoft.com\/t5\/windows-it-pro-blog\/by-popular-demand-windows-laps-available-now\/ba-p\/3788747<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As the company behind the popular <a href=\"https:\/\/int64software.com\/overlaps\/\" target=\"_blank\" rel=\"noreferrer noopener\">OVERLAPS for Microsoft LAPS<\/a>, this directly impacts us and our customers. So here\u2019s what you can expect, what we\u2019re doing, and how you can migrate to the new LAPS with the minimum of fuss.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">System Requirements<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The new version of LAPS is now being delivered via Windows Update to the following Operating Systems:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows 11 Pro, EDU and Enterprise<\/li>\n\n\n\n<li>Windows 10 Pro, EDU and Enterprise<\/li>\n\n\n\n<li>Windows Server 2022 and Windows Server Core 2022<\/li>\n\n\n\n<li>Windows Server 2019<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Older devices can continue to run the \u201clegacy\u201d LAPS client as needed, and <a href=\"https:\/\/int64software.com\/overlaps\/\" target=\"_blank\" rel=\"noreferrer noopener\">OVERLAPS<\/a> will continue to support them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In addition to this, to enable the new Password Encryption feature, you need to be running at least Domain Functional Level 2016 or later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Official Documentation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can find Microsoft\u2019s official documentation here:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/learn.microsoft.com\/en-gb\/windows-server\/identity\/laps\/laps-overview\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/learn.microsoft.com\/en-gb\/windows-server\/identity\/laps\/laps-overview<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New Features<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Password Encryption<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One of the biggest complaints we\u2019ve heard against LAPS in the past is that the managed passwords are stored as plain text in Active Directory. Although this is not an issue if you manage your permissions correctly, it is still a concern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To tackle this issue, Windows LAPS now supports encrypting the password in AD. It does this using the extended DPAPI-NG (or CNG DPAPI) library which makes use of Public Key Encryption and AES-256 to encrypt passwords so that they can only be decrypted by specific user or group principals.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The encrypted password is stored in the \u201cmsLAPS-EncryptedPassword\u201d attribute as an Octet String. Be warned that if you\u2019re trying to write a script to read this and decrypt it using the DPAPI-NG API yourself that Microsoft prepend a header to the encrypted binary data (this is not documented anywhere that I can find), and any attempts to decrypt it without removing this header will therefore fail. We\u2019ll write up a post in the future about how to properly deal with this.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Password History<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/int64software.com\/overlaps\/\" target=\"_blank\">OVERLAPS<\/a> already has a Password History feature, and has done for quite some time now, but now the official Windows LAPS has a password history as well. The history is stored alongside the current password using similar techniques to the \u201c<em>msLAPS-EncryptedPassword<\/em>\u201d password attribute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note that there is currently no UI to access the password history, it is only available through the Windows LAPS PowerShell module.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This feature is also only available if you enable Password Encryption, there is no history feature for unencrypted passwords.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Directory Services Restore Mode (DSRM) Password Backup<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In addition to Local Administrator Accounts, Windows LAPS now supports backing up the DSRM account password on Windows Server domain controllers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Automatic Rotation (and other Post Authentication Actions)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Windows LAPS has the ability to automatically reset a Local Administrator account password when it is used to login (either locally, remotely, as a service, etc) to a client device. This can be configured to happen after a specified grace period in order to allow the user to perform the tasks that they required the account for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In addition to this, the policy can be configured to forcefully log the user out after this grace period, or to restart the computer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">New LAPS Tab in Active Directory Users and Computers<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"463\" height=\"528\" src=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/LAPS-tab-not-set.jpg\" alt=\"\" class=\"wp-image-1014\" srcset=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/LAPS-tab-not-set.jpg 463w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/LAPS-tab-not-set-263x300.jpg 263w\" sizes=\"auto, (max-width: 463px) 100vw, 463px\" \/><figcaption class=\"wp-element-caption\">The LAPS Tab in ADUC<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Microsoft have added a new tab to ADUC for viewing and expiring LAPS passwords. This is not compatible with the legacy LAPS attributes however, so if you&#8217;re running in legacy mode or have a hybrid environment then it may not be of much use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Significant Changes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">New AD Schema<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to get an Active Directory Administrator to break out in cold sweats all you have to do is propose making changes to <strong>The Schema<\/strong>. However, anyone familiar with LAPS will have probably done this in the past already, and will know it is actually pretty pain-free. While setting up test environments for both legacy LAPS and the new one, we&#8217;ve probably run through this process hundreds of times, and we have yet to break AD. Of course, that isn&#8217;t on a live environment, and we all know that&#8217;s where things tend to go wrong!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"163\" src=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/attributes-set-by-windows-laps-inc-legacy.jpg\" alt=\"\" class=\"wp-image-1011\" srcset=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/attributes-set-by-windows-laps-inc-legacy.jpg 358w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/attributes-set-by-windows-laps-inc-legacy-300x137.jpg 300w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><figcaption class=\"wp-element-caption\">The Windows LAPS Attributes alongside the Legacy Attributes<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The new Schema attributes added by Windows LAPS are:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">msLAPS-EncryptedDSRMPassword<\/span><br>If enabled, and the computer is a Domain Controller, then this will contain the encrypted DSRM password.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">msLAPS-EncryptedDSRMPasswordHistory<\/span><br>History for the above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">msLAPS-EncryptedPassword<\/span><br>If encryption is enabled, the encrypted password data will be stored here. Again, watch out for the prepended header information in the encrypted data if you\u2019re trying to decrypt this manually.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once decrypted, this has the same JSON format as \u201cmsLAPS-Password\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">msLAPS-EncryptedPasswordHistory<\/span><br>History for the above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">msLAPS-Password<\/span><br>The unencrypted password if encryption isn\u2019t enabled. This is stored in JSON format as shown in the example below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\u201cn\u201d:\u201dAdministrator\u201d,\u201dt\u201d:\u201d1d96ex2d53551ee\u201d,\u201dp\u201d:\u201dpassword\u201d}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Where \u201cn\u201d represents the account name, \u201ct\u201d is the timestamp when the password was updated (in hex format), and \u201cp\u201d is the password.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">msLAPS-PasswordExpirationTime<\/span><br>This is the date and time that the password is set to expire. It is stored as a 64bit integer in Windows File Time format using UTC as the time zone, the same as legacy LAPS did.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">New Group Policy Settings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Microsoft have added a new Administrative Template to Group Policy for managing Windows LAPS. Found under <strong>Computer Configuration -> Administrative Templates -> System -> LAPS<\/strong>, there are some familiar settings from the legacy LAPS Group Policy and some new ones. Fortunately, a lot of the settings \u201cdo what they say on the tin\u201d, and Microsoft have done a top-notch job of providing a decent description for each setting as well, but I&#8217;ll go over each one further down the page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One important note though is that if you are planning on running LAPS in \u201clegacy mode\u201d, which is to say using the new client but the old AD attributes (<em>ms-Mcs-AdmPwd<\/em> and <em>ms-Mcs-AdmPwdExpirationTime<\/em>), then you can do so by continuing to use the legacy policies. If you remove the legacy LAPS client, Windows LAPS will then continue using the old attributes, but if you enable the new policies then Windows LAPS will switch to using the new attributes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">New PowerShell Commands<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Along with the new client, Microsoft have provided a range of new PowerShell cmdlets. Some of them will be familiar to previous LAPS users, but they\u2019ve added a few new ones as well. They have taken the time to document them all at the link below, but I&#8217;ll go over the main ones later in this article:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/learn.microsoft.com\/en-gb\/windows-server\/identity\/laps\/laps-management-powershell\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/learn.microsoft.com\/en-gb\/windows-server\/identity\/laps\/laps-management-powershell<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Microsoft\u2019s Unofficial Guide to Migration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jay Simmons from Microsoft outlined what a migration might look like in the comments of the initial announcement, this is quoted here:<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li>Extend your AD schema with the new Windows LAPS attributes<\/li>\n\n\n\n<li>Add a new local admin account to your managed devices (call it &#8220;LapsAdmin2&#8221;)<\/li>\n\n\n\n<li>Enable the new Windows LAPS policies to target LapsAdmin2.<\/li>\n\n\n\n<li>Run Windows LAPS and legacy LAPS side-by-side for as long as needed to gain confidence in the solution (and also update IT worker\\helpdesk procedures, monitoring software, etc). Note you will have two (2) separately managed local managed accounts that you may choose to use during this time.<\/li>\n\n\n\n<li>Once happy, remove the legacy LAPS CSE from your managed devices.<\/li>\n\n\n\n<li>Delete the original LapsAdmin account.<\/li>\n\n\n\n<li>(Optionally), purge the now defunct legacy LAPS policy registry entries.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Questions and Answers<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What happens when the update is installed?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on your IT policies, you may already have the update. When the Windows LAPS client is installed, it behaves differently depending on your setup:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">I have never installed LAPS.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Windows LAPS will lie dormant, and not impact your environment at all until you enable it.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">I have legacy LAPS clients installed.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The new LAPS client will detect the legacy one and allow it to continue working as normal. The only thing to watch out for is that there is a bug in the new LAPS where both clients could break if the legacy one is installed after the Windows LAPS update. Microsoft are aware of this and have promised to fix it next month.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the legacy client is installed you should see Event 10033 in the Windows LAPS event logs:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201c<em>The machine is configured with legacy LAPS policy settings but a legacy LAPS product appears to be installed. The configured account\u2019s password will not be managed by Windows until the legacy product is uninstalled. Alternatively you may consider configuring the newer LAPS policy settings.<\/em>\u201d<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"866\" height=\"166\" src=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/event-10033-LegacyLAPS-1.jpg\" alt=\"\" class=\"wp-image-1018\" srcset=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/event-10033-LegacyLAPS-1.jpg 866w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/event-10033-LegacyLAPS-1-300x58.jpg 300w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/event-10033-LegacyLAPS-1-768x147.jpg 768w\" sizes=\"auto, (max-width: 866px) 100vw, 866px\" \/><figcaption class=\"wp-element-caption\">Event 10033 when the legacy LAPS client is still installed.<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">I have uninstalled the Legacy LAPS client, have left the its policies in place, and haven\u2019t enabled the new LAPS policies.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The new Windows LAPS client will take over management of the client using the legacy LAPS policies, and will continue to store passwords in the old attributes (<em>ms-Mcs-AdmPwd<\/em> and <em>ms-Mcs-AdmPwdExpirationTime<\/em>).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">I have never installed LAPS, or I have uninstalled the LAPS client. Now I have enabled the new LAPS policies.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The new Windows LAPS client will take over management of the device, storing the password and additional data in the new attributes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I activate Windows LAPS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Windows LAPS is activated by enabling the \u201c<em>Configure password backup directory<\/em>\u201d Group Policy setting and changing the \u201c<em>Backup directory<\/em>\u201d to either <em>Azure Active Directory<\/em> or <em>Active Directory<\/em> depending on whether the device is a member of an Azure domain or a local one respectively.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I update the AD Schema?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Updating the schema is done within PowerShell running as a user who is a member of the Schema Admins group. The command is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Update-LapsADSchema<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should get a message that the operation was successful, and checking any computer object will now show the additional attributes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note that according to Microsoft\u2019s documentation, doing this is a \u201cone-time operation for the entire forest\u201d, so you don\u2019t need to update the schema on each domain in your forest.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I Configure the AD Permissions?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As with Legacy LAPS, there are three permissions you need to worry about:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201cSelf\u201d permissions for the computer so that they can check and update their password expiry time, and so that they can update the password when a new one is generated.<\/li>\n\n\n\n<li>Read permissions for the passwords and expiration time attributes for any users who you want to be able to read the Local Admin passwords.<\/li>\n\n\n\n<li>Write permissions to the expiration time for any users that you want to be able to configure a password reset.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For the latter two, our guidance has always been to grant the permissions to two Security Groups (we always use <em>LAPSReaders <\/em>and <em>LAPSWriters<\/em>, but you can name them whatever you want), because then managing the members and therefore the permissions is a lot easier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019re using <a href=\"https:\/\/int64software.com\/overlaps\/\" data-type=\"URL\" data-id=\"https:\/\/int64software.com\/overlaps\/\" target=\"_blank\" rel=\"noreferrer noopener\">OVERLAPS<\/a>, it\u2019s important to remember to add the server\u2019s computer object to these groups to make sure it has permission to read and expire the passwords.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The relevant PowerShell commands for updating permissions are shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Set-LapsADComputerSelfPermission -Identity &lt;OU Name&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this PowerShell command with the name of an OU to grant computers their Self permissions. Note that the \u201c&lt;OU Name>\u201d can be just the name of an OU, or the FQDN. If using the short name and a conflict is found (two containers with the same name) the script will warn you and not make any changes to the permissions.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Find-LapsADExtendedRights -Identity &lt;OU Name&gt;<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"79\" src=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/ps-find-lapsadextendedrights.jpg\" alt=\"\" class=\"wp-image-1013\" srcset=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/ps-find-lapsadextendedrights.jpg 712w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/ps-find-lapsadextendedrights-300x33.jpg 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><figcaption class=\"wp-element-caption\">Find-LapsADExtendedRights Output<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Shows users and groups that have extended rights to the OU. This should only show NT AUTHORITY\\SYSTEM, Domain Admins, and any users or groups you have specifically granted permission to. If it finds any others then they should be removed before enabling LAPS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Set-LapsADReadPasswordPermission -Identity &lt;OU Name&gt; -AllowedPrincipals &lt;User\\Group Name&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Grants Read permissions to the password and password expiration time attributes. This includes the encrypted password attribute, but the user will only be able to decrypt it if they are an authorized decryptor (see below when we discuss Group Policy).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The user or group name can be given by name, SID, or as an array of principals. For more information, see Microsoft\u2019s official documentation.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Set-LapsADResetPasswordPermission -Identity &lt;OU Name&gt; -AllowedPrincipals &lt;User\\Group Name&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As above, but this grants permission to set the password expiration time attribute.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Get-LapsDiagnostics \u2013OutputFolder &lt;folder><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This produces a zipped analysis of your LAPS setup, identifying any potential problems or mis-configurations. You can also optionally use \u201c-ResetPassword\u201d to perform a diagnostic across a forced password reset operation, or \u201c-CollectNetworkTrace\u201d which will also collect network tracing information.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I configure Group Policy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Some of the Group Policy settings you\u2019ll recognise from the legacy LAPS settings, and some will be new. Be wary that although some of the settings may be familiar, there may be changes to the wording or the way they work, so it makes sense to take the time to check each setting before enabling the policy.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"405\" height=\"202\" src=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/gpo-list-laps.jpg\" alt=\"\" class=\"wp-image-1012\" srcset=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/gpo-list-laps.jpg 405w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/gpo-list-laps-300x150.jpg 300w\" sizes=\"auto, (max-width: 405px) 100vw, 405px\" \/><figcaption class=\"wp-element-caption\">Windows LAPS Group Policy Settings<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">Enable password backup for DSRM accounts<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">As the name states, this enables the DSRM password management and backup. This only applies to Domain Controllers, and only if Password Encryption is enabled. It is disabled by default.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure size of encrypted password history<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Allows you to specify between 0 and 12 previous passwords to be backed up to Active Directory. Only works if Password Encryption is enabled. This is also disabled by default.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Enable password encryption<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">If you have configured the Group Policy to backup passwords to Active Directory (not Azure AD), and your DFL is at Windows Server 2016 or above, then this will instruct clients to encrypt the password when writing it to Active Directory. Encryption is handled by the DPAPI-NG API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important Note: <\/strong>Password encryption is enabled by default if Windows LAPS is enabled! As mentioned below, this means that by default only Domain Admins will be able to retrieve the passwords.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure authorized password decryptors<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Allows you to specify a user or group who will be allowed to decrypt encrypted Local Administrator passwords stored in Active Directory. If this setting is disabled or not configured, it will default to the Domain Admins group.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We recommend setting up a specific security group for this (to limit the use of the Domain Admins group) and remember that if you\u2019re using <a href=\"https:\/\/int64software.com\/overlaps\/\" target=\"_blank\" rel=\"noreferrer noopener\">OVERLAPS<\/a> then adding its server object to the group will allow it to read the encrypted passwords.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whenever you change this setting, any currently encrypted passwords will still only be accessible by the user(s) in the previous setting until a password reset operation occurs. It seems that the new LAPS client is smart enough to detect changes in the policy and initiate this process itself however, but that won&#8217;t happen until a GP update occurs.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Name of administrator account to manage<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">If you are using a different administrator account to Local Administrator, you can specify it in this policy setting. Note though that if you have just renamed the Administrator account you shouldn&#8217;t specify it here as LAPS will use the well-known SID instead.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure password backup directory<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">This is the main on\\off switch for Windows LAPS. Setting this to Active Directory or Azure Active Directory will enable LAPS managing local administrator passwords on the computers targeted by the GPO.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Do not allow password expiration time longer than required by policy<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Enabling this policy prevents users from setting an expiration time beyond what would normally be set to by default. So, for example, if your policy states that the password should be reset every 30 days, then you couldn\u2019t set it to 60 days in the future. (Or rather that\u2019s the principal, in fact if you do set it beyond the limit with this policy enabled, the client will instead immediately reset the password and set the normal expiry date.)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Password Settings<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Identical to the legacy LAPS password settings policy. Use this to specify the complexity and length of generated passwords, and the frequency which it should reset.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Post-authentication actions<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Allows you to specify an action that will occur after a grace period (in hours). Available actions are: Reset the password, Reset the password and logoff the managed account, and Reset the password and reboot the device.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If this setting is not configured, it will default to reset and logoff after 24 hours.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I remove the Legacy LAPS Schema Changes?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Legacy LAPS AD schema changes (<em>ms-Mcs-AdmPwd<\/em> and <em>ms-Mcs-AdmPwdExpirationTime<\/em>) are here to stay if you already added them I\u2019m afraid:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">No way to remove those extensions AFAIK &#8211; but this is a long-standing AD limitation, not something specific to LAPS.\u00a0\u00a0 AD does offer a &#8220;schema defunction&#8221; feature (<a href=\"https:\/\/learn.microsoft.com\/en-gb\/windows\/win32\/ad\/disabling-existing-classes-and-attributes\" data-type=\"URL\" data-id=\"https:\/\/learn.microsoft.com\/en-gb\/windows\/win32\/ad\/disabling-existing-classes-and-attributes\" target=\"_blank\" rel=\"noreferrer noopener\">see here<\/a>), but honestly I would not be in any hurry to defunct the AdmPwd\\legacy LAPS attributes.<\/p>\n<cite>Jay Simmons, Microsoft<\/cite><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">How do I manage the Group Policy settings from a version of Windows Server older than 2019<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you have an older server that you want to manage the Group Policy settings from, you can copy \u201c%windir%\\PolicyDefinitions\\LAPS.admx\u201d file from any new server. You\u2019ll also need to copy the \u201cLAPS.adml\u201d file for your language as well, for example: \u201c%windir%\\Policydefinitions\\en-us\\LAPS.adml\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OVERLAPS Support for Windows LAPS<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"225\" src=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/small-header.png\" alt=\"\" class=\"wp-image-1028\" srcset=\"https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/small-header.png 800w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/small-header-300x84.png 300w, https:\/\/int64software.com\/blog\/wp-content\/uploads\/2023\/04\/small-header-768x216.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You\u2019ll be happy to hear that we\u2019ve already completed work on adding support to OVERLAPS, and an update should be out at about the same time as this article is published.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Passwords are now retrieved on an order of priority, so first it checks if an encrypted password has been set and retrieves and decrypts it if it has, failing that it\u2019ll check for an unencrypted Windows LAPS password, and failing that it\u2019ll finally check for a Legacy LAPS password.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We haven\u2019t yet implemented support for the Password History feature as we already have our own solution for this built into OVERLAPS. However, we have added a work item to add support as we are happy to give our customers the option to use either (or both!).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately we&#8217;re in the process of transitioning to a new documentation system at the moment which will make it much easier for us to update it in the future, but this has had to be put on hold while we worked on this patch, so it may take some time before our official documentation reflects this information accurately. We apologise for any confusion this may cause, and ask your patience while we carry out this work.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Steps to take when installing the update<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ve tried to make the migration for OVERLAPS as painless as possible, however there are a few things you&#8217;ll need to do to install the update and enable support for the new Windows LAPS:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>OVERLAPS 3.2 now requires the <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/download\/dotnet-framework\/net48\" target=\"_blank\" rel=\"noreferrer noopener\">.NET Framework runtime version 4.8<\/a> to be installed on the server.<\/li>\n\n\n\n<li>Setup your permissions to allow OVERLAPS access to read passwords and expiry times, and set expiry times if you want to use it to reset passwords. If you already use groups to do this, you just need to add the OVERLAPS server to the group.<\/li>\n\n\n\n<li>If you&#8217;re using Password Encryption then it is best to use a group for the &#8220;Configure authorized password decryptors&#8221; Group Policy setting, then add the OVERLAPS server to that group so that it can decrypt the passwords.<\/li>\n\n\n\n<li>Install the <a href=\"https:\/\/int64software.com\/overlaps\/my-account\/\" target=\"_blank\" rel=\"noreferrer noopener\">OVERLAPS 3.2 update<\/a>.<\/li>\n\n\n\n<li>Sit back and enjoy a nice cup of tea (or your beverage of choice), your job is done!<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The Windows LAPS Announcement On April 11th 2023, Microsoft announced the release of Windows LAPS, a new and improved version of their Local Administrator Password Solution. The new LAPS is designed to completely supersede the old product and is now delivered by default to compatible devices. You can read the announcement here: https:\/\/techcommunity.microsoft.com\/t5\/windows-it-pro-blog\/by-popular-demand-windows-laps-available-now\/ba-p\/3788747 As&#8230;<\/p>\n","protected":false},"author":2,"featured_media":1026,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[47],"tags":[26,48,20,9,8,11],"class_list":["post-1006","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-laps","tag-active-directory","tag-microsoft-laps","tag-overlaps","tag-security","tag-tutorial","tag-update"],"_links":{"self":[{"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/posts\/1006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/comments?post=1006"}],"version-history":[{"count":8,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/posts\/1006\/revisions"}],"predecessor-version":[{"id":1029,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/posts\/1006\/revisions\/1029"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/media\/1026"}],"wp:attachment":[{"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/media?parent=1006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/categories?post=1006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/int64software.com\/blog\/wp-json\/wp\/v2\/tags?post=1006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}