LAPS ile Yerel Yönetici Şifresi Yönetimi
Kurumsal ortamlarda en sık karşılaşılan güvenlik açıklarından biri, tüm bilgisayarlarda aynı yerel yönetici şifresinin kullanılmasıdır. Bir saldırgan tek bir makineden bu şifreyi ele geçirdiğinde, ağdaki yüzlerce sisteme erişim kazanabilir. Microsoft’un Local Administrator Password Solution (LAPS) aracı, tam da bu problemi çözmek için tasarlanmıştır. Her makinede benzersiz, otomatik olarak değişen yerel yönetici şifreleri yönetmek artık çok daha kolay.
LAPS Nedir ve Neden Kullanmalısınız?
LAPS, Active Directory ortamlarında yerel yönetici hesabının şifresini her bilgisayar için ayrı ayrı, otomatik olarak yöneten ücretsiz bir Microsoft çözümüdür. Şifreler Active Directory’de bilgisayar nesnelerinin özelliklerinde şifreli olarak saklanır ve belirli aralıklarla otomatik olarak değiştirilir.
Klasik senaryoyu düşünün: 200 iş istasyonuna Sysprep ile aynı imajı yüklüyorsunuz ve hepsinde Administrator hesabı için Company2023! şifresini kullanıyorsunuz. IT ekibi bu şifreyi biliyor, bazen helpdesk de biliyor, bazen eski çalışanlar da biliyor. Bir saldırgan ağa sızdığında pass-the-hash veya credential stuffing ile tüm ağı lateral movement ile gezebilir. LAPS bu senaryoyu imkansız hale getirir.
LAPS’in temel avantajları:
- Her bilgisayarda farklı, rastgele şifre
- Şifreler Active Directory’de merkezi olarak saklanır
- Şifre okuma yetkisi granüler olarak verilebilir
- Otomatik şifre rotasyonu
- Audit log desteği
- Ücretsiz Microsoft çözümü
LAPS Mimarisi
LAPS iki ana bileşenden oluşur:
Group Policy Client Side Extension (CSE): Her yönetilen bilgisayara yüklenen bileşendir. Group Policy uygulandığında çalışır, yerel Administrator hesabının şifresini değiştirir ve yeni şifreyi Active Directory’ye yazar.
Management Tools: Yöneticilerin şifreleri okuyup yönetebileceği araçlardır. PowerShell modülü, ADMX şablonları ve isteğe bağlı GUI içerir.
Active Directory’de her bilgisayar nesnesine iki yeni özellik eklenir:
- ms-Mcs-AdmPwd: Şifrenin kendisi (plain text, ama ACL ile korumalı)
- ms-Mcs-AdmPwdExpirationTime: Şifrenin sona erme zamanı
Kurulum Öncesi Gereksinimler
Başlamadan önce ortamınızı kontrol edin:
- Windows Server 2003 SP1 veya üzeri domain controller
- .NET Framework 4.0 veya üzeri management workstation’da
- Schema admin yetkisi (AD schema güncellemesi için)
- Group Policy yönetimi
LAPS’i Microsoft’un resmi sayfasından veya doğrudan PowerShell ile indirebilirsiniz. Windows LAPS (yeni nesil) Windows 11 22H2 ve Server 2022 ile birlikte işletim sistemine entegre gelir, ayrı kurulum gerektirmez.
Adım Adım LAPS Kurulumu
1. LAPS MSI Kurulumu
Management workstation’ınıza veya domain controller’a LAPS kurulum paketini yükleyin:
# LAPS kurulumunu sessiz modda yap (Management Tools dahil)
msiexec /i LAPS.x64.msi /quiet ADDLOCAL=Management.UI,Management.PS,Management.ADMX
# Sadece CSE kurulumu (client makineler icin)
msiexec /i LAPS.x64.msi /quiet ADDLOCAL=CSE
Kurumsal ortamlarda bunu SCCM, Intune veya bir startup script ile otomatize edebilirsiniz.
2. Active Directory Schema Güncellemesi
Bu adım için Schema Admins grubunun üyesi olmanız gerekiyor:
# PowerShell ile AD modülünü import et
Import-Module AdmPwd.PS
# Schema'yi guncelle
Update-AdmPwdADSchema
# Dogrulama
Get-ADObject -SearchBase (Get-ADRootDSE).SchemaNamingContext `
-Filter {name -like "ms-Mcs-Adm*"} | Select-Object name
Başarılı çıktıda ms-Mcs-AdmPwd ve ms-Mcs-AdmPwdExpirationTime özelliklerini görmelisiniz.
3. OU İzinlerini Yapılandırma
Bilgisayarların kendi şifrelerini AD’ye yazabilmesi için gerekli izinleri vermemiz lazım:
# Belirtilen OU'daki bilgisayarlara kendi sifre ozelligini yazma izni ver
Set-AdmPwdComputerSelfPermission -OrgUnit "OU=Workstations,DC=sirket,DC=local"
# IT Helpdesk grubuna sifre okuma izni ver
Set-AdmPwdReadPasswordPermission -OrgUnit "OU=Workstations,DC=sirket,DC=local" `
-AllowedPrincipals "SIRKETIT-Helpdesk"
# Sifre sifirlama izni icin ayri grup (daha az kisi olmali)
Set-AdmPwdResetPasswordPermission -OrgUnit "OU=Workstations,DC=sirket,DC=local" `
-AllowedPrincipals "SIRKETIT-Admins"
Dikkat edin, şifre okuma ve şifre sıfırlama izinleri ayrı ayrı verilebiliyor. Helpdesk sadece mevcut şifreyi okuyabilirken, yalnızca üst seviye adminler şifreyi sıfırlayabilir.
4. Mevcut İzinleri Kontrol Etme
Verdiğiniz izinlerin doğru uygulandığını doğrulayın:
# OU uzerindeki LAPS izinlerini goster
Find-AdmPwdExtendedRights -OrgUnit "OU=Workstations,DC=sirket,DC=local" |
Select-Object ExtendedRightHolders
# Belirli bir bilgisayar icin kontrol
Get-AdmPwdPassword -ComputerName "PC001" | Select-Object ComputerName, Password, ExpirationTimestamp
Group Policy Yapılandırması
GPO Oluşturma
# Yeni GPO olustur
New-GPO -Name "LAPS - Workstations Policy" -Comment "Yerel admin sifre yonetimi"
# GPO'yu OU'ya bagla
New-GPLink -Name "LAPS - Workstations Policy" `
-Target "OU=Workstations,DC=sirket,DC=local"
ADMX Şablonlarını Yükleme
LAPS kurulumu sırasında ADMX şablonları C:WindowsPolicyDefinitions altına kopyalanır. Merkezi bir ADMX deposu kullanıyorsanız:
# ADMX dosyalarini merkezi depoya kopyala
Copy-Item "C:WindowsPolicyDefinitionsAdmPwd.admx" `
"\sirket.localSYSVOLsirket.localPoliciesPolicyDefinitions"
Copy-Item "C:WindowsPolicyDefinitionstr-TRAdmPwd.adml" `
"\sirket.localSYSVOLsirket.localPoliciesPolicyDefinitionstr-TR"
GPO Ayarları
Group Policy Management Editor’da Computer Configuration > Administrative Templates > LAPS altında şu ayarları yapılandırın:
Enable local admin password management: Enabled
Password Settings:
- Complexity: Large letters + small letters + numbers + specials
- Length: 14 (minimum, kurumunuza göre 16-20 arası önerilir)
- Age (days): 30
Name of administrator account to manage: Eğer varsayılan Administrator hesabı dışında bir hesap kullanıyorsanız buraya yazın.
Do not allow password expiration time longer than required by policy: Enabled
Şifre Yönetimi ve Günlük Kullanım
Şifre Sorgulama
# Tek bir bilgisayarin sifresini al
Get-AdmPwdPassword -ComputerName "PC001"
# Birden fazla bilgisayar icin toplu sorgulama
$computers = Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=sirket,DC=local"
$computers | ForEach-Object {
Get-AdmPwdPassword -ComputerName $_.Name
} | Select-Object ComputerName, Password, ExpirationTimestamp |
Export-Csv "laps_passwords.csv" -NoTypeInformation
Not: Bu CSV’yi çok dikkatli saklayın veya hiç saklamayın. Şifreleri sadece gerektiğinde anlık olarak sorgulayın.
Şifre Sıfırlama
Bir teknik işlem yaptıktan sonra şifrenin hemen değişmesini istiyorsanız:
# Sifreyi hemen sifirla (bir sonraki GP refresh'te degisecek)
Reset-AdmPwdPassword -ComputerName "PC001"
# Belirli bir tarihte sifrala
Reset-AdmPwdPassword -ComputerName "PC001" `
-WhenEffective (Get-Date).AddHours(2)
# Uzak makinede GP'yi hemen yenile
Invoke-GPUpdate -Computer "PC001" -Force -RandomDelayInMinutes 0
Bulk Şifre Sorgulama Script’i
Gerçek dünyada helpdesk ekibinin kullanacağı basit bir wrapper script yazalım:
# Get-LAPSPassword.ps1
param(
[Parameter(Mandatory=$true)]
[string]$ComputerName
)
# Bilgisayarin AD'de var olup olmadigini kontrol et
$computer = Get-ADComputer -Filter {Name -eq $ComputerName} -ErrorAction SilentlyContinue
if (-not $computer) {
Write-Error "Bilgisayar Active Directory'de bulunamadi: $ComputerName"
exit 1
}
# LAPS sifresini al
$lapsInfo = Get-AdmPwdPassword -ComputerName $ComputerName
if (-not $lapsInfo.Password) {
Write-Warning "Bu bilgisayar icin LAPS sifresi bulunamadi. LAPS kurulu olmayabilir."
exit 1
}
# Bilgileri goster ve audit log'a yaz
$logEntry = [PSCustomObject]@{
Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
RequestedBy = $env:USERNAME
Computer = $ComputerName
Expiration = $lapsInfo.ExpirationTimestamp
}
# Log dosyasina kaydet (merkezi log sunucusu varsa oraya yonlendirin)
$logEntry | Export-Csv "\fileserverlogslaps_access.csv" -Append -NoTypeInformation
Write-Host "`nBilgisayar : $($lapsInfo.ComputerName)" -ForegroundColor Cyan
Write-Host "Sifre : $($lapsInfo.Password)" -ForegroundColor Yellow
Write-Host "Son kullanim: $($lapsInfo.ExpirationTimestamp)" -ForegroundColor Green
Write-Host "`nBu sifre kullanim sonrasinda sifirlamayi unutmayin!" -ForegroundColor Red
Windows LAPS (Yeni Nesil)
Windows 11 22H2, Windows Server 2022 ve sonrasında gelen Windows LAPS, eski LAPS’e göre önemli iyileştirmeler sunar:
- Azure AD (Entra ID) desteği
- Şifreli şifre depolama (artık plain text değil)
- Passphrase modu (daha okunabilir uzun şifreler)
- Hesap devre dışı bırakma politikası
# Windows LAPS durumunu kontrol et
Get-LapsAADPassword -DeviceNameOrId "PC001"
# Windows LAPS ile sifre sifirlama
Reset-LapsPassword -Identity "PC001"
# LAPS policy durumunu goster
Get-LapsAdConfiguration
# Windows LAPS event log'larini kontrol et
Get-WinEvent -LogName "Microsoft-Windows-LAPS/Operational" |
Select-Object TimeCreated, Id, Message |
Where-Object {$_.Id -in @(10018, 10019, 10020)} |
Format-List
Monitoring ve Alerting
LAPS kullanımını izlemek güvenliğin kritik bir parçası. Şifre sorgulama işlemleri AD’de 4662 event ID’si ile loglanır:
# Son 24 saatte LAPS sifre okuma olaylarini bul
$startTime = (Get-Date).AddHours(-24)
Get-WinEvent -ComputerName "DC01" -FilterHashtable @{
LogName = "Security"
Id = 4662
StartTime = $startTime
} | Where-Object {
$_.Message -like "*ms-Mcs-AdmPwd*"
} | Select-Object TimeCreated,
@{N="User";E={$_.Properties[1].Value}},
@{N="Object";E={$_.Properties[6].Value}} |
Format-Table -AutoSize
Splunk, Elastic veya benzeri bir SIEM kullanıyorsanız bu event’leri mutlaka toplayın ve anormal erişim paternleri için alert kurun. Helpdesk çalışanının mesai saatleri dışında toplu şifre sorgulaması yapmaya başlaması kırmızı bayrak olmalı.
Yaygın Sorunlar ve Çözümleri
Şifre görünmüyor, boş geliyor:
# Bilgisayarin sifre yazma iznini kontrol et
Get-AdmPwdPassword -ComputerName "PC001" -Verbose
# Bilgisayar nesnesinin ozelliklerini dogrudan kontrol et
Get-ADComputer "PC001" -Properties ms-Mcs-AdmPwd, ms-Mcs-AdmPwdExpirationTime |
Select-Object Name, ms-Mcs-AdmPwd, ms-Mcs-AdmPwdExpirationTime
CSE düzgün çalışmıyor:
# Client makinede LAPS CSE kurulumunu dogrula
Get-ItemProperty "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogonGPExtensions*" |
Where-Object {$_.DllName -like "*AdmPwd*"}
# GP uygulama loglarini kontrol et
gpresult /r /scope:computer
# Event Viewer'da LAPS loglarini kontrol et
Get-EventLog -LogName Application -Source "LAPS" -Newest 20
Şifre süresi dolmuş ama değişmemiş:
Bu genellikle GP refresh sorunundan kaynaklanır. Makine uzun süredir kapalıysa veya ağa bağlanmamışsa şifre değişmez:
# Uzak makinede zorla GP yenile
Invoke-GPUpdate -Computer "PC001" -Force -RandomDelayInMinutes 0
# Makine ağa baglandiginda otomatik guncellenir,
# zorlamak icin scheduled task da eklenebilir
Güvenlik Konusunda Dikkat Edilmesi Gerekenler
LAPS güçlü bir araç ama yanlış yapılandırılırsa tam tersi etki yaratabilir:
- Domain Admins otomatik olarak tüm şifreleri okuyabilir. Bu grup üyeliğini sıkı tutun.
- Şifreleri CSV’ye export edip saklama. Anlık sorgulama yapın.
- LAPS yönetim araçlarına erişimi kısıtlayın. Sadece ihtiyacı olan kişiler
AdmPwd.PSmodülünü kullanabilmeli. - Service account’ları veya kritik sunucuları ayrı OU’larda tutun ve şifre okuma yetkilerini ayrıca yönetin.
- LAPS’ı Azure AD Join cihazlara da uygulayın. Intune üzerinden Windows LAPS politikasını dağıtabilirsiniz.
Şifrenin plain text olarak AD’de saklanması kulağa riskli gelse de, erişim ACL ile kontrol edilir ve LDAPS (LDAP over SSL) kullanıldığında network üzerinde şifreli gider. Yeni Windows LAPS bu endişeyi de ortadan kaldırdı.
Sonuç
LAPS, kurumsal ortamlarda lateral movement’ı engellemek için uygulaması görece kolay ama etkisi son derece büyük bir güvenlik kontrolüdür. Kurulum birkaç saat içinde tamamlanabilir, lisans maliyeti yoktur ve Active Directory altyapısını kullanan her kurum için neredeyse zorunlu bir araçtır.
Eski LAPS kullanıyorsanız Windows LAPS’a geçişi planlamaya başlayın; şifreli depolama ve Azure AD desteği ciddi avantajlar sunuyor. Eğer henüz hiç LAPS kullanmıyorsanız, bugün başlayın. Tüm bilgisayarlarınızın aynı yerel yönetici şifresine sahip olduğu her gün, ağınızda açık duran bir arka kapıdır.
İzleme ve audit log kısmını atlamayın. LAPS’ı kurmak güvenliğin yarısı; kimin, ne zaman, hangi şifreye eriştiğini bilmek de en az kurulum kadar önemlidir.
