Yetkili Hesaplar ve Gruplar Raporlaması yazımızda sizlere active directory üzerinde bulunan özel yetkilere sahip grupların üyeleri hakkında bilgi edinilmesi ve düzenli olarak takip edilmesi için rapor hazırladım. Bu rapor içerisinde kritik olarak nitelendirdiğimiz gruplarımız bulunmaktadır.
Gruplar;
- Domain Admins
- Enterprise Admins
- Administrators
- Schema Admins
- Server Operators
- Account Operators
- Backup Operators
- Print Operators
Bunun dışında yetkili olarak nitelendirilecek administrator kullanıcı ve guest kullanıcısına ait her türlü bilgiler bulunmaktadır.
Ayrıca Admin Count 1 olan kullanıcıların listesini HTML formatında raporlamak için sizlere güzel bir powershell script sunmaktayız.
Rapor sonuç olarak bizlere bir HTML formatında çıktı verecektir. Bu rapor sayesinde kritik gruplarınızda olan değişikleri takip edebilir , ayrıca kritik kullanıcılarınızı password değişikleri ve logon zamanlarını kontrol edebilirsiniz.
Raporun görünüşü ve script’i aşağıda yayınlanmıştır.
Raporun ilk kısmında gruplara ait bilgileri görebiliyorsunuz. Kendi sistemlerinizde bulunan kritik gruplarıda buraya ekleyebilirsiniz. Yazının en sonunda bunun için kod parçası vereceğim.Burada object class ile beraber kullanıcı mı yoksa bilgisayar mı olarak ayırt olsun diye koyduk. Ayrıca -Recursive kaldırırsanız grupları da görebilirsiniz.
Ayrıca Admin Count 1 olan kullanıcılar sıralanmıştır.
Bu kısımda ise Administrator,guest ve krbtgt hesaplarını ekledim. Sizlerin kullandığı kritik hesaplar var ise ekleyebilirsiniz. Onları eklemek için küçük kod parçacığında vereceğim. Burada En son yanlış şifre , kaç kere yanlış şifre , en son ne zaman logon olundu , kaç kere logon olundu ve en son şifresi ne zaman değiştirildi sütunları bulunmaktadır.
Aşağıda tüm script paylaşımıştır. Powershell ISE’yi admin çalıştırarak kopyalın ve yapıştırın. Daha sonra çalıştırın en son olarak sizlere rapor açılacaktır. Ayrıca C diskinin rootuna reports.html olarak html formatında bir rapor oluşturacaktır.
$adreports = "<h1>Privileged Account Information Report</h1>"
$domainadmins = Get-ADGroupMember -Identity "Domain Admins" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Domain Admins</h2>"
$enterpriseadmin = Get-ADGroupMember -Identity "Enterprise Admins" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Enterprise Admins</h2>"
$administrators=Get-ADGroupMember -Identity "Administrators" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Administrators</h2>"
$schemaadmins=Get-ADGroupMember -Identity "Schema Admins" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Schema Admins</h2>"
$serveroperators=Get-ADGroupMember -Identity "Schema Admins" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Schema Admins</h2>"
$accountoperators=Get-ADGroupMember -Identity "Account Operators" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Account Operators</h2>"
$backupoperators=Get-ADGroupMember -Identity "Backup Operators" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Backup Operators</h2>"
$printoperators=Get-ADGroupMember -Identity "Print Operators" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Print Operators</h2>"
$admincount = get-aduser -Filter { adminCount -eq 1 } -Properties * | ConvertTo-Html -Property Name, SamAccountName,AdminCount -PreContent "<h2>Admin Count</h2>"
$administrator=get-aduser -Identity "administrator" -Properties * | ConvertTo-Html -Property Name, LastBadPasswordAttempt,BadPwdCount,LastLogonDate,LogonCount,PasswordLastSet -PreContent "<h2>Administrator Account</h2>"
$guest=get-aduser -Identity "guest" -Properties * | ConvertTo-Html -Property Name, LastBadPasswordAttempt,BadPwdCount,LastLogonDate,LogonCount,PasswordLastSet -PreContent "<h2>Guest Account</h2>"
$krbtgt=get-aduser -Identity "krbtgt" -Properties * | ConvertTo-Html -Property Name, PasswordLastSet -PreContent "<h2>krbtgt Account</h2>"
$header = @"
<style>
h1 {
font-family: Arial, Helvetica, sans-serif;
color: #e68a00;
font-size: 28px;
}
h2 {
font-family: Arial, Helvetica, sans-serif;
color: #000099;
font-size: 16px;
}
table {
font-size: 12px;
border: 0px;
font-family: Arial, Helvetica, sans-serif;
}
td {
padding: 4px;
margin: 0px;
border: 0;
}
th {
background: #395870;
background: linear-gradient(#49708f, #293f50);
color: #fff;
font-size: 11px;
text-transform: uppercase;
padding: 10px 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #f0f0f2;
}
#CreationDate {
font-family: Arial, Helvetica, sans-serif;
color: #ff3300;
font-size: 12px;
}
</style>
"@
$path="C:\reports.html"
$Report = ConvertTo-HTML -Head $header -Body "$adreports,$domainadmins,$enterpriseadmin,$schemaadmins,$serveroperators,$accountoperators,$backupoperators,$printoperators,$admincount,$administrator,$guest,$krbtgt" -Title "Privileged Account Information Report" -PostContent "<p>Creation Date: $(Get-Date)<p>" | Out-File -FilePath "$path"
Invoke-Item -Path $path
Kendi İstediğiniz grupları eklemek için ;
$Grup_adı = Get-ADGroupMember -Identity "Grup Adı" -Recursive | ConvertTo-Html -Property Name, objectClass -PreContent "<h2>Açıklama</h2>"
$Report = ConvertTo-HTML -Head $header -Body "$grup_adı"
Takip etmek istediğiniz ekstra bir user varsa onuda ekleyebilirsiniz.
$Account_Adı=get-aduser -Identity "Account_Adı" -Properties * | ConvertTo-Html -Property Name, LastBadPasswordAttempt,BadPwdCount,LastLogonDate,LogonCount,PasswordLastSet -PreContent "<h2>Açıklama</h2>"
$Report = ConvertTo-HTML -Head $header -Body "$Account_Adı"
Sonuç olarak Active Directory tarafında küçük bir takip projesi olmuştur. Kritik Gruplar ve kritik olarak değerlendirilen yetkili kullanıcıların izlenmesine olanak sağlayan bir script olmuştur. Yetkili Hesaplar ve Gruplar Raporlaması sayesinde rahatça izleyebilmekteyiz.
Diğer yazılarımızı aşağıdaki kategorilerden takip edebilirsiniz.