Kerberos

Adını Yunan mitolojisindeki 3 başlı bir köpekten alan bu servis Windows 2000 Server ve sonrası için default kimlik doğrulama yöntemidir. Tıpkı mitolojide farklı bir dünyanın kapısında, geçişleri kontrol ettiği gibi networkte de aynı işlevi yerine getirmektedir. Bu kontrolü yaparken, client ve server arasında güvenli bir iletişimin kurulmasını sağlayan KDC (Key Distribution Center) dan yardım alır. Aslında Kerberos servisi ve onun bileşenleri, domain ortamında, kimlik doğrulama ve sonrasında kaynak erişimi için yetkilendirme sürecini ele alır. Bu süreci daha iyi tasavvur edebilmek için Kerberos servisinin nasıl çalıştığını çok iyi anlamak gerekir ki bu süreci şu üç ayak tamamlar;

 

• Kimliğini doğrulatmak yada bir servisten faydalanmak isteyen CLIENT,

• Client’ in talep ettiği servisi sağlayan SERVER,

• Hem client hemde Server tarafından güvenilen bir DC (aynı zamanda KDC)

 

Biraz karmaşık görünen Kerberos servisinin çalışma sürecini daha detaylı bir şekilde inceleyelim;

 

1. Kullanıcının logon ekranıyla karşılaşmasıyla başlayan bu süreçte, client makine kullanıcıya ait özel bilgileri (username,password) şifreleyerek DC (Domain Controller)’ ye iletir.

 

2. Kerberos servisinin, domainde tanımlı tüm Security Principal*’ lara ait bilgileri gizlilikten ödün vermeyerek saklayan KDC (Key Distribution Center) bileşeni client tarafından gönderilen bilgiyle kendi database’ ini karşılaştırır. Eğer bilgiler aynı ise süreç devam ediyor demektir.

 

3. KDC, kullanıcının üyesi olduğu tüm group bilgilerini bir liste haline getirir. Bu noktada Universal Group üyelikleri, Global Catalog üzerinden sorgulanarak liste oluşturulur. * (Domain’in kütüphanesi de denilebilir kendisine) Global Catalog rolü networkte bir yada daha fazla DC’ ye verilebilir. İlk kurulan DC aynı zamanda Global Catalog işlevi görür. (Global Catalog domain bütün objelerle ilgili bilgilerin tutulduğu DC’ dir. Domain için büyük bir kütüphane gibi çalışır benzetmesi yapılabilir. Universal Group üyelik bilgileri yalnızca Global Catalog üzerinde tutulur. İlk kurulan DC aynı zamanda Global Catalog olarak da hizmet verir. Birden fazla GC Server konfigüre etmek mümkündür.)

 

4. Bu noktada KDC, client ile güvenli iletişim kurabilmek adına bir “session key (SA)” ve TGT (Ticket Granting Ticket) üretir. Kullanıcının üye olduğu grupların listesi, kullanıcının adı, ve ne kadar süre geçerli olacağını belirleyen zaman bilgisini içeren TGT networkte bir kaynağa erişmek istediğimizde ihtiyaç duyacağımız ticket’ i talep etmek için kullanılacaktır. Son olarak KDC bu bilgileri şifreleyerek client’ a gönderir.

 

5. Domain’ e logon olma aşaması böylece sona ermiştir. Client almış olduğu SA ve TGT bilgilerini kullanarak artık hem KDC ile güvenli iletişim kurabilir hem de Kerberos servisini kullanarak domain’ e bağlı kaynaklara erişim yapabilir. ( Client bilgisayar KDC tarafından üretilen SA ve TGT değerlerini aldığında bunları daha güvenli olabilmesi adına disk yerine geçici hafıza üzerinde saklar)

 

6. Client bilgisayar, aynı domaine üye bir server üzerindeki paylaşıma erişmek istediğinde elindeki TGT ile DC üzerindeki TGS (Ticket Granting Service)’ e erişim sağlar. TGS servisi,client bilgisayar ve erişmek istediği kaynağın bulunduğu Server için bir çift “session ticket” oluşturur. Bu ticket’ lar kaynağa erişmek isteyen bilgisayar, kaynağın üzerinde olduğu server, talebin ne zaman yapıldığı ve ticket’ ların ne kadar geçerli olacağı bilgilerini içerir.

 

7. Client bilgisayar bu session ticket’ i kullanarak kaynağa erişim sağlar. Kaynağın bulunduğu Server üzerinde çalışan LSA* (Local Security Authority) servisi session ticket üzerindeki bilgileri kullanarak bir Access token yaratır. Son olarak LSA, kaynak üzerindeki ACL (Access Control List) ile Access Token’ daki SID’ leri birbirleriyle karşılaştırarak kullanıcının hangi haklarla kaynağa erişim yapması gerektiğini belirler. (Windows 2003 Server üzerinde lokal kullanıcı bilgileri, LSA (Local Security Authority) olarak bilinen bir database üzerinde tutulur. LSA, local ve auditing policy’ lerin yönetimi, kullanıcılar için kimlik doğrulama, “Access Token” oluşturma gibi işlerden sorumludur.)