Windows Server Group Policy ile Şifre Politikaları Yönetimi

Windows Server ortamında, kullanıcı hesaplarının güvenliğini sağlamak için şifre politikaları büyük önem taşır. Group Policy (Grup İlkesi) ve PowerShell kullanarak şifre politikalarını nasıl yönetebileceğinizi, görüntüleyebileceğinizi ve düzenleyebileceğinizi bu yazıda detaylı bir şekilde ele alacağız.

1. Group Policy ile Şifre Politikaları Yönetimi

1.1 Group Policy Management Console'da Şifre Politikalarına Ulaşma

Group Policy Management Console (GPMC) üzerinden şifre politikalarını yönetmek için aşağıdaki adımları izleyebilirsiniz:

1. **Group Policy Management** konsolunu açın.
2. **Forest: domain.com** > **Domains** > **domain.com** > **Default Domain Policy** yolunu takip edin.
3. **Default Domain Policy** üzerine sağ tıklayıp **Edit** seçeneğini seçin.
4. **Computer Configuration** > **Policies** > **Windows Settings** > **Security Settings** > **Account Policies** > **Password Policy** yolunu izleyerek şifre politikalarına ulaşın.

1.2 Alternatif Yol

1. **Server Manager** > **Tools** > **Group Policy Management** yolunu izleyin.
2. **Default Domain Policy** üzerine sağ tıklayıp **Edit** seçeneğini seçin.
3. **Computer Configuration** > **Windows Settings** > **Security Settings** > **Account Policies** > **Password Policy** yolunu izleyin.

2. PowerShell ile Şifre Politikalarını Görüntüleme

2.1 Default Domain Policy

Varsayılan domain şifre politikasını görüntülemek için aşağıdaki PowerShell komutlarını kullanabilirsiniz:

```powershell
Varsayılan domain şifre politikası
Get-ADDefaultDomainPasswordPolicy | Format-List *password*

Daha spesifik bilgiler için
Get-ADDefaultDomainPasswordPolicy | Select-Object ComplexityEnabled,
  MinPasswordLength,
  MaxPasswordAge,
  MinPasswordAge,
  PasswordHistoryCount
```

2.2 Fine-Grained Password Policies (FGPP)

Fine-Grained Password Policies (FGPP) ile daha detaylı şifre politikaları oluşturabilirsiniz. FGPP'leri görüntülemek için:

```powershell
Tüm FGPP'leri listele
Get-ADFineGrainedPasswordPolicy -Filter * | 
Select-Object Name, Precedence, MinPasswordLength, PasswordHistoryCount, ComplexityEnabled

Belirli bir FGPP'yi görüntüle
Get-ADFineGrainedPasswordPolicy -Identity "PolicyName"
```

2.3 Group Policy Objects İçinde Şifre Politikaları

Şifre politikaları ile ilgili Group Policy Objects (GPO) bulmak için:

```powershell
Şifre ile ilgili GPO'ları bul
Get-GPO -All | Where-Object {$_.DisplayName -like "*password*"} | 
Select-Object DisplayName, CreationTime, ModificationTime

GPO'ların uygulandığı OU'ları gör
Get-GPInheritance -Target "DC=domain,DC=com"
```

3. Örnek Policy Ayarları ve Anlamları

Tipik bir şifre politikası yapılandırması aşağıdaki gibi olabilir:

```powershell
ComplexityEnabled    : True       Karmaşıklık gereksinimleri aktif
MinPasswordLength    : 10         Minimum 10 karakter
MaxPasswordAge       : 180.00:00:00   180 gün sonra değişmeli
MinPasswordAge       : 5.00:00:00     5 gün geçmeden değiştiremez
PasswordHistoryCount : 5          Son 5 şifre tekrar kullanılamaz
```

4. Fine-Grained Password Policy (FGPP) Yönetimi

4.1 FGPP Oluşturma ve Düzenleme

FGPP oluşturma ve düzenleme işlemleri için PowerShell kullanabilirsiniz:

```powershell
Şifre geçmişini güncelleme
Set-ADFineGrainedPasswordPolicy -Identity "PolicyName" -PasswordHistoryCount 5

Kullanıcı ekleme
$user = Get-ADUser username | Select-Object DistinguishedName
Set-ADFineGrainedPasswordPolicy -Identity "PolicyName" -Add @{AppliesTo=$user.DistinguishedName}
```

4.2 FGPP Kontrol

FGPP detaylarını ve kullanıcıya uygulanan politikaları kontrol etmek için:

```powershell
Policy detaylarını görüntüle
Get-ADFineGrainedPasswordPolicy -Identity "PolicyName" | Select-Object PasswordHistoryCount,AppliesTo

Kullanıcıya uygulanan FGPP'yi kontrol et
Get-ADUserResultantPasswordPolicy -Identity "username"
```

5. Kullanıcı Şifre Durumu Kontrolü

5.1 Son Şifre Değişikliği

Kullanıcının son şifre değişikliği tarihini öğrenmek için:

```powershell
Get-ADUser username -Properties PasswordLastSet | Select-Object PasswordLastSet
```

5.2 Bir Sonraki Şifre Değişikliği Tarihi

Bir sonraki şifre değişikliği tarihini hesaplamak için:

```powershell
$user = Get-ADUser username -Properties PasswordLastSet
$nextPossibleChange = $user.PasswordLastSet.AddDays(5)
Write-Host "Bir sonraki şifre değişikliği yapılabilecek tarih: $nextPossibleChange"
```

6. RSOP (Resultant Set of Policy)

Group Policy sonuçlarını HTML raporu olarak almak için:

```powershell
gpresult /H "C:\PasswordPolicies.html"
```

7. İyi Uygulama Önerileri

7.1 Politika Yönetimi

- Politika değişikliklerini test ortamında deneyin.
- Değişiklik öncesi mevcut ayarları yedekleyin.
- Değişiklikleri dokümante edin.

7.2 Güvenlik Önerileri

- Minimum şifre uzunluğu en az 10 karakter olmalı.
- Karmaşıklık gereksinimleri aktif olmalı.
- Makul bir şifre değişim süresi belirleyin (örn. 180 gün).
- Şifre geçmişi en az 5 olmalı.

7.3 Monitoring

- Düzenli olarak politika ayarlarını kontrol edin.
- Kullanıcı şikayetlerini takip edin.
- Security log'ları düzenli kontrol edin.

7.4 Dokümantasyon

- Tüm politika değişikliklerini kaydedin.
- Özel durumları ve istisnaları belgelendirin.
- Troubleshooting adımlarını dokümante edin.

Sonuç

Windows Server ortamında Group Policy ve PowerShell kullanarak şifre politikalarını etkili bir şekilde yönetebilirsiniz. Bu rehber, şifre politikalarını nasıl yapılandıracağınızı, görüntüleyeceğinizi ve düzenleyeceğinizi adım adım anlatmaktadır. Güvenli bir ortam sağlamak için bu politikaları düzenli olarak gözden geçirmeyi ve güncellemeyi unutmayın.