Active Directory (AD), birçok kuruluş tarafından kullanıcı yönetimi ve kimlik doğrulama hizmetleri için kullanılmaktadır. AD kullanıcı hesaplarının şifre son kullanma tarihlerini anlamak, güvenliği sürdürmek için önemlidir. PowerShell kullanarak, bu görev otomatikleştirilebilir ve yönetim kolaylaştırılabilir. Bu makale, PowerShell kullanarak AD kullanıcı hesaplarının şifre son kullanma tarihlerinin nasıl kontrol edileceğini adım adım açıklayacaktır.
Şifre Son Kullanma Tarihini Kontrol Etme Komutu
Bir Active Directory kullanıcı hesabının şifre son kullanma tarihini kontrol etmek için, PowerShell Get-ADUser cmdlet’ini birkaç özellikle birleştirin. Aşağıda, belirli bir kullanıcı için şifre son kullanma tarihini kontrol etmek için temel komut yer almaktadır.
# Kullanıcının şifre son kullanma tarihini kontrol et
Get-ADUser -Identity "username" -Properties "PasswordLastSet", "PasswordNeverExpires" | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, @{Name="PasswordExpires"; Expression={if ($_.PasswordNeverExpires -eq $false) { $_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays) } else {"Never Expires"}}}
Bu komut, “PasswordLastSet” (şifrenin son olarak ne zaman ayarlandığı), şifrenin hiçbir zaman sona ermeyecek şekilde ayarlanıp ayarlanmadığı “PasswordNeverExpires” ve şifrenin bir son kullanma tarihine sahip olması durumunda, bu son kullanma tarihinin ne zaman olduğunu hesaplayıp gösterir.
Yorumlar
Get-ADUser
cmdlet’i, AD’den kullanıcı bilgilerini almak için kullanılır.-Identity
parametresi, hedef kullanıcı adını belirtir.-Properties
parametresi ile hangi özellikleri almak istediğinizi belirtirsiniz. Varsayılan olarak, tüm özellikler alınmaz.- Göstermek istediğiniz bilgileri seçmek ve özel özellikler eklemek için
Select-Object
cmdlet’ini kullanın.
Komut Örneği 1: Süresi Dolmuş Kullanıcıların Listelenmesi
Tüm Active Directory kullanıcıları arasında şifreleri süresi dolmuş kullanıcıları tespit edip listelemek, kurumsal güvenlik politikalarına uyumu doğrulamak ve hesap yönetim görevlerini otomatikleştirmek için yardımcı olabilir.
Aşağıdaki PowerShell komut dosyası, mevcut tarih ile karşılaştırarak şifreleri süresi dolmuş kullanıcıları tespit eder ve bu kullanıcıların bir listesini çıkarır.
# Süresi dolmuş kullanıcıları listele
Import-Module ActiveDirectory
$today = (Get-Date)
Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $today
} | Select-Object Name, PasswordLastSet, @{Name="PasswordExpires"; Expression={$_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)}}
Yorumlar
Import-Module ActiveDirectory
Active Directory ile ilgili cmdlet’leri kullanılabilir hale getirir. AD ile ilgili komut dosyalarını çalıştırmadan önce bu satırın her zaman gerekli olduğunu unutmayın.Get-Date
cmdlet’i, mevcut tarihi almak için kullanılır ve bu tarih, şifre son kullanma tarihini belirlemede temel olarak hizmet eder.Get-ADUser -Filter *
Active Directory’deki tüm kullanıcıları hedef alır.Where-Object
cmdlet’i, şifreleri kalıcı olarak geçerli olmayan ve şifre ayarlama tarihi ile alanın şifre politikası tarafından tanımlanan maksimum geçerlilik süresi toplamının bugünün tarihinden önce olduğu kullanıcıları filtreler.- Gerekli bilgileri seçmek ve şifre son kullanma tarihini hesaplayıp göstermek için özel özellik
PasswordExpires
eklemek üzereSelect-Object
cmdlet’ini kullanın.
Bu komut dosyası, süresi dolmuş kullanıcıları yönetmeyi kolaylaştırarak güvenliğin sürdürülmesine katkıda bulunur.
Komut Örneği 2: Son Kullanma Tarihinden Önce Otomatik Bildirim E-postaları
Kuruluş içindeki kullanıcılara şifrelerinin yakında sona ereceğini bildirmek, kullanıcı deneyimini iyileştirebilir ve güvenliği artırabilir. Aşağıdaki PowerShell komut dosyası, şifreleri belirli bir sayıda gün içinde sona erecek kullanıcıları tespit eder ve bu kullanıcılara otomatik olarak bildirim e-postaları gönderir.
# Son kullanmadan önce bildirim e-postaları gönderme
Import-Module ActiveDirectory
$notificationPeriod = 14 # Bildirimi göndermeden önceki gün sayısı
$smtpServer = "smtp.example.com" # SMTP sunucu adresi
$fromEmail = "admin@example.com" # Gönderenin e-posta adresi
$subject = "Şifreniz yakında sona erecek" # E-posta konusu
$users = Get-ADUser -Filter * -Properties EmailAddress, PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays - $notificationPeriod)) -lt (Get-Date)
}
foreach ($user in $users) {
$toEmail = $user.EmailAddress
$body = "Sayın $($user.Name),\n\nŞifreniz $notificationPeriod gün içinde sona erecek. Lütfen olabildiğince çabuk şifrenizi değiştirin.\n\nSaygılarımızla,\nBilgi Teknolojileri Ekibiniz";
Send-MailMessage -SmtpServer $smtpServer -From $fromEmail -To $toEmail -Subject $subject -Body $body
}
Yorumlar
- Bu komut dosyası, kullanıcılara ne zaman bildirim başlatılacağını tanımlamak için
$notificationPeriod
değişkenini kullanır, bu örnekte 14 gün öncesinden ayarlanmıştır. Get-ADUser
cmdlet’i,EmailAddress
,PasswordLastSet
vePasswordNeverExpires
özellikleri dahil kullanıcı bilgilerini alır.Where-Object
cmdlet’i, şifre son kullanma tarihi yaklaşan kullanıcıları filtreler.- Her ilgili kullanıcıya bir e-posta göndermek için
foreach
döngüsü kullanılır veSend-MailMessage
cmdlet’i ile e-posta gönderilir.
Bu komut dosyasını düzenli olarak çalıştırarak, kullanıcılar şifrelerinin sona ermesinden önce uygun önlemleri alabilir, hesap güvenliğini sürdürebilir ve destek taleplerinin sayısını azaltabilir.
Komut Örneği 3: Süresi Dolmuş Kullanıcı Hesaplarının Otomatik Olarak Devre Dışı Bırakılması
Güvenlik önlemi olarak, şifreleri süresi dolmuş kullanıcı hesaplarını otomatik olarak devre dışı bırakmak, izinsiz erişim riskini azaltabilir. Aşağıdaki PowerShell komut dosyası, şifreleri süresi dolmuş kullanıcı hesaplarını tespit eder ve bu hesapları otomatik olarak devre dışı bırakır.
# Süresi dolmuş kullanıcıları otomatik olarak devre dışı bırakma
Import-Module ActiveDirectory
$today = (Get-Date)
$expiredUsers = Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $today
}
foreach ($user in $expiredUsers) {
# Kullanıcı hesabını devre dışı bırakma
Disable-ADAccount -Identity $user.SamAccountName
Write-Output "Devre dışı bırakılan hesap: $($user.Name)"
}
Yorumlar
Import-Module ActiveDirectory
Active Directory modülünü içe aktarır, AD ile ilgili cmdlet’leri kullanmayı mümkün kılar.Get-ADUser
cmdlet’i, tüm kullanıcı bilgilerini alır veWhere-Object
kullanarak süresi dolmuş şifreleri olan kullanıcıları filtreler.foreach
döngüsü içinde,Disable-ADAccount
cmdlet’i, şifreleri süresi dolmuş kullanıcıların hesaplarını devre dışı bırakmak için kullanılır.- Script, bir kullanıcı hesabı devre dışı bırakıldığında konsola çıktı verir.
Bu komut dosyası, büyük kuruluşlarda hesap yönetimi için özellikle faydalıdır, güvenlik politikalarına uyumu otomatikleştirerek idari iş yükünü azaltır. Script’i düzenli olarak çalıştırarak, şifreleri süresi dolmuş hesapların devre dışı bırakılmasını sağlamak, sistem güvenliğini artırır.
Güvenlik Hususları
Şifre politikası ve kullanıcı hesabı yönetimini otomatikleştirirken, birkaç güvenlik hususunu göz önünde bulundurmak önemlidir. Bu script’leri uygularken ve işletirken aşağıdaki noktalara dikkat edin.
- En Az Ayrıcalık İlkesini Uygula: Script’i çalıştıran hesaba, sadece gerekli olan en az yetkiler verilmelidir. Örneğin, yalnızca kullanıcı şifre bilgilerini okuma işlemi yapılacaksa, yalnızca okuma yetkileri atanmalı ve hesapları devre dışı bırakma işlemleri için gerekli olan yetkiler verilmelidir.
- Script Depolamasını Güvenli Yap: Script’ler, potansiyel olarak hassas bilgiler içerebileceği veya sistemi değiştiren komutlar içerebileceği için, yetkisiz erişime karşı güvenli bir şekilde saklanmalıdır.
- Loglama ve İzleme: Script’ler tarafından yapılan değişiklikler uygun şekilde loglanmalı ve izlenmelidir. Bu, beklenmeyen davranışlara veya güvenlik olaylarına hızlı bir şekilde yanıt verilmesini sağlar.
- Bildirim Mekanizmalarını Sürdür: Özellikle kullanıcılara yaklaşan şifre son kullanma tarihleri hakkında bildirimde bulunan veya otomatik olarak hesapları devre dışı bırakan script’ler için, işlemler yapıldığında yöneticilere veya kullanıcılara bildirimde bulunacak mekanizmaların olması tavsiye edilir.
- Düzenli İnceleme ve Güncelleme: Script’ler, kurumsal politikalardaki değişikliklere veya Active Directory ortamındaki güncellemelere yanıt olarak düzenli olarak gözden geçirilmeli ve gerekirse güncellenmelidir.
Bu güvenlik hususlarına dikkat edilerek, bu script’ler tarafından kolaylaştırılan otomatik işlemler, kurumsal güvenlik standartlarıyla uyumlu bir şekilde verimli bir şekilde işleyebilir.
Sonuç
Active Directory kullanıcı hesaplarının şifre son kullanma tarihlerini kontrol etmek ve yönetmek için PowerShell kullanmak, kurumsal güvenliği sürdürmek için hayati öneme sahiptir. Bu makalede tanıtılan script’lerle, AD kullanıcı hesaplarının şifre son kullanma tarihlerinin etkin bir şekilde izlenmesi, sona ermeden önce bildirim yapılması ve güvenlik politikalarına dayanarak otomatik hesap devre dışı bırakılması sağlanabilir.
Bu otomatik işlemlerin, kuruluşun güvenlik politikalarını desteklemesi ve geliştirmesi önemlidir. Ancak, otomasyon, en az ayrıcalık ilkesinin uygulanması, script depolamanın güvenliği, uygun loglama ve izleme, bildirim mekanizmalarının sürdürülmesi ve düzenli inceleme ve güncelleme gibi diğer güvenlik hususlarıyla birlikte gelmelidir.
Sonuç olarak, bu en iyi uygulamalar ve otomasyon script’leri uygun bir şekilde birleştirilerek, Active Directory ortamının daha verimli ve güvenli bir şekilde yönetilmesi sağlanabilir.