Zaktualizowano 6 min czytania

LAPS: unikalne hasło lokalnego administratora na każdej maszynie

To samo hasło lokalnego administratora na wszystkich stacjach z jednego obrazu to otwarta droga od pierwszej zainfekowanej maszyny do pozostałych. Windows LAPS rozwiązuje to bez dodatkowych licencji, a kilka zapytań pokazuje, czy ochrona obejmuje całą flotę.

Rys. 1. Hasło powstaje na urządzeniu i trafia do katalogu zaszyfrowane; każdy odczyt zostawia ślad w audycie, a każde użycie kończy się automatyczną zmianą hasła.

Analiza incydentu pokazuje, że napastnik w ciągu jednego popołudnia przeszedł z zainfekowanego laptopa na kilkadziesiąt innych komputerów. Nie łamał haseł. Wszystkie stacje przygotowano z tego samego obrazu, z tym samym hasłem lokalnego administratora, więc wystarczyło odczytać jego skrót na pierwszej maszynie i użyć go na pozostałych.

Windows LAPS usuwa ten problem: każda maszyna ma własne, losowe hasło, zmieniane automatycznie i przechowywane w katalogu w postaci zaszyfrowanej. Wdrożenie zajmuje jedno popołudnie, a utrzymanie sprowadza się do kilku zapytań uruchamianych raz w miesiącu.

Czym jest Windows LAPS

Windows LAPS (Local Administrator Password Solution) jest wbudowany w Windows 10, Windows 11 oraz Windows Server 2019 i nowsze, z aktualizacjami od kwietnia 2023. Na każdej maszynie generuje losowe hasło wskazanego konta lokalnego, rotuje je według harmonogramu i zapisuje kopię w Active Directory albo w Microsoft Entra ID. Osoby z nadanym uprawnieniem mogą odczytać aktualne hasło konkretnej maszyny, gdy jest potrzebne.

Starsza wersja, instalowana osobno jako pakiet MSI z rozszerzeniem zasad grupy, jest wycofywana. Nowe wdrożenia powinny używać wersji wbudowanej, która dodaje szyfrowanie hasła w katalogu, historię haseł i akcje po użyciu konta.

Wdrożenie w Active Directory

Przygotowanie katalogu to trzy polecenia z modułu LAPS: rozszerzenie schematu, prawo zapisu dla komputerów i prawo odczytu dla wybranej grupy. Uprawnienia nadaje się osobno dla każdej jednostki organizacyjnej z komputerami.

Import-Module LAPS
# Jednorazowo, z konta członka Schema Admins
Update-LapsADSchema
$ou = 'OU=Stacje,OU=Komputery,DC=corp,DC=example,DC=com'
# Komputery w tej OU mogą zapisywać własne hasło
Set-LapsADComputerSelfPermission -Identity $ou
# Odczyt haseł tylko dla grupy wsparcia stacji
Set-LapsADReadPasswordPermission -Identity $ou -AllowedPrincipals 'CORP\GG-LAPS-Readers'

Audyt odczytu włącza Set-LapsADAuditing z parametrem -AuditedPrincipals, wskazującym, czyje odczyty mają być zapisywane. Zdarzenia trafiają do dziennika zabezpieczeń kontrolerów domeny, pod warunkiem że zasady audytu włączają inspekcję dostępu do usług katalogowych.

Zachowanie maszyn określa zasada grupy w ścieżce Konfiguracja komputera › Zasady › Szablony administracyjne › System › LAPS.

Ustawienie (konsola angielska)Wartość dla stacji roboczych
Configure password backup directoryActive Directory
Password Settingsduże i małe litery, cyfry, znaki specjalne; długość 20; wiek 30 dni
Name of administrator account to managenieustawione, czyli wbudowane konto Administrator
Enable password encryptionEnabled
Configure authorized password decryptorsCORP\GG-LAPS-Readers
Configure size of encrypted password history3
Post-authentication actionsreset hasła i wylogowanie, okres karencji 8 godzin
Do not allow password expiration time longer than required by policyEnabled

Kto może odczytać hasło

Uprawnienie do odczytu jest równoważne uprawnieniu administratora na danej maszynie, więc nadaje się je zgodnie z modelem warstw:

  • pracownicy wsparcia odczytują hasła stacji roboczych, ale nie serwerów,
  • administratorzy serwerów odczytują hasła serwerów aplikacji, ale nie kontrolerów domeny,
  • hasła maszyn warstwy 0 odczytują wyłącznie administratorzy warstwy 0.

W praktyce oznacza to osobną jednostkę organizacyjną i osobną zasadę grupy dla każdej warstwy, bo lista uprawnionych do odszyfrowania jest ustawieniem zasady, a nie jednostki.

Odczyt hasła i akcje po użyciu

Hasło konkretnej maszyny odczytuje się poleceniem Get-LapsADPassword albo na karcie LAPS we właściwościach obiektu komputera w konsoli użytkowników i komputerów.

Get-LapsADPassword -Identity PC-0142 -AsPlainText
ComputerName        : PC-0142
DistinguishedName   : CN=PC-0142,OU=Stacje,OU=Komputery,DC=corp,DC=example,DC=com
Account             : Administrator
Password            : (hasło)
PasswordUpdateTime  : 2026-10-02 07:14:31
ExpirationTimestamp : 2026-11-01 07:14:31
Source              : EncryptedPassword
DecryptionStatus    : Success
AuthorizedDecryptor : CORP\GG-LAPS-Readers

Gdy maszyna nie zapisuje hasła

Maszyna przetwarza zasady LAPS co godzinę i każdą próbę opisuje w dzienniku Microsoft-Windows-LAPS/Operational. Większość problemów ma jedną z kilku przyczyn.

ObjawNajczęstsza przyczyna
Aktywny komputer bez wartości msLAPS-PasswordExpirationTimezasada nie obejmuje jego OU albo filtr zabezpieczeń GPO go pomija
Błąd zapisu do katalogu w dzienniku LAPSbrak Set-LapsADComputerSelfPermission dla OU, w której leży komputer
Hasło przeterminowane od tygodnimaszyna wyłączona albo poza siecią, bez kontaktu z kontrolerem domeny
Wsparcie widzi obiekt, ale nie hasłogrupa ma prawo odczytu, ale nie jest uprawniona do odszyfrowania
Hasło w atrybucie ms-Mcs-AdmPwd zamiast nowychkonto nadal obsługuje starsza wersja LAPS

Na samej maszynie diagnostyka zaczyna się od dziennika, a po usunięciu przyczyny można wymusić natychmiastowe przetworzenie zasad, zamiast czekać na kolejny cykl. Reset-LapsPassword zmienia hasło od razu, co przydaje się po incydencie na tej maszynie. Z serwera, bez logowania na komputer, to samo uzyskuje się przez Set-LapsADPasswordExpirationTime -Identity PC-0142: hasło zmieni się w najbliższym cyklu przetwarzania.

# Ostatnie błędy i ostrzeżenia LAPS
Get-WinEvent -FilterHashtable @{ LogName = 'Microsoft-Windows-LAPS/Operational'; Level = 2, 3 } -MaxEvents 20 |
    Select-Object TimeCreated, Id, Message
# Natychmiastowe przetworzenie zasad LAPS
Invoke-LapsPolicyProcessing
# Natychmiastowa zmiana hasła zarządzanego konta
Reset-LapsPassword

Uzupełnienia

  • Blokada logowania sieciowego kontami lokalnymi. Prawo „Deny access to this computer from the network” z identyfikatorem S-1-5-114 (konto lokalne i członek grupy Administratorzy) sprawia, że nawet znane hasło lokalne nie pozwala na logowanie przez sieć. Lokalny administrator służy do pracy przy konsoli, gdy maszyna straciła kontakt z domeną.
  • Kontrolery domeny. Ustawienie „Enable password backup for DSRM accounts” pozwala LAPS zarządzać hasłem trybu przywracania usług katalogowych. To hasło jest potrzebne przy odtwarzaniu katalogu, więc jego automatyczna kopia ma realną wartość.
  • Migracja ze starszej wersji. Obie wersje nie mogą zarządzać tym samym kontem jednocześnie. Przejście planuje się per jednostka organizacyjna: nowa zasada włączona, stara wyłączona, weryfikacja, że maszyny zapisują hasła w atrybutach msLAPS-*.

Sprawdź u siebie

Aktywne komputery bez hasła LAPS. Dobry wynik jest pusty. Komputer z niedawną datą LastLogonDate na tej liście to realna luka; komputer, który nie logował się od miesięcy, to kandydat do porządków w katalogu, a nie do naprawy LAPS.

$searchBase = 'OU=Komputery,DC=corp,DC=example,DC=com'
Get-ADComputer -SearchBase $searchBase -Filter 'Enabled -eq $true' -Properties 'msLAPS-PasswordExpirationTime', LastLogonDate, OperatingSystem |
    Where-Object { -not $_.'msLAPS-PasswordExpirationTime' } |
    Sort-Object LastLogonDate -Descending |
    Select-Object Name, OperatingSystem, LastLogonDate

Hasła przeterminowane od ponad 7 dni. Maszyna z kontaktem z kontrolerem domeny zmienia hasło w ciągu godziny od wygaśnięcia, więc każda pozycja oznacza komputer poza siecią albo z błędem widocznym w dzienniku LAPS.

$searchBase = 'OU=Komputery,DC=corp,DC=example,DC=com'
$limit = (Get-Date).AddDays(-7).ToFileTimeUtc()
Get-ADComputer -SearchBase $searchBase -Filter 'Enabled -eq $true' -Properties 'msLAPS-PasswordExpirationTime' |
    Where-Object { $_.'msLAPS-PasswordExpirationTime' -and $_.'msLAPS-PasswordExpirationTime' -lt $limit } |
    Select-Object Name, @{ n = 'Wygasło'; e = { [datetime]::FromFileTimeUtc($_.'msLAPS-PasswordExpirationTime') } }

Kto ma prawo odczytu haseł w danej jednostce organizacyjnej. Lista powinna zawierać tylko NT AUTHORITY\SYSTEM, Domain Admins i grupę odczytu tej warstwy. Każda inna pozycja, na przykład konto narzędzia inwentaryzacyjnego albo dawna grupa wsparcia, ma pełny dostęp administracyjny do wszystkich maszyn w tej OU.

Find-LapsADExtendedRights -Identity 'OU=Stacje,OU=Komputery,DC=corp,DC=example,DC=com'