Kurumsal şirket organizasyonlarında veri güvenliği son derece önemli bir başlık olduğu için bu alanda pek çok iyileştirme ve alt yapı yatırımı yapılmaktadır. Günün sonunda verilerin erişilebilirliği kadar güvenliği de önemlidir.
Güvenlik denince tabiki gerek fiziksel gerekse verilerin güvenliği söz konusudur ve geniş bir kapsamı vardır. Ben ise bu noktada pek çok sistem yöneticisinin yaşadığı bir soruna çözüm üretecek olan LAPS aracını anlatmak istiyorum.
Öncelikle sorun nedir? Domain ortamındaki bilgisayarların yerel kullanıcı şifreleri ( Local Admnistrator ) aynıdır, bunun en temel sebebi uygulamasının kolay oluşudur. GPO üzerinden, SCCM veya benzeri ürünlerden olsun genellikle tek bir şifre tüm bilgisayarların yerel kullanıcılarına atanmaktadır. Tabiki böyle bir durumda yerel admin şifresinin birinin çalınması durumunda tüm domaindeki bilgisayarlar güvensiz bir duruma düşecektir. Olası bir komut seti ile bu şifre belirli aralıklar ile değiştirilse bile sonuçta blok halinde tüm bilgisayarlar için değiştirilmekte ve güvenlik zafiyeti devam etmektedir. Buna ek olarak sürekli olarak değiştirilen bu şifrelere erişmek isteyen kullanıcı destek personel içinde bu ayrı bir sorundur.
Peki, LAPS ne sağlıyor? Tüm makinelerin lokal admin şifrelerinin rastgele atanması ve ihtiyaç duyan kullanıcı veya gruplara yetki verilmesi durumunda erişilmesini sağlıyor.
Aracı indirmek için aşağıdaki linki kullanabilirsiniz
https://www.microsoft.com/en-us/download/details.aspx?id=46899
Tememl olarak LAPS, domain içerisindeki makinelerdeki yerel yönetici hesaplarının şifrelerini rastgele atar, değiştirir ve bunu merkezi olarak Active Directory üzerinde saklar.
Her makine için şifre bilgisi makinenin bilgisayar hesabı üzerindeki özel bir öz nitelik ( attribute ) içerisinde tutulur ve siz bu öz niteliği kimlerin okuyacağına karar verebilirsiniz.
Bu araç Active Directory alt yapısını kullanır ve ek bir programa ihtiyaç duymaz.
Burada hemen önemli bir bilgi vermek istiyorum LAPS ismi “administrator” olmayan yani ismi değiştirilmiş olan hesaplar içinde destek sunmaktadır.
Şifreler Kerberos version 5 protocol ve Advanced Encryption Standard (AES) sayesinde güvenli bir şekilde saklanır.
LAPS, temel olarak GPO ile çalışır. Aslında bir client-side extension (CSE)’ dır.
İstemci makinede GPO yüklenir veya uygulanırken aşağıdaki işlemler gerçekleştirilir
Administrator şifresinin süresinin dolup dolmadığını kontrol eder
Eğer eski şifre için süre dolmuş ise yeni bir şifre üretir.
Yeni şifrenin şifre politikası ile uyumlu olmasını sağlar.
Yeni şifrenin AD üzerinde bilgisayar hesabının ilgili özniteliğinde saklanmasını sağlar
Bu şifre için bir sonraki şifre değiştirme süresinin de yine AD içerisindeki bilgisayar hesabında özniteliğe yazılmasını sağlar.
Administrator hesabının şifresini değiştirir. ( üretilen şifre atanır )
Peki, ne tür seçeneklerimiz var?
Şifre uzunluğu, yaşı ve kompleks olup olmayacağını ayarlayabilirsiniz.
Makine bazlı şifre resetlemeyi zorlayabilirsiniz.
Şifrenin saklandığı bölümde ACL yardımı ile istediğiniz kişi veya gruplara okuma izni verebilirsiniz.
PowerShell Desteği
Bilgisayar hesabının silinmesine karşı koruma sağlar
Düşük bir efor ile yaygınlaştırma yapabilirsiniz.
Gelelim şimdi ürünün dağıtımına
Bir yönetim makinemiz ve yönetilen istemci bilgisayarlarımız olacaktır. Öncelikle yönetim yapacağımız bilgisayarda kurulumu gerçekleştirelim.
LAPS.x64 veya size uygun olan msi sürümünü çalıştırın.
Yönetim makinemiz olduğu için CSE dışındaki tüm yüklemeleri yapıyoruz ( özellikle ilk yönetim makinemiz olduğu için)
Basit bir kurulum olduğu için hızlıca işlemi tamamlıyoruz.
Bu yüklemeden sonra aşağıdaki dizinlerde ilgili klasör ve dosyaları göreceksiniz
Fat client UI yüklerseniz eğer aşağıdaki dizinde ilgili dosyaları göreceksiniz.
%ProgramFiles%\LAPS
AdmPwd.UI.exe
AdmPwd.Utils.config
AdmPwd.Utils.dll
PowerShell module yüklerseniz aşağıdaki dizinde ilgili dosyaları göreceksiniz
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules\AdmPwd.PS
AdmPwd.PS.dll
AdmPwd.PS.format.ps1xml
AdmPwd.PS.psd1
AdmPwd.Utils.config
AdmPwd.Utils.dll
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules\AdmPwd.PS\en-us
AdmPwd.PS.dll-Help.xml
Group Policy files yüklemesini yaparsanız ki DC üzerinde bunu yapıyoruz aşağıdaki dizinde ilgili doyaları görebilirsiniz
%WINDIR%\PolicyDefinitions
AdmPwd.admx
%WINDIR%\PolicyDefinitions\en-US
AdmPwd.adml
Bu adımlar ile yönetim tarafındaki yüklemeleri tamamlamış olduk.
İstemci tarafında da yani yöneteceğiniz makinelere yükleme yapıyoruz.
Yüklemeler aynı msi dosyası ile aşağıdaki gibi yapılabilir
msiexec /i <file location>\LAPS.x64.msi /quiet
veya
msiexec /i <file location>\LAPS.x86.msi /quiet
Örneğin
msiexec /i \\server\share\LAPS.x64.msi /quiet
Tabiki SCCM ile de yükleme yapabilirsiniz.
Yükleme sonrasında aşağıdaki gibi yüklenmiş programların arasında görebilirsiniz
Eğer msi yüklemesi yapmak istemiyorsanız tek yapmanız gereken AdmPwd.dll dosyasını istemci makinelere kopyalamak ve sonra register etmek
Ancak bu işlem ile yaptığınız yüklemede program ekle kaldır menüsünde görünmemesi normaldir.
Yukarıdaki komut ile yapılan temel yüklemede gördüğünüz gibi sadece cse yüklenir
Bunu da aşağıdaki dizinden kontrol edebiliriz
%ProgramFiles%\LAPS\CSE
AdmPwd.dll
Temel kurulumlar hazırlandı, şimdi AD Schema tarafında yeni iki öz nitelik için ekleme yapalım
ms-Mcs-AdmPwd – Şifreleri saklamak için kullanılan attribute
ms-Mcs-AdmPwdExpirationTime – Şifrelerin resetlenmesi gereken zamanı tutan attribute
Bu iki öz niteliği eklemek için PS kullanıyoruz.
Import-module AdmPwd.PS
Update-AdmPwdADSchema
Eğer ortamınızda RODC var ise bu durumda bu ilgili değişikliklerin de RODC ye replike edilmesi gerekli. Bunun için aşağıdaki makaleyi inceleyebilirsiniz
https://technet.microsoft.com/en-us/library/cc754794(v=WS.10).aspx
Bu değişiklikten sonra ise sıra ilgili öz niteliklerin herkes tarafından görüntülenmesini engellemek olacaktır.
Bunun için öncelikle bu çözümü uygulamak adına bir OU oluşturuyoruz ve bilgisayar hesaplarını bu OU ya atıyoruz. Daha sonra ise bu OU için adsiedit.msc arası ile ACL değişikliği yapıyoruz.
Benim açtığım OU ismi PCs ve onu adsiedit üzerinden bulup özelliklerden güvenlik sekmesine geliyorum
Daha sonra Advanced bölümüne giriyorum
Bu bölümde şifreleri “görmesini istemediğiniz” kullanıcı veya grup’ u seçiyoruz sonra ise Edit butonuna tıklıyoruz.
Not: Böyle bir grup yok ise seçmenize gerek yoktur, ancak elle bir takım izinler bazı yapılarda domain seviyesinden verildiği için bu yeni açtığınız OU veya mevcut OU’ lar için bu şifrelerin tutulduğu bölüm istemediğiniz kullanıcı veya gruplar tarafından görünebilir.
Karşımıza çıkan yukarıdaki menüden “All extend Rights” kutucuğunu siliyoruz.
Bu kısımda aslında çok kafa yormanıza gerek yok, ilgili OU için kimlerin bu hakka sahip olduğunu aşağıdaki gibi power Shell ile görebilirsiniz
Find-AdmPwdExtendedRights –Identity “PCs” | Format-Table
Gördüğünüz gibi Domain Admins dışında zaten bu yetkiye sahip kimse yok, yani ek bir ayara gerek yok, ama olması durumunda bu ayarları biliyor olmanız gerekli.
Şimdi ise bu OU için bilgisayarların ilgili öz niteliklere yazma yetkisi vermemiz lazım (ms-Mcs-AdmPwdExpirationTime ve ms-Mcs-AdmPwd)
Import-module AdmPwd.PS
Set-AdmPwdComputerSelfPermission -OrgUnit <name of the OU to delegate permissions>
Örnek
Set-AdmPwdComputerSelfPermission -OrgUnit PCs
Not: Eğer aynı isimli OU’ lar var ise bu durumda DN kullanmanız gerekli. DN yazarken mutlaka tırnak içerisine almayı unutmayın.
Eğer başka OU larınız var ise diğerleri içinde bu komutu çalıştırmanız gereklidir.
Şimdi ise mevcut şifreleri sadece Domain Admisn grubu üyesi kullanıcılar gördüğü için buna ek olarak örneğin HelpDesk gibi bir gruba bu yetkiyi vermeliyiz.
Import-module AdmPwd
Set-AdmPwdReadPasswordPermission -OrgUnit <name of the OU to delegate permissions> -AllowedPrincipals <users or groups>
Örneğin
Set-AdmPwdReadPasswordPermission -OrgUnit PCs -AllowedPrincipals HelpDesks
Eğer birden çok gruba veya kullanıcıya izin vermek istiyorsanız aşağıdaki gibi bir formatta komutu yazabilirsiniz
Set-AdmPwdReadPasswordPermission -OrgUnit PCs -AllowedPrincipals cozumpark\Administrator,cozumpatk\HelpDesk,cozumpark\PwdAdmins
İlgili kullanıcılara şifreyi görme yetkisi yanında birde şifreyi resetleme yetkisi vermek istiyorsanız aşağıdaki komutu kullanabilirsiniz
Set-AdmPwdResetPasswordPermission -OrgUnit <name of the OU to delegate permissions> -AllowedPrincipals <users or groups>
Örnek
Set-AdmPwdResetPasswordPermission -OrgUnit PCs -AllowedPrincipals cozumpark\Administrator,cozumpark\HelpDesks
Sıra geldi ayarları yapmaya, bunun için GPO üzerinde çalışacağız.
Yeni bir GPO oluşturup ilgili OU ya bağlıyorum ve aşağıdaki dizine gidiyorum
Computer Configuration\Administrative Templates\LAPS
Öncelikle Local Admin şifre yönetimin açıyoruz
Bu sayede varsayılan olarak kompleks, 14 karakter ve 30 günlük şifre ataması yapılır. Ama isterseniz bu ayarları aşağıdaki gibi değiştirebilirsiniz.
Eğer farklı lokal admin hesaplarını da yönetmek istiyorsanız buraya ismini yazabilirsiniz. Varsayılan olarak gelen admin hesabı bilinen SID numaralarından otomatik olarak tespit edildiği için onu düşünmenize gerek yoktur ( hatta ismini değiştirmiş olasınıza bile )
Son olarak,
Eğer Password Policy de tanımlı olan şifrelerden daha uzun şifre tanımlanmasına izin vermeyecekseniz bu ayarı “Enable” konumuna getirmeniz gerekli.
Peki bu kadar zahmetten sonra sistemi kontrol edelim.
GPO dağıttık makineleri restart ettik şimdi lokal admin şifrelerini ve expire zamanını nasıl göreceğiz, aslında kolay bir yolu var ama önce zor olan yöntemi paylaşalım J
Gördüğünüz gibi dsa.msc üzerinden ilgili makineyi bulup öz niteliklere bakabiliriz. Şifre açık olarak görülmektedir, zaman ise aşağıdaki gibi net görülebilir
Ya da grafik ara yüzü kullanabiliriz
C:\Program Files\LAPS\AdmPwd.UI.exe
Makine ismini yazmanız veya aramanız yeterli olacaktır.
Veya bir diğer yöntem ise PS
Get-AdmPwdPassword -ComputerName <computername>
Eğer yetkisiz bir kullanıcı bu aracı çalıştırır ise aşağıdaki gibi şifre bölümü gelmez
Bu araç ile istediğimiz tarihi bir sonraki expire tarihi olarak seçip Set düğmesine basarsak şifreyi de resetlemiş oluruz. Client makine GPO yu ilk tazelediğinde şifre resetlenir.
Yada yine klasör PS J
Reset-AdmPwdPassword -ComputerName <computername> -WhenEffective <date time>
Sorun Çözümü
Peki böyle bir aracı büyük bir organizasyonda kullanıyorsanız bir takım istemciler için sorun çözme adımlarına da hakim olmanız gerekli. İlk olarak GPO tarafında CSE’ ları takip etmek için olay günlüklerinden “Application” başlığını kontrol etmeniz gerekli. Ancak burada her zaman anlaşılır şeyler bulamayabilirsiniz. Bu durumda loglarin detay seviyesini değiştirmek için aşağıdaki değişikliği yapabilirsiniz.
Kayıt defterinde
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\{D76B9641-3288-4f75-942D-087DE603E3EA}}\ExtensionDebugLevel
Varsayılan olarak yoktur, DWORD 32Bit olarak eklemeniz gerekli. Değerleri ise
0 – Hata olmadıkça log üretmez
1 – Sadece hata logları üretir
2 – Herşeyi loglar
Ben 2 yaptım ve DC üzerinden ara yüz yardımı ile şifre resetledim, loglar aşağıdaki gibidir
Evet, bu makalemin de sonuna geldim, umarım faydalı bir makale olmuştur. Bir sonraki makalemde görüşmek üzere esen kalın.
Kaynak: LAPS OperationsGuide Dokumanı