Kerberos ve NTLM, Microsoft ortamlarında kimlik doğrulama için kullanılan iki farklı protokoldür. Kerberos, daha modern ve güvenli bir kimlik doğrulama protokolüdür. NTLM (NT LAN Manager), eski bir protokol olup daha az güvenlidir ve genellikle eski sistemlerde veya domain’e dahil olmayan makinelerde kullanılır.
Eğer Active Directory (AD) ortamında çalışan bir SQL Server yapınız varsa, Kerberos kullanmalısınız. Ancak bazı durumlarda sistem otomatik olarak NTLM’ye düşebilir.
1. NTLM Nedir?
NTLM (NT LAN Manager), Microsoft tarafından geliştirilen eski bir kimlik doğrulama protokolüdür. 1960’larda geliştirilmiş LM (Lan Manager) modelinin bir uzantısıdır. Şifreleme mekanizması zayıftır ve modern saldırılara karşı dayanıklı değildir.
Kimlik doğrulama işlemi 3 aşamalıdır:
1. Kullanıcı adı ve şifre hash’lenir
2. Sunucu ile hash karşılaştırılır
3. Eğer hash eşleşirse, erişim verilir
NTLM’in Dezavantajları:
– Kimlik doğrulama süreci güvenlik açısından zayıf (Şifre hash’leri kolay kırılabilir).
– Single Sign-On (SSO) desteği yok (Her bağlantıda kimlik doğrulama gerekir).
– Özellikle çoklu sunucu (Multi-hop) bağlantılarda çalışmaz.
– Modern güvenlik standartlarına uygun değildir.
2. Kerberos Nedir?
Kerberos, MIT tarafından geliştirilmiş ve Microsoft’un Windows 2000 ile birlikte Active Directory’ye entegre ettiği bir kimlik doğrulama protokolüdür.
– Daha güvenli ve çoklu adım kimlik doğrulaması sağlar.
– Single Sign-On (SSO) destekler, yani bir kez giriş yapınca birçok hizmete erişebilirsiniz.
– Kimlik doğrulama süreci şifreli bilet (ticket) sistemine dayanır.
– Çoklu sunucu (multi-hop) bağlantıları destekler, bu yüzden özellikle SQL Server gibi birden fazla sunucuya bağlantı gerektiren sistemler için idealdir.
Kerberos’un Çalışma Prensibi
Kerberos, 3 temel bileşenden oluşur:
1. KDC (Key Distribution Center) → Anahtar yönetimini sağlar.
2. TGT (Ticket Granting Ticket) → Kullanıcıya kimlik doğrulama bileti verir.
3. Service Ticket → Kullanıcı, belirli bir hizmete erişmek için bunu kullanır.
Kerberos kimlik doğrulaması sırasında:
1. Kullanıcı Active Directory’ye giriş yapar ve bir “TGT (Ticket Granting Ticket)” alır.
2. SQL Server gibi bir hizmete bağlanırken, bu bileti kullanarak erişim talep eder.
3. Kimlik doğrulama başarılı olursa, bir “Service Ticket” verilir ve kullanıcı hizmete bağlanır.
3. Kerberos vs NTLM Karşılaştırması
Özellik | NTLM | Kerberos |
Güvenlik | Daha düşük güvenlik | Daha güçlü güvenlik |
Kimlik Doğrulama | Şifre hash’ine dayanır | Ticket-based (bilet) kimlik doğrulama |
Single Sign-On (SSO) | Yok | Var |
Çoklu sunucu (Multi-Hop) desteği | Yok | Var |
Hız | Eski sistemlerde çalışır | Yeni sistemlerde daha iyi çalışır |
Eski sistem desteği | Alternatif olarak çalışır | Tavsiye edilir |
Güvenlik Zafiyetleri | Hash tabanlı saldırılara açık | Daha güvenli şifreleme kullanır |
4. SQL Server İçin Kerberos Kullanımı
SQL Server’da Kerberos kullanabilmeniz için şunlara dikkat etmelisiniz:
– SQL Server servis hesabı için SPN (Service Principal Name) kaydedilmiş olmalı.
– SQL Server’a bağlanırken Windows Authentication kullanılmalı.
– SQL Server client (SSMS veya uygulama), aynı domain içinde olmalı.
– Active Directory ortamında çalışıyor olmalısınız.
SPN kaydı yoksa otomatik olarak NTLM kullanılır.
SPN Kaydını Kontrol Etme
SQL Server’da kullanılan SPN’leri görmek için aşağıdaki komutu çalıştırabilirsiniz:
setspn -L DOMAIN\SQLServerServisHesabı
Eğer SPN kaydı yoksa, Kerberos yerine NTLM kullanılacaktır.
SPN Kaydı Eklemek (Elle Kayıt)
Eğer SPN eksikse, şu komutları kullanarak ekleyebilirsiniz:
setspn -S MSSQLSvc/SQLServerAdı:1433 DOMAIN\SQLServerServisHesabı
setspn -S MSSQLSvc/SQLServerAdı.DOMAIN:1433 DOMAIN\SQLServerServisHesabı
5. Hangi Durumlarda NTLM Kullanılır?
Eğer Kerberos kullanımı mümkün değilse, NTLM devreye girer.
NTLM’nin kullanıldığı durumlar:
– SQL Server ve istemcinin farklı domain’lerde olması.
– Active Directory yapılandırılmamış veya hatalı olması.
– SPN kaydının eksik olması.
– SQL Server’ın, Windows Authentication yerine SQL Authentication kullanması.
6. Sonuç: Hangi Kimlik Doğrulama Yöntemini Kullanmalısınız?
Eğer Active Directory ortamında bir SQL Server çalıştırıyorsanız, kesinlikle Kerberos kullanmalısınız.
– Daha güvenlidir
– Daha hızlıdır
– Single Sign-On (SSO) desteği sunar
– Multi-hop bağlantılar için uygundur
Ama Kerberos çalışmazsa, sistem otomatik olarak NTLM’ye geçer.
Bu yüzden SPN kayıtlarını ve AD yapılandırmanızı kontrol etmelisiniz.
Başka bir makalede görüşmek dileğiyle..
“Onlar, gaybe inanırlar, namazı dosdoğru kılarlar ve kendilerine rızık olarak verdiklerimizden infak ederler.” Bakara Suresi, 3. Ayet