Active Directory Powershell Signing yazımızda powershell güvenliğini daha da arttırmak için sign olmamış scriptlerin çalışmasını engelleyeceğiz. Sign işlemini sadece belirli kişilere tanımlayacağız belirli kişilerin haricinde sign işlemide yapılamayacak. Öncellikle Domain yapısında herkesin powershell ihtiyacı var mıdır ? . Bunun belirlenmesi gerekir. Powershell güvenliği konusunda 3 ana madde sayılabilmektedir.
- Powershell Engelleme
- Logging
- Signing
Bu yazımızda Active Directory Powershell Signing kısmı ile ilgileneceğiz. Diğer durumlar için yukarıdaki butonlardan diğer yazılarımıza bakabilirsiniz.
Sign Sertifikası Oluşturma
İlk olarak ben demo ortamında CA authority kullanarak sertifika kullandım. Sizler diğer sertifikaları kullanabilirsiniz.
Sertifika template’lerinden “Code Signing” duplicate ederek işleme başlıyorum.
En önemlisi Security kısmıdır. Bu arada bu sertifikayı kullanacak User belirledik.(PSSigner kullanıcısı). Saldırganlar bu sertifikayı enroll edebilirlerse sisteminizde zararlı PS’ler çalıştırabilir. O yüzden bir gruba veya user’a atama yapın.
Sıra geldi sertifikayı kullanmaya, Kullanılacak makinede mmc başlatarak Current User sertifikayı request edeceğiz.
Sertifika Current User Personal altında import ettik. Sıra Geldi GPO ve bu sertifikanın dağıtılmasına.
GPO Hazırlanması
Son olarak Powershell sign aktif etmek için GPO hazırlama bölümüne geldik. Burada 2 tane GPO hazırlacağız. Bir tanesi Powershell sign diğeri ise Sertifikanın dağıtılmasıdır.
İlk olarak ilgili OU üzerinde Powershell Sign için GPO oluşturun daha sonrasında;
Computer Configuration> Administrative Templates >Windows Components> Windows PowerShell bölümünden “Turn on Script Execution” enable ediyoruz ve Allow only signed script seçeneğini seçiyoruz.
Note:Bu arada söylemekte fayda bunu tüm domain ortamınada uygulayabilirsiniz. Bu yüzden çalıştırdığınız hali hazırda powershell scriptler varsa sign etmeniz gerekir.
İkinci işlem ise Trusted Publisher eklemek kaldı. Bunun için Personalda oluşturduğunuz sertifikayı dışarı çıkarın ve AD makinesine atın .Onun için aynı GPO ‘da ;
Computer Configuration>Windows Settings> Security Settings >Public Key Policies>Trusted Publishers Certificates bölümüne makinede ürettiğimiz sertifikayı import edeceğiz.
Test Aşaması
Daha sonrasında makinenin oluşturduğumuz policy almasını sağlayın.
MachinePolicy Allsigned olarak görmek gerekmektedir.
Get-ExecutionPolicy -List
İkinci aşamada daha sign işlemi yapmadığımız herhangi bir ps1 dosyasını çalıştırmaya çalışın. Sign olması gerektiği ile ilgili Error aldık.
Sonra ki kontrolümüz sertifikanın kontrolüdür. Sertifikamızın varlığını kontrol ettik.
Get-Childitem Cert:\CurrentUser\My -CodeSigningCert
Sıra geldi sign etmeye. Koyu olarak yazılan yere sizler kendi scriptlerinizin yolunu yazın. Burada ki Status Valid olduğunu kontrol edin.
$cert=(Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0]
Set-AuthenticodeSignature -Certificate $cert -FilePath C:\Users\pssigner\Documents\Pssign.ps1
Bir önceki aşamalarda çalışmayan Error aldığımız script şimdi imzaladık ve yeniden çalıştırmayı deneyelim. Hatasız çalıştı.
Sonuç olarak bu yazımızda sizlere Powershell Signing detaylıca anlatmaya çalıştım. Diğer active directory yazılarımızı aşağıdaki kategorilerden takip edebilirsiniz.