Kerberos Nedir, Nasıl Çalışır ?

142 views
Skip to first unread message

Expert_MCSE

unread,
Apr 29, 2010, 2:09:00 PM4/29/10
to sistem1503
Kerberos Nedir, Nasıl Çalışır ?
Bilgisayar ağlarının yaygınlaşması ile birlikte, bilgisayarlar arası
kimlik doğrulama önem kazanmıştır.

Burada çeşitli kimlik doğrulama (authentication) protokolleri vardır.
Bunlardan en önemlisi Kerberos protokolüdür.

Kerberos Athena Projesinin bir parçası olarak MIT (Massachusetts
Institute of Technology) tarafından geliştirilmiştir.

Kerberos açık bir ağda güvenli kimlik denetimini sağlamak için
şifreleme teknolojisini ve hakem olarak üçüncü bir taraf kullanır
(KDC).

Kerberos'un kullanımda olan iki sürümü vardır; sürüm 4 ve sürüm 5.
Sürüm 1' den sürüm 3'e kadar olan sürümler iç geliştirme sürümleri
olup hiçbir zaman yayınlanmamıştır. Sürüm 4' ün ise bir çok zayıf yönü
bulunduğundan kullanılması uygun değildir.

Biz sadece sürüm 5' den bahsedeceğiz. Kerberos 5 RFC 1510' da
tanımlanmıştır.

(http://www.ietf.org/rfc/rfc1510.txt).

Windows 2000, Windows XP , Windows Server 2003 ve Windows Server Core
varsayılan kimlik doğrulama protokolü olarak Kerberos kullanır. Ayrıca
açık kaynak kodlu sistemlerde de Kerberos kullanılmaktadır.

Kerberos Needham-Schroeder protokolünü temel alır.
Burada KDC (Key Distribution Center) olarak isimlendirilen güvenilen
üçüncü bir taraf kullanılır.

KDC iki kısımdan oluşur; Authentication Server (AS) ve Ticket Granting
Server. Kerberos kullanıcıların kimliklerini doğrulamak için bilet
(ticket) kullanır. KDC networkdeki her bir istemci yada sunucu için
gizli anahtarları tutan bir veritabanına sahiptir. Bu gizli anahtarlar
sadece KDC ve ait olduğu istemci tarafından bilinir.


Kerberos'un çalışma şekli ise aşağıdaki gibidir;

1- Kullanıcı istemci üzerinde kullanıcı ismini ve şifresini girer

2- İstemci kullanıcı şifresi üzerinde tek yönlü bir hash algoritması
uygular ve bu istemcinin gizli anahtarı olur.

3- İstemci Authentication Server'a oturum açma bilgilerini gönderir.
Oturum açma bilgileri kullanıcı adı ve domain bilgilerini içerir.
Dikkat edilirse burada kullanıcının şifresi yada gizli anahtarı
Authentication Server'a gönderilmez.

4- Authentication Server istemcinin kendi veritabanında bulunup
bulunmadığını kontrol eder, eğer mevcutsa, istemciye iki adet mesaj
gönderir.


Mesaj

A: İstemci/TGS oturum anahtarı (session key), bu kullanıcının gizli
anahtarı ile şifrelenir.
(Bu gizli anahtarı sadece KDC ve istemci biliyor. Bu yüzden bu oturum
anahtarını sadece istemci açabilir)

B. Mesaj B: Ticket-Granting Ticket. Bu bilet kullanıcı ismi ve biletin
kullanım süresi gibi bilgileri içerir ve TGS' nin kendi gizli anahtarı
ile şifrelenir.

5- İstemci bu iki mesajı aldıktan sonra İstemci/TGS oturum anahtarını
almak için Mesaj A' yı açar. Mesaj A kullanıcının kendi şifresinden
üretilen gizli anahtarı ile şifrelendiğinden kullanıcı bu mesajı
açabilir. Bu gizli anahtar TGS ile daha sonra yapılacak olan
iletişimde kullanılacaktır. Burada istemci Mesaj B' yi açamaz. Çünkü
Mesaj B sadece KDC tarafından bilinen KDC' nin kendi gizli anahtarı
ile şifrelenmiştir. Bu işlemin sonucunda istemci kimlik doğrulamasını
başarıyla yapmıştır Kerberos protokolünü kullanarak domaindeki diğer
kaynaklara erişmeye hazırdır.

Buraya kadarki adımlar kullanıcının oturum açmasına kadar olan
kısımdı. Şimdide istemcinin bir sunucuya erişimi sırasındaki adımları
inceleyelim;

1- İstemci aynı domain'deki bir sunucuya erişmek istediğinde TGS' ye
şu iki mesajı gönderir;

a- Mesaj C: Mesaj B' de aldığı TGT ve erişilmek istenilen sunucu ID'si

b- Mesaj D: İstemci ID' si ve Zaman bilgisi (TimeStamp) istemci/TGS
oturum anahtarı ile şifrelenir

2- TGS bu iki mesajı aldıktan sonra, Mesaj D' yi istemci/TGS oturum
anahtarı ile açar ve sonrasında istemciye şu iki mesajı gönderir;

a- Mesaj E: İstemci-Sunucu bileti. Bu bilet İstemci ID, istemci
network adresi, geçerlilik süresi ve İstemci/Sunucu oturum (session)
anahtarı bilgilerini içerir. Bu mesaj sunucunun gizli anahtarı ile
şifrelenir.

b- Mesaj F: İstemci/Sunucu oturum (session) anahtarı, İstemci/TGS
oturum anahtarı ile şifrelenmiştir.

3- Mesaj E ve F' yi istemci aldıktan sonra, istemci artık sunucuya
bağlanmak için gerekli bilgilere sahiptir. Ve istemci sunucuya
bağlanıp şu iki mesajı gönderir;

a- Mesaj E: Bir önceki adımdaki Mesaj E' yi gönderir.

b- Mesaj G: İstemci ID' si ve Timestamp bilgisini gönderir. Bu
mesajıda İstemci/Sunucu oturum anahtarı ile şifreler.

4- Sunucu kendi gizli anahtarı ile Mesaj E' yi açar. Ve bu mesajın
içerisinden İstemci/Sunucu oturum anahtarını alır. (Burada dikkat
edilmesi gereken husus Mesaj E' yi sadece bağlanılan sunucunun
açabilmesidir. Sunucu bu mesajı açtığı zaman bunun güvenilen bir
kaynaktan geldiğini bilir. Çünkü bu mesaj sunucunun gizli anahtarı ile
şifrelenmiştir ve bu anahtar sadece kendisinde ve KDC' de mevcuttur.)
Bu anahtarlada Mesaj G' yi açar. Daha sonra İstemciye kimlik
doğrulamasını onaylamak için şu mesajı gönderir;

a- Mesaj H: Mesaj G' deki Timestamp değerini bir artırır. Bu mesajı
istemci/sunucu oturum anahtarı ile şifreler.

5- İstemci mesajı aldıktan sonra timestamp' in doğru olarak
güncellendiğini kontrol eder. Eğer bu işlem doğru olarak yapıldıysa
istemci artık sunucuya güvenebilir ve sunucuya istenen servisler için
bağlantı kurar.
Burada dikkat edilirse şifreler hiç bir zaman networkde dağıtılmıyor.
Bağlanılan sunucuda bağlantı isteğini sadece kendi gili anahtarını
kullanarak onaylıyor. KDC' ye bağlanmaya hiç bir şekilde ihtiyaç
duymuyor.
Tüm bunların yanında Kerberos protokolü kullanıldığında şu durumlara
dikkat etmek gerekir;

a- Eğer Kerberos sunucusu bir adet ise bu sunucu da oluşacak bir
problem sonrasında kullanıcılar hiç bir şekilde kimlik doğrulaması
yapamayacaklar ve kaynaklara erişemeyeceklerdir. Bu problemi aşmak
için birden fazla Kerberos sunucusu kullanmak gerekir.

b- Kerberos protokolünde kimlik doğrulama esnasında Timestampler
kullanıldığından dolayı zaman ayarı önemli. Varsayılan ayarlarda en
fazla 5 dakikalık bir zaman sapması olabilir. Zamanın tüm host' larda
aynı olması için NTP sunucusu kullanılabilir.


Reply all
Reply to author
Forward
0 new messages