SPN nedir? SPN (Service Principal Name), Microsoft Active Directory ve Kerberos kimlik doğrulama sistemi içinde kullanılan bir tanımlayıcıdır.
Bir SPN, bir hizmetin (service) hangi kullanıcı hesabı (service account) altında çalıştığını belirler.
Bu sayede Kerberos protokolü, kullanıcıların ağ üzerindeki hizmetlere güvenli şekilde kimlik doğrulaması yapabilmesini sağlar.
Örneğin bir SQL Server servisi için SPN şöyle görünebilir:
MSSQLSvc/sqlserver.domain.local:1433
Bu tanım, “sqlserver.domain.local adresindeki SQL hizmeti, şu kullanıcı hesabına ait” anlamına gelir.
SPN Neden Önemlidir?
Bir SPN yanlış yapılandırıldığında, özellikle ayrıcalıklı (privileged) hesaplarla ilişkilendirildiyse, siber güvenlik açısından risk oluşturur.
Kerberos sistemi kimlik doğrulama sırasında şifrelenmiş bile olsa kimlik bilgilerini iletir.
Bu bilgiler ele geçirilirse, offline brute-force veya dictionary attack gibi yöntemlerle parolalar çözülebilir.
Bu saldırı türü Kerberoasting olarak bilinir ve saldırganın domain üzerinde yönetici yetkilerine erişmesine yol açabilir.
Risky SPN Nedir?
Risky SPN ifadesi, genellikle Microsoft Defender for Identity veya Entra ID (eski adıyla Azure AD) panellerinde görülen bir güvenlik uyarısıdır.
Bu uyarı, yüksek ayrıcalıklara sahip hesapların SPN yapılandırmasına sahip olduğunu belirtir.
“Bu hizmet hesabı, Kerberos bileti üzerinden parola kırma saldırılarına açık olabilir.”
Böyle bir durumda saldırgan, Kerberos bileti verilerini toplayarak parolayı çevrimdışı ortamda çözebilir.
Bu da domain ortamının tamamen ele geçirilmesiyle sonuçlanabilir.
Risky SPN Uyarısı Neden Çıkar?
- SPN, Domain Admin veya Enterprise Admin gibi yetkili hesaplara atanmışsa
- Hesap parolası uzun süredir değişmemişse
- Hesap bir service account yerine normal kullanıcı hesabı olarak kullanılıyorsa
- Delegation (temsil) yetkileri uygunsuz şekilde verilmişse
bu durumda Risky SPN alarmı üretilir.
Riskli SPN’leri Nasıl Tespit Edebilirim?
Active Directory PowerShell modülüyle tüm SPN’leri listelemek mümkündür:
Get-ADUser -Filter * -Properties ServicePrincipalName |
Where-Object { $_.ServicePrincipalName -ne $null } |
Select-Object Name, ServicePrincipalName
Buradan çıkan sonuçlarda, yüksek ayrıcalıklı hesaplar için tanımlı SPN’ler varsa özel dikkat gösterilmelidir.
Belirli Bir Kullanıcıya Ait SPN’leri Görüntülemek
Eğer belirli bir kullanıcı hesabından şüpheleniyorsanız, yalnızca o kullanıcıya ait SPN kayıtlarını da sorgulayabilirsiniz.
Bu yöntem özellikle servis hesapları veya özel erişim izinlerine sahip kullanıcılar için faydalıdır.
Get-ADUser -Identity "kullaniciadi" -Properties ServicePrincipalName |
Select-Object Name, ServicePrincipalName
Bu komut, sadece belirtilen kullanıcının SPN bilgilerini getirir.
Eğer bu kullanıcıda bir veya birden fazla SPN görünüyorsa ve hesap yüksek yetkilere sahipse, bu Risky SPN kapsamında değerlendirilmelidir.
Ek olarak, sonuçları daha kolay incelemek için şu şekilde dışa aktarabilirsiniz:
Get-ADUser -Identity "kullaniciadi" -Properties ServicePrincipalName |
Select-Object Name, ServicePrincipalName |
Export-Csv -Path "C:\SPN_Raporu.csv" -NoTypeInformation -Encoding UTF8
Böylece kullanıcıya ait SPN kayıtlarını bir CSV dosyasında detaylı biçimde inceleyebilirsiniz.
Komutları Çalıştırmadan Önce
Bu komutlar, Active Directory üzerinde değişiklik yapmaz; sadece bilgi sorgular.
Ancak doğru sonuç alabilmek için PowerShell’i yönetici (Administrator) olarak çalıştırmanız ve gerekli AD modülünün (RSAT: Active Directory Module for Windows PowerShell
) yüklü olması gerekir.
Risky SPN Sorunu Nasıl Çözülür?
1. Ayrıcalıklı Hesaplarda SPN Olmamalı
SPN, yalnızca servis hesaplarına atanmalıdır. Yönetici hesaplarında SPN varsa, bu yapılandırma risklidir.
2. Parolalar Uzun ve Karmaşık Olmalı
En az 20 karakter uzunluğunda, rastgele oluşturulmuş parolalar tercih edilmelidir.
Bu, brute-force saldırılarının süresini astronomik şekilde uzatır.
3. Managed Service Accounts (MSA/gMSA) Kullan
Windows Server ortamında Managed Service Account kullanımı, parolaları otomatik döndürür ve güvenliği artırır.
4. Düzenli Denetim Yap
SPN’leri düzenli olarak denetlemek, yapılandırma hatalarını erkenden tespit etmeyi sağlar.
Microsoft Defender veya SIEM araçları bu konuda yardımcı olur.