authentication methods

 

Windows Domain’lerinde Kimlik Doğrulama Protokolleri

Windows domain’leri kullanıldığında, tüm kimlik bilgileri Domain Controller (DC) üzerinde saklanır. Bir kullanıcı domain kimlik bilgileriyle bir servise bağlanmak istediğinde, bu servis, bilgilerin doğru olup olmadığını doğrulamak için Domain Controller ile iletişime geçer.

Bu işlem için iki farklı kimlik doğrulama protokolü kullanılabilir:

  • Kerberos: Güncel Windows sistemlerinde varsayılan olarak kullanılan protokoldür.

  • NetNTLM: Eski sistemlerle uyumluluk için korunmuş bir protokoldür.

Her ne kadar NetNTLM artık eski kabul edilse de, çoğu ağda hâlâ her iki protokol de aktiftir. Şimdi bu protokolleri daha yakından inceleyelim.


🔐 Kerberos Kimlik Doğrulama

Kerberos, modern Windows domain’lerinde varsayılan kimlik doğrulama protokolüdür. Kullanıcılar Kerberos ile bir hizmete giriş yaptıklarında, onlara bilet (ticket) verilir. Bu biletler, kullanıcının daha önce kimlik doğrulaması yaptığını kanıtlar ve aynı kimlik bilgilerini tekrar tekrar iletmeye gerek kalmaz.

Kerberos ile kimlik doğrulama şu adımlarla gerçekleşir:

1️⃣ Kullanıcı, KDC’ye (Key Distribution Center) şu bilgileri gönderir:

  • Kullanıcı adı

  • Zaman damgası

  • Bu bilgiler, kullanıcının parolasından türetilmiş bir anahtarla şifrelenmiştir.

Not: KDC servisi, genellikle Domain Controller üzerinde çalışır.

2️⃣ KDC aşağıdaki bilgileri kullanıcıya döner:

  • TGT (Ticket Granting Ticket): Diğer servis biletlerini almaya yarayan ana bilettir.

  • Oturum Anahtarı (Session Key): İlerideki talepleri oluşturmak için kullanılır.

TGT, krbtgt hesabının parola hash’i ile şifrelenmiştir. Bu nedenle kullanıcı TGT’nin içeriğini göremez. Ancak içinde Oturum Anahtarı’nın bir kopyası da yer alır. KDC gerekirse bu bileti çözerek anahtarı tekrar elde edebilir.

3️⃣ Kullanıcı bir servise erişmek istediğinde (örneğin paylaşımlı bir klasör veya web servisi):

  • TGT

  • Kullanıcı adı ve zaman damgası (Oturum Anahtarı ile şifrelenmiş)

  • SPN (Service Principal Name): Hedef servisin ve sunucunun adı

...bu bilgileri KDC’ye göndererek TGS (Ticket Granting Service) talep eder.

4️⃣ KDC, kullanıcıya şunları gönderir:

  • TGS: Sadece belirli bir servis için geçerlidir.

  • Servis Oturum Anahtarı: Kullanıcı ile servis arasında oturum başlatmak için kullanılır.

TGS, servisin çalıştığı kullanıcı/makine hesabının hash değeri ile şifrelenmiştir. İçinde de Servis Oturum Anahtarı’nın bir kopyası bulunur.

5️⃣ Kullanıcı, TGS’i servise gönderir:

  • Servis, kendi şifre anahtarıyla TGS’i çözer

  • Servis Oturum Anahtarı’nı alır

  • Kimlik doğrulama gerçekleşir ve bağlantı kurulur.


🔁 NetNTLM Kimlik Doğrulama

NetNTLM, challenge-response (meydan okuma-yanıt) mekanizması ile çalışır. Aşamalar şu şekildedir:

1️⃣ İstemci, erişmek istediği sunucuya kimlik doğrulama isteği gönderir.

2️⃣ Sunucu, rastgele bir sayı (nonce) oluşturup istemciye gönderir.

3️⃣ İstemci:

  • Parola hash’ini alır

  • Bu hash’i, nonce ve diğer bilgilerle birleştirir

  • Elde ettiği cevabı sunucuya gönderir

4️⃣ Sunucu bu yanıtı Domain Controller’a gönderir.

5️⃣ Domain Controller, cevabı yeniden hesaplar ve istemcinin cevabıyla karşılaştırır:

  • Eğer eşleşirse: Kimlik doğrulama başarılı

  • Değilse: Erişim reddedilir

6️⃣ Sonuç, sunucuya iletilir ve sunucu da istemciye sonucu döner.

🔒 Kullanıcının parolası ya da hash’i asla doğrudan ağ üzerinden gönderilmez.

📌 Not: Eğer yerel bir kullanıcı hesabı kullanılıyorsa, sunucu parola hash’ini kendi sistemindeki SAM veritabanında bulundurduğu için Domain Controller’a gerek kalmaz. Doğrulamayı kendi başına yapabilir.