Kerberos ve NTLM Farkları Nelerdir?

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ı

ÖzellikNTLMKerberos
GüvenlikDaha düşük güvenlikDaha güçlü güvenlik
Kimlik DoğrulamaŞifre hash’ine dayanırTicket-based (bilet) kimlik doğrulama
Single Sign-On (SSO)YokVar
Çoklu sunucu (Multi-Hop) desteğiYokVar
HızEski sistemlerde çalışırYeni sistemlerde daha iyi çalışır
Eski sistem desteğiAlternatif olarak çalışırTavsiye edilir
Güvenlik ZafiyetleriHash tabanlı saldırılara açıkDaha güvenli şifreleme kullanır

 4. SQL Server İçin Kerberos Kullanımı

SQL Server’da Kerberos kullanabilmeniz için şunlara dikkat etmelisiniz:
1-SQL Server servis hesabı için SPN (Service Principal Name) kaydedilmiş olmalı.
2-SQL Server’a bağlanırken Windows Authentication kullanılmalı.
3-SQL Server client (SSMS veya uygulama), aynı domain içinde olmalı.
4-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. Yukarıdaki komutla baktığımızda kerbelos yapılan sunucuların konuştuğu görülü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ı

MSSQLSvc/ bu ifade default şeklindedir.

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:
1- SQL Server ve istemcinin farklı domain’lerde olması.
2- Active Directory yapılandırılmamış veya hatalı olması.
3- SPN kaydının eksik olması.
4- 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.
1-Daha güvenlidir.
2- Daha hızlıdır.
3- Single Sign-On (SSO) desteği sunar.
4- 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.

Aşağıdaki sorgu ile sql server üzerinde açık olan connecitonsları görebiliriz.

select*from sys.dm_exec_connections

Yukarıdaki resimde shared memory localden bağlandığından dolayı NTLM olmasında herhangi bir sakınca bulunmamaktadır. Localdeki ssms üzerinden bağlandığımızda görülmektedir. SQL ifadesi sql server’a sql aut. ile giriş yapıldığını ama shared memory olmayan diğer NTLM bağlantısı kerberos bağlantısına geçirilmesi gerekmektedir. SQL Server kendi yerel kimlik doğrulama mekanizmasını kullanırBağlantı tamamen SQL Server’ın kendi kullanıcı veritabanı üzerinden yönetilir

Connection stringinde Integrated Security=SSPI; yazılması bağlantının windows aut. Olduğunu ve kerbelos bağlantıs sağladığını gösterir. Bu bağlantı aynı zaman ntlm yapısındada bağlantı olmasını sağlar.

Aşağıdaki komut ile sql server üzerinde hangi kullanıcıların NTLM bağlantısı olduğunu detaylı bir şekilde görebiliriz.

select  c.session_id, DB_NAME(s.database_id) AS  VERITABANI,C.auth_scheme, s.host_name,s.program_name,
s.login_name,
s.original_login_name,
s.status, c.client_net_address,c.client_tcp_port,c.local_net_address,c.local_tcp_port, 
c.net_transport, c.encrypt_option from sys.dm_exec_connections c
join sys.dm_exec_sessions s on c.session_id=s.session_id 
where C.auth_scheme LIKE 'NTLM'
select  DB_NAME(s.database_id) AS  VERITABANI,COUNT(C.auth_scheme)AS TOPLAM_NTLM from sys.dm_exec_connections c
join sys.dm_exec_sessions s on c.session_id=s.session_id where C.auth_scheme LIKE 'NTLM'
AND S.login_name NOT IN ('domainname\username')
GROUP BY DB_NAME(s.database_id) 
ORDER BY VERITABANI

Not: Bazen NTLM olarak gözükmesinin sebebi active directory tarafında sertifikalı gelen ifadenin gitmiş olduğu uygulamanın veya ortamın sertifikasız olmasıdır.

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

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir