Kerberos'u Anlamak: Nedir? O nasıl çalışır?
Yunan mitolojisinde Kerberos, yeraltı dünyasının kapılarını koruyan çok başlı bir köpektir. Kerberos'un teknolojideki anlamı da benzerdir: Kerberos, sistemlere ve kullanıcılara, kaynaklara erişim izni verilmeden önce kimliklerini birbirlerine kanıtlamalarını sağlayarak ağı koruyan bir kimlik doğrulama protokolüdür. Kerberos kimlik doğrulamasının nasıl çalıştığını öğrenmek ve sorunları önlemeye yönelik değerli ipuçları almak için okumaya devam edin.
Kerberos Yapısı ve İşleyişi
Kerberos, protokoldeki üç farklı aktör nedeniyle adını üç başlı köpekten almıştır:
- Müşteri: Kimliğini sağlamaya çalışan kuruluş
- Uygulama Sunucusu (AP): İstemcinin veya kullanıcının erişmek istediği hizmet
- Anahtar Dağıtım Merkezi (KDC): Bilet düzenleyen güvenilir bir üçüncü taraf
Kerberos desteği, Apple OSX/iOS ve birçok UNIX ve Linux dağıtımı da dahil olmak üzere hemen hemen her işletim sisteminde bulunur. Ancak Microsoft Active Directory en yaygın kullanılan Kerberos uygulamasıdır. Kerberos Ağ Kimlik Doğrulama Hizmeti'ni (V5) temel alır.
Microsoft, Active Directory ve Windows Server işletim sistemlerine özgü özellikleri uygulamak için bir dizi uzantı ekleyerek temel protokol spesifikasyonunu genişletti.
Active Directory'de her etki alanı denetleyicisi bir KDC görevi görür ve iki temel hizmet sağlar:
- Kimlik Doğrulama Hizmeti (AS) — Müşterilerin kimliklerini doğrular ve onlara biletler düzenler
- Bilet Verme Hizmeti (TGS) — Kimliği doğrulanmış müşterileri kabul eder ve onlara diğer kaynaklara erişmeleri için biletler düzenler
Biletler simetrik şifreleme teknolojisini kullanır. Belirli kullanıcı parolaları belirli biletleri şifrelemek ve imzalamak için kullanılır, ancak Kerberos güvenliğinin kökü yalnızca biletleri düzenleyen güvenilir üçüncü tarafın bildiği bir anahtardır.
Kerberos Kimlik Doğrulama Süreci
Kerberos kimlik doğrulamasının her adımında, paketleri değiştirilmekten veya okunmaktan korumak ve karşılıklı kimlik doğrulama sağlamak için şifreleme kullanılır. Bir istemci, isteği şifrelemek için kullanıcının parolasını kullanarak KDC'den bir kullanıcı için bir bilet ister. KDC, kullanıcının sakladığı parolayla isteğin şifresini çözebilirse istemcinin kullanıcıya doğru parolayı sağladığını bilir. KDC, kullanıcı için bir bilet verme bileti (TGT) oluşturur, bunu kullanıcının şifresiyle şifreler ve istemciye geri gönderir. İstemci bu biletin şifresini kullanıcının şifresiyle çözebilirse KDC'nin meşru olduğunu bilir.
Bir müşteri, TGT'sini ve erişmek istediği hizmetin hizmet asıl adını içeren bir bilet veren hizmet (TGS) talebini sunarak KDC'den bir hizmet için bilet talep eder. KDC, hizmetin parola karması (TGS gizli anahtarı) ile şifrelenen bir hizmet bileti (TGS) oluşturur, bileti ve kimlik doğrulayıcı mesajını paylaşılan bilet verme hizmeti oturum anahtarıyla şifreler ve son olarak TGS'yi istemciye geri gönderir.
Bir istemci, KDC'den aldığı hizmet biletini, kendi parola karmasını kullanarak mesajın şifresini çözen uygulama sunucusuna sunarak bir uygulama sunucusuna (hizmete) erişim ister. TGS'nin şifresini başarıyla çözerse uygulama sunucusu istemciye erişim izni verir.
Kerberos Kimlik Doğrulama Adımları
Şekil 1: Kerberos Kimlik Doğrulama Akışı
- KRB_AS_REQ: Kimlik Doğrulama Hizmetinden (AS) TGT isteyin
İstemcinin isteği, kullanıcının Kullanıcı Asıl Adını (UPN) ve bir zaman damgasını içerir. Kullanıcının şifre karması kullanılarak şifrelenir.
- KRB_AS_REP: TGT, Kimlik Doğrulama Hizmetinden Alındı
KDC, istemciyi veritabanında aramak için UPN'yi kullanır ve mesajın şifresini çözmeye çalışmak için kullanıcının parola karmasını kullanır.
AS, istemci kimliğini, istemci ağ adresini, zaman damgasını, yaşam süresini ve bir oturum anahtarını (SK1) içeren bir TGT oluşturur.
KDC, TGT isteğinin şifresini başarıyla çözerse ve zaman damgası KDC'nin yapılandırılmış zaman eğriliği dahilindeyse kimlik doğrulama başarılı olur.
İstemciye bir TGT ve bir TGS oturum anahtarı geri gönderilir. TGS oturum anahtarı sonraki istekleri şifrelemek için kullanılır.
- KRB_TGS_REQ: TGT ve TGS isteğini sunun
Müşteri, erişmek istediği hizmetin SPN'sini içeren bir istekle birlikte TGT'sini sunar. TGS talebi TGS oturum anahtarı ile şifrelenir.
- KRB_TGS_REP: KDC'den TGS'yi alın
KDC, TGT'yi doğrulama girişiminde bulundu; Başarılı olması durumunda, talep sahibi hakkında SID ve grup üyelikleri gibi bilgileri içeren ve hizmetin şifre karmasıyla şifrelenen bir TGS oluşturur.
TGS ve hizmet oturum anahtarları, TGS oturum anahtarı ile şifrelenerek istemciye geri gönderilir.
- KRB_AP_REQ: Yetkilendirme için TGS'yi Uygulama Sunucusuna sunun
İstemci, KDC'den aldığı TGS'yi, hizmet oturum anahtarıyla şifrelenmiş bir kimlik doğrulama mesajıyla birlikte uygulama sunucusuna gönderir.
- KRB_AP_REP: Müşteriye Hizmete Erişim Verme
İstemci mesajı alır ve servis oturum anahtarıyla şifresini çözer.
Uygulama Sunucusu, içeriğini bir etki alanı denetleyicisiyle doğrulamak için hizmet biletinden Ayrıcalık Öznitelik Sertifikasını (PAC) çıkarır.
Biletin ve PAC'ın doğrulanması yalnızca TGT'nin 20 dakikadan eski olması durumunda gerçekleşir.
Kerberos Çalışmasını Etkileyen Faktörler
Yeterince sağlanmadığı takdirde sorun yaratabilecek bir avuç faktör vardır.
- Etki alanı denetleyicileri arasında çoğaltma gereklidir.
Birden fazla etki alanı denetleyicisi (ve dolayısıyla birden fazla KDC) dağıtılırsa çoğaltmanın etkinleştirilmesi ve zamanında gerçekleşmesi gerekir. Çoğaltma başarısız olursa veya gecikirse, kullanıcı parolasını değiştirdiğinde kimlik doğrulama hataları meydana gelebilir. - İstemciler ve KDC'ler NetBIOS ve DNS ad çözümlemesini kullanmalıdır.
Kerberos Hizmet Asıl Adları normalde NetBIOS ve DNS adreslerini içerir; bu, hem KDC'nin hem de istemcinin bu adları aynı şekilde çözümleyebilmesi gerektiği anlamına gelir. Belirli durumlarda, Hizmet Asıl Adlarında IP adresleri de kullanılabilir. - İstemcilerin ve KDC'lerin saatleri senkronize edilmiş olmalıdır.
Tekrar saldırılarını önlemek için zamanın doğru ölçümü önemlidir. Kerberos, yapılandırılabilir bir zaman sapmasını (varsayılan olarak 5 dakika) destekler; bunun dışında istemci kimlik doğrulaması başarısız olur. - İstemciler ve KDC'ler ağ üzerinde iletişim kurabilmelidir.
Kerberos trafiği, tüm istemcilerden en az bir KDC'ye erişilmesi gereken TCP ve UDP bağlantı noktası 88'de gerçekleşir. - Müşterilerin, kullanıcıların ve hizmetlerin benzersiz adları olmalıdır.
Bilgisayarlar, kullanıcılar veya Hizmet Sorumlusu Adları için yinelenen kimlik bilgileri, beklenmeyen Kerberos kimlik doğrulamasına neden olabilir
Kerberos ve LDAP
Kerberos protokolü hakkında okurken, Sıklıkla Basit Dizin Erişim Protokolü'nden (LDAP) bahsedildiğini göreceksiniz. Kerberos ve LDAP, merkezi bir kullanıcı dizini (LDAP) ve güvenli kimlik doğrulama (Kerberos) hizmetleri sağlamak için yaygın olarak (Microsoft Active Directory dahil) birlikte kullanılır.
LDAP, kullanıcılar, gruplar ve diğer nesneler (bilgisayarlar gibi) hakkındaki bilgileri merkezi bir konumda saklar. Aynı zamanda basit kimlik doğrulama da sağlayabilir; ancak bu protokol, Kerberos'tan farklı olarak genellikle kullanıcının sırrının (yani şifrenin) ağ üzerinden iletilmesini gerektirir. Kullanıcının erişmek istediği her kaynak, kullanıcının parolasını işlemeli ve kullanıcının dizinde ayrı ayrı kimliğini doğrulamalıdır.
LDAP'den farklı olarak Kerberos, tek oturum açma işlevselliği sağlar. Bir kullanıcının KDC'de kimliği doğrulandıktan sonra, başka hiçbir hizmetin (intranet sitesi veya dosya paylaşımı gibi) kullanıcının parolasına ihtiyacı yoktur. KDC, her hizmetin güvendiği biletlerin düzenlenmesinden sorumludur.
LDAP ve Kerberos'un birleşimi, merkezi kullanıcı yönetimi ve kimlik doğrulama sağlar ve daha büyük ağlarda Kerberos önemli güvenlik avantajları sağlar.
Kerberos biletlerimi nasıl görebilirim?
Kerberos biletlerinizi görmek çok kolay. Microsoft Windows bilgisayarda, bir komut istemi veya PowerShell açıp klist biletleri komutunu çalıştırarak bunları numaralandırmak için klist.exe programını kullanabilirsiniz. Aşağıdaki örnekte Joe'nun dosya paylaşım erişimi olan CIFS hizmeti için dosya sunucusu1 adlı bir sunucuya bileti olduğunu görebilirsiniz.
PS C:Windowssystem32> klist tickets
Current LogonId is 0:0xe67df
Cached Tickets: (4)
#0> Client: Joe @ domain.local
Server: cifs/fileserver1.domain.local/domain.local @ DOMAIN.LOCAL
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x60a10000 -> forwardable forwarded renewable pre_authent name_canonicalize
Start Time: 7/10/2020 12:33:49 (local)
End Time: 7/10/2020 22:32:13 (local)
Renew Time: 7/17/2020 12:32:13 (local)
Session Key Type: AES-256-CTS-HMAC-SHA1-96
Cache Flags: 0x40 -> FAST
Kdc Called: DC1.domain.localÇözüm
Kerberos, iyi bilinen ve yaygın olarak kullanılan bir kimlik doğrulama protokolüdür. Microsoft Active Directory'nin kalbinde yer aldığından, her türden saldırgan tarafından kötüye kullanıma en çok hedeflenen protokollerden biri haline geldi. Netwrix, kuruluşların Active Directory'deki saldırılara karşı korunmasına ve saldırıları tespit etmesine yardımcı olmaya kendini adamıştır. Daha fazla bilgi edinmek için Netwrix Saldırı Kataloğunu ziyaret edin veya çözüm portföyümüzü keşfetmek için web sitemizi ziyaret edin.
