Microsoft Ortamında Kerberos ile Kimlik Doğrulama

Kerberos ilk olarak Needham ve Shroeder tarafından 1978’de bulundu ve 1981’de Sytek Secure LocalNet tarafından geliştirilerek ticari ürün olarak gerçeklendi. Kerberos protokolü simetrik anahtarların bir anahtar sunucusu tarafından dağıtılması için kullanılır. Microsoft ortamında temel kimlik doğrulaması olarak Kerberos kullanılır. Bu yazıda Microsoft’un Kerberos implementasyonu incelenecektir.

Kerberos MIT tarafından ortaya atılmış, bir çok büyük kurum tarafından deskteklenmiştir. Microsoft, Kerberos ile kimlik doğrulama protokolünde bir takım özelleştirmelere gitmiş ve bu özel varyasyonunu kullanmaktadır. Microsoft tarafından kullanılan Kerberos protokolü, Windows Server 2000 ve sonrasında varsayılan olarak kullanılan oldukça güvenilir bir sistemdir. Kerberos’un kullanımda olan 2 sürümü vardır. Bunlar sürüm 4 ve sürüm 5’tir. Sürüm 4’ün açıklıklarından ötürü sürüm 5 tercih edilmektedir.

Kerberos’un temel olarak 3 tarafı vardır:

  • Hizmeti alacak olan istemci
  • Etki alanı deneleyicisi – KDC (Key Distribution Center)
  • Hizmet alınacak olan sistem/sunucu

 

Kerberos ile Kimlik Doğrulamanın Adımları

Kerberos ile kimlik doğrulamada yapılan işlem özetle, istemcinin sunucuya erişmek için KDC’den bilet alması, bu bileti sunucuya yollaması ve sonrasında da sunucu bu bilete bakarak istemcinin kimliğinin doğruluğunu kabul etmesidir. Bu başlık altında, Microsoft ortamında Kerberos ile kimlik doğrulama adımları incelenecektir. DNS sorgulamasından sonra başlayan Kerberos kimlik doğrulamasının temel olarak 6 adımı bulunmaktadır. Bu adımlar aşağıdaki gibidir.

kerberos-authentication-on-microsoft-environments-01

  1. İstemci KDC’ye kendisini ispatlamaya çalışarak ön bilet ister. Bu amaçla; istemci, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, kendi özel anahtarı (parolasının özeti) ile şifreler. Bu şifreli paketi, kullanıcı adını ve bağlı olduğu domain adını KDC’nin Authentication Service (AS) adlı servisine gönderir. Bu adıma AS_REQ denir. AS, istemcinin özel anahtarıyla Authenticator paketini deşifre ederek zaman damgasını kontrol eder. Ayrıca, DC üzerinde bulunan veritabanında (NTDS.dit) kullanıcı bilgilerini (hesap adı ve parola özeti gibi) kontrol ederek istemci bilgilerini doğrular.
  2. KDC kimliğini doğruladığı istemciye, ön bilet ve kendisi ile iletişimde kullanacağı bir oturum anahtarı (KDC_SK) gönderir. Bu amaçla, KDC’nin TGS (Ticket Granting Service) adlı servisi, ön bilet (TGT) ve oturum anahtarından (SK1) oluşan bir paketi kendi özel anahtarı (KRBTGT hesabına ait NTLM özeti) ile şifreler. Aynı oturum anahtarını içeren ikinci bir paketi istemcinin özel anahtarı (istemcinin parola özeti) ile şifreler. Bu iki şifreli paketi istemciye gönderir. Bu adıma AS_REP denir. İstemci ilk paketi açamaz, bu paketi sadece sonraki adımda kendisinin kimliğini daha önce doğrulattığını kanıtlamak için kullanacaktır. Bunun yanında, istemci ikinci paketi kendi özel anahtarı (parolasının özeti) ile açarak oturum anahtarını (SK1) elde edebilir ve KDC’nin TGS adlı servisi ile olan iletişiminde paketleri simetrik şifrelemeyle karşı tarafa göndermek için bu oturum anahtarını kullanabilir. Bu adımda kullanılan ön bilete TGT (Ticket Granting Ticket) adı verilir. Bu ön bilet içerisinde istemcinin etki alanındaki üzerindeki grupları, üyelikleri, güvenlik ilkeleri (security principles), bilet geçerlilik süresi gibi bazı bilgiler bulunmaktadır.
  3. İstemci bağlanmak istediği sunucuya kendisini ispatlamak için KDC’den noterlik (şahitlik) talep eder. Bu amaçla; istemci, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, KDC’den aldığı oturum anahtarı (SK1) ile şifreler. Bu şifreli paketi, bağlanmak istediği sunucu adını (mail sunucu, web sunucu, dosya sunucusu gibi) ve sunucunun bağlı olduğu etki alanı adını, ayrıca bir önceki adımda KDC’den aldığı ön bilet (TGT) ve oturum anahtarının (SK1) KDC özel anahtarı (KRBTGT hesabına ait parola özeti) ile şifrelenmiş paketi TGS’a geri gönderir. Kısacası; istemci, AS_REP ile AS’dan aldığı paketi, açamadığı ve işlem yapamadığı için aynen geri göndermiş oldu. Bu adıma TGS_REQ denir. KDC; özel anahtarını (KRBTGT hesabına ait parola özeti) kullanarak, ön bilet (TGT) ve oturum anahtarının (SK1) bulunduğu paketi deşifre ederek; TGT verisini ve oturum oturum anahtarını elde eder. TGS, ön bileti kontrol eder ve istediği sunucuya erişim hakkının olup olmadığına karar verir. Eğer erişim izni varsa; paketin içerisinden çıkan oturum anahtarı (SK1) ile de Authenticator paketini deşifre ederek zaman damgasını kontrol eder. Eğer zaman damgası da uygun ise, istemcinin talebine karşılık verebileceğine karar verir.
  4. KDC onayladığı (şahit olduğu) istemciye, istemcinin sunucudaki izinleri için gerekli asıl bileti ve sunucu ile iletişimde kullanacağı bir oturum anahtarını (SRV_SK) gönderir. Bu amaçla, TGS, asıl bilet ve oturum anahtarından oluşan bir paketi sunucunun özel anahtarı ile şifreler. Aynı oturum anahtarını içeren ikinci bir paketi istemci ile ortak kullandığı oturum anahtarı (KDC_SK) ile şifreler. Bu iki şifreli paketi istemciye gönderir. Bu adıma TGS_REP denir. İstemci ilk paketi açamaz, bu paketi sadece sonraki adımda kendisinin KDC tarafından onaylandığını kanıtlamak için kullanacaktır. Bunun yanında, istemci ikinci paketi TGS ile ortak olarak kullandığı oturum anahtarı ile açarak, ikinci oturum anahtarını elde edebilir ve sunucu ile olan iletişiminde paketleri simetrik şifrelemeyle karşı tarafa göndermek için bu oturum anahtarını kullanabilir. Bu adımda kullanılan asıl bilet içerisinde istemcinin sunucu üzerindeki grupları, üyelikleri, güvenlik ilkeleri (security principles), bilet geçerlilik süresi gibi bazı bilgiler bulunmaktadır.
  5. İstemci, KDC’nin şahitliğinde, sunucuya kimliğini doğrulatılır. Bu amaçla, istemci, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, KDC’den aldığı ikinci oturum anahtarı (SRV_SK) ile şifreler. Bu şifreli paketi, bir önceki adımda KDC’den aldığı asıl bilet ve ikinci oturum anahtarının sunucunun özel anahtarı ile şifrelenmiş paketi sunucuya gönderir. Bu adıma AP_REQ denir. Sunucu özel anahtarı ile asıl bilet ve ikinci oturum anahtarının bulunduğu paketi deşifre ederek ikinci oturum anahtarını elde eder. Asıl bileti kontrol etmekle beraber, paketin içerisinden çıkan oturum anahtarı ile de Authenticator paketini deşifre ederek zaman damgasını kontrol eder.
  6. Sunucu kimliğini doğruladığı istemciye geri bildirimde bulunur. Bu amaçla, sunucu, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, istemci ile ortak kullandığı oturum anahtarı (SRV_SK) ile şifreler. Bu şifreli paketi istemciye gönderir. Bu adıma AP_REP denir. Bu adım Kerberos’un tamamlanması için zorunlu bir adım değildir.

Daha teknik Kerberos yaklaşımı için bağlantıdaki yazı incelenebilir. İlgili şema şu şekildedir:

kerberos-authentication-on-microsoft-environments-02
Kerberos ile Kimlik Doğrulamanın Temel Güvenlik Unsurları

Microsoft ortamında Kerberos ile kimlik doğrulamanın temek güvenlik unsurları aşağıdaki gibidir.

  • Uzun Ömürlü Simetrik Anahtarlar” olarak da belirtilebilen sunucunun veya istemcinin özel anahtarları hiçbir zaman ağ üzerinden gönderilmemektedir. Özel anahtarlar; biletleri ve oturum anahtarlarını şifrelemekte kullanılır. Özel anahtarlar ilgili taraflarda olmakla beraber KDC üzerinde de saklanmaktadır.
  • Kısa Ömürlü / Kullan At Simetrik Anahtarlar” olarak da belirtilebilen oturum anahtarları ise KDC tarafından üretilmekte olup, oturum sonlandıktan sonra hafızadan silinmektedir.
  • Biletler varsayılan olarak 10 gün boyunca saklanır. Bu süre sonrasında bilet başkası tarafından ele geçirilmiş bile olsa kullanılamaz. Ayrıca şifre değişikliklerinden sonra da, yeni özel anahtar oluşacağı için eski bilet açılamaz ve bu sebeple bilet de değişir.
  • Kullanıcı sisteme 1. adımda şifresi ile giriş yapar. Onay alınırsa TGT’ı alır. Sonraki adımlarda elde ettiği TGT ile kaynaklara erişim sağlar. Böylece sistemde Single-Sign-On (SSO) sağlanır.
  • Tüm kimlik doğrulama işlemleri KDC üzerinde yapıldığından dolayı, istemciye hizmet verecek olan sunucularda istemci kimlik bilgileri bulunmaz. Ayrıca bir istemci veya sunucu tek bir merkezden (KDC) devre dışı bırakılabilir.
  • İletişimdeki paketlerin içerisinde zaman damgası da bulunduğundan, Kerberos tekrarlama saldırılarına karşı dirençlidir.
  • Eğer istenirse sunucu için de kimlik doğrulaması gerçekleştirilebilir. Nasıl ki istemci sunucuya kendini ispatlaması için bir bilet veriyorsa, istemci de sunucudan bir bilet isteyebilir.

 

Kerberos ile Kimlik Doğrulamanın Zayıf Noktaları

Kerberos’un bu özelliklerinin yanında, bazı zayıflıkları da bulunmaktadır. Bunlardan bazıları aşağıdaki gibidir:

  • Kerberos üzerindeki bir problemde NTLMv2 ile kimlik doğrulaması da gerçekleştirilebilmektedir. Ancak yine de ağ üzerinde birden fazla KDC kullanılmalıdır.
  • Kerberos için zaman damgası kullanılmaktadır. Varsayılan olarak 5 dakikalık bir zaman sapması olabilir (Bu değer politikalar kullanılarak değiştirilebilir). Yani DC ile 5 dakikadan daha uzun süre zaman farkı olmamalıdır. Ayrıca KDC gelen taleplere kısa sürede cevap vermelidir.
  • İstemcinin özel anahtarı, istemci bilgisayarında saklanması güvenlik zafiyetidir. Ancak diğer protokollerle karşılaştırıldığında Kerberos oldukça güvenilir sistemdir.
  • Benzer şekilde oturum anahtarı kullanıcı bilgisayarında deşifre edilir. Bilgisayarının önbelleğinde veya anahtar tablosunda (key table) saklanması güvenlik zafiyetidir.
  • Ağ üzerinde gönderilen biletlerde veya diğer paketlerde şifre tahmini yapılıp yapılmadığı anlaşılamaz. Ancak zaman kısıtından ötürü bu durum göz ardı edilebilir.

 

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.