Merhaba, bu yazımız da Exchange Server 2019 üzerinde Kerberos Kimlik Doğrulamasını aktif hale getireceğiz. Yapılandırma işlemlerine başlamadan önce Kerberos ne olduğu ve Kerberos Kimlik Doğrulaması kullanmanın ortamımız için ne gibi faydaları olur bunlara değinelim.
Kerberos Nedir?
Kerberos kimlik doğrulaması Microsoft Windows tarafından kullanılan yetkilendirme teknolojisidir, Kerberos uygulamaları Apples, FreeBSD, UNIX ve Linux üzerindede bulunmaktadır.
Microsoft, Kerberos sürümlerini Windows 2000’de tanıttı. Ayrıca, platformlar arasında web siteleri ve Single-Sign-On uygulamaları için bir standart haline geldi.
Kerberos, güçlü şifreleme ve üçüncü taraf yetkilendirmesi, zararlı yazılım üreticilerinin ağınıza sızmasını çok daha zorlaştırmaktadır. Tamamen kusursuz değildir, iyi yapılandırılmış bir ortamda NTLM teknolojisine göre daha iyi bir güvenlik sağlamaktadır.
Kerberos aşağıda ki nedenlerden dolayı NTLM’e göre daha güvenilirdir.
Modern Dağıtılmış Sistem Gereksinimlerini Desteklemektedir
Kerberos, modern dağıtılmış sistemlerin gereksinimlerini karşılar. Güvenli olmayan iletişim bağlantılarıyla açık ortamlarda güvenli kimlik doğrulaması sağlamaktadır.
Mimari Olarak Sağlamdır
Kerberos’un sağlam, iyi tasarlanmış mimari temelleri, diğer sistemlerle evrimleşmesine ve bütünleşmesine izin vermektedir.
Popüler İşletim Sistemlerine Entegre Edilmiştir
Kerberos zaten popüler işletim sistemlerine ve yazılım uygulamalarına entegre edilmiştir ve BT altyapısının kritik bir bileşeni haline gelmiştir. Microsoft Windows’daki varsayılan yetkilendirme teknolojisidir. Bilgisayar korsanlarının kurumsal bir ağa erişmesini zorlaştırmak için üçüncü taraf bilet yetkilendirmesi ve güçlü şifreleme kullanır. Kerberos ile kuruluşlar, güvenliklerinden ödün verme konusunda endişelenmelerine gerek kalmadan internete erişebilirler.
Kerberos Kimlik Doğrulamasının Yararları
Kerberos’u kimlik doğrulama hizmeti olarak kullanmanın bazı önemli avantajları bulunmaktadır.
Erişim Kontrolü
Kerberos kimlik doğrulama protokolü etkili erişim denetimi sağlar. Kullanıcılar, tüm girişleri ve güvenlik politikalarının uygulanmasını takip etmek için tek bir noktadan yararlanmaktadır.
Karşılıklı Kimlik Doğrulama
Kerberos kimlik doğrulaması, hizmet sistemlerinin ve kullanıcıların birbirlerinin kimliklerini doğrulamasına olanak tanır. İşlemin tüm adımları sırasında, kullanıcı ve sunucu, etkileşimde bulundukları için gelen karşılıkların gerçek olduğunu bilmektedir.
Sınırlı Bilet Ömrü
Kerberos’taki her biletin zaman damgaları ve yaşam boyu verileri vardır ve kimlik doğrulama süresi yöneticiler tarafından denetlenebilir.
Yeniden Kullanılabilir Kimlik Doğrulama
Kerberos kimlik doğrulaması dayanıklı ve yeniden kullanılabilir. Her kullanıcının sistem tarafından yalnızca bir kez doğrulanması gerekir. Ardından, biletin ömrü boyunca, kullanıcı kişisel bilgilerini yeniden girmeye gerek kalmadan kimlik doğrulaması yapabilir. (Kaynak tüketiminizde faydası bulunmaktadır)
Güvenlik
Birden çok gizli anahtar, üçüncü taraf yetkilendirmesi ve şifreleme, Kerberos’u güvenli bir doğrulama protokolü yapar. Parolalar ağlar üzerinden gönderilmez ve gizli anahtarlar şifrelenerek saldırganların kullanıcıların veya hizmetlerin kimliğe bürünmesi zorlaşır.
- Kerberos kimlik doğrulamasını kullanırken, etki alanında oturum açan kullanıcı bir TGT alır ve etki alanının kaynaklarına erişmek için 10 saate kadar kullanabilir.
- Exchange sunucularındaki yükleri azaltın: Büyük ölçekli dağıtımlarda,
aralıklı olarak NTLM hatalarına ve kimlik doğrulama hatalarına (Outlook kullanırken parola POP-up’ları) doğrudan MAPI bağlantısı gibi NTLM ölçeklenebilirlik sorunlarıyla karşılaşabilirsiniz.
Kerberos kimlik doğrulaması, kimlik doğrulaması için zaten bir TGT‘si olduğundan, istemcinin Outlook’u her açışında yeniden kimlik doğrulaması yapma gereksinimini ortadan kaldırarak Exchange ve Etki Alanı Denetleyicileri üzerindeki oluşan trafiği azaltmaktadır.
Exchange Server 2019 Kerberos Yapılandırılması
Exchange Server için Load-Balancer ile Kerberos doğrulaması kullanabilmemiz için öncelikle ASA (Alternate Service Account) yapılandırmamız gerekmektedir.
Ortamınızda birden fazla Exchange sunucusu bulunuyorsa ve Namespace’ler ortak kullanılıyorsa kerberos kimlik doğrulaması varsayılan olarak gelmemektedir. Örneğin mail.cozumpark.com Namespace’si tek bir isim olarak kullanılıyorsa AD üzerinde bir ASA oluşturulması gerekiyor ve Exchange ortamınızı bu hesap ile bağlamanız gerekiyor.
Active Directory Üzerinde ASA Hesabı Oluşturma Adımları
ASA, Exchange sunucularının yüklü olduğu Active Directory ormanındaki bir bilgisayar hesabı veya kullanıcı objesi olarak tanımlanmaktadır.
Microsoft’un önerisine göre, bilgisayar hesabı etkileşimli oturum açmaya izin vermediğinden ve kullanıcı hesabından daha basit güvenlik ilkelerine sahip olabileceğinden, kullanıcı hesabı yerine bir bilgisayar hesabı oluşturmalısınız. Bir bilgisayar hesabı oluştururken, hesabın parolasının süresi dolmaz, ancak parola zaman zaman güncelleştirilmesi önerilir. (Parola resetleme işlemini kendi ortamınıza göre şekillendirebilirsiniz)
Bilgisayar hesabı adı belirli bir adla sınırlı değildir, ancak en fazla 15 karakter içinde olmalıdır.
ASA bilgisayar hesabını oluşturmak için PowerShell’den aşağıdaki komutu çalıştırıyoruz.
New-ADComputer -Name CP-ASA -AccountPassword (Read-Host ‘Parola Giriniz’ -AsSecureString) -Description ‘ASA Account’ -Enabled:$True -SamAccountName CP-ASA -Path “CN=Computers,DC=akkaya,DC=local”
ASA için hesap oluşumu tamamlandıktan sonra Kerberos’u desteklemek için AES 256 etkinleştirmesini gerçekleştirmemiz gerekiyor.
Set-ADComputer CP-ASA
-add @{“msDS-SupportedEncryptionTypes”=”28”}
Yeni oluşturulan ASA hesabının tüm AD etki alanı denetleyicilerine çoğaltıldığını doğrulamak için etki alanı denetleyicilerinizden birinden aşağıdaki komutu çalıştırın:
repadmin /syncall /ADPe
ASA ve SPN (Service Principle Name) İlişkilendirmesi
Şimdi, SPN’leri yeni oluşturduğumuz ASA ile ilişkilendirmemiz gerekiyor.
SPN’ler listesi aslında farklı Exchange hizmetleri için kullanılan URL’lerin listesidir:
- Outlook, HTTP üzerinden MAPI, Exchange Web Hizmetleri ve Çevrimdışı Adres Defteri için mail.cozumpark.com.
- Autodiscover Servisi için Autodiscover.cozumpark.com
SPN değerleri, tek tek sunucular yerine DNS ile eşleşmelidir.
Örneğin tüm Exchange sunucularının 2 ad alanına sahip tek bir AD sitesinde bulunduğu bir senaryoya dayandığını lütfen göz önünde bulundurun: mail.cozumpark.com & Autodiscover.cozumpark.com
Birden çok AD ortamınız varsa ve Exchange hizmetleri için birden çok AD kullanıyorsanız, kullandığınız ad alanlarının geri kalanını ASA’ya eklemeniz gerekmektedir.
Örneğin, CY-Mail.cozumpark.com & NY-Autodiscover.cozumpark.com kullanıyorsanız, mail.cozumpark.com & Autodiscover.cozumpark.com ad boşluklarına ek olarak SETSPN -S
komutunu çalıştırırken bu ad boşluklarını da eklemelisiniz.
Mailbox Sunucularında ASA Kimlik Bilgilerini Yapılandırma Adımları
Exchange Server’da Kerberos doğrulamasına izin veren temel servis, mailbox sunucu üzerinde çalışan Microsoft Exchane Server Host hizmetidir. Exchange sunucularıyla kerberos kimlik doğrulaması için ASA kimlik bilgilerini yapılandırması destekleyen tek yol, her mailbox sunucuda bulunan RollAlternateServiceAcountPassword.ps1 aracıdır.
İlgili script, ASA kimlik bilgilerini güncelleştirir ve sunuculara dağıtır.
Öncelikle komut dosyasını ilk Mailbox sunucumuzda çalıştıracağız.
Komut dosyasını ilk Posta Kutusu sunucusunda çalıştırmak için, Exchange Yönetim Kabuğu’nu (EMS) açın.
Server 2019 veya Server 2022 Core Server’da çalıştırıyorsanız(Son güncelleme ile Exchange Server 2019, Server 2022 için desteklenmeye başlandı), CMD’den LaunchEMS yazmanız yeterli olacaktır.
EMS üzerinde aşağıdaki komutları takip edebilirsiniz.
cd $exscripts
Şimdi Scripti ilk Mailbox sunucusunun adıyla (örneğimizdeki EXCSERVER) ve daha önce oluşturduğumuz gibi domain\ASA$ bilgisayar hesabının adıyla çalıştırın:
. \RollAlternateServiceAccountPassword.ps1 -ToSpecificServer EXCSERVER.akkaya.local -GenerateNewPassword AKKAYA\CP-ASA$
- “Devam et ve değişiklik yap” istediği zaman – Y’ye basın
- “AD’de ASA şifresini değiştir” istediği zaman – Y’ye basın
Script başarılı bir şekilde çalıştı ve ASA kimlik bilgilerini güncelledi.
Ortamınız da birden fazla Exchange sunucusu bulunuyorsa eğer bu ilgili Scripti çalıştırırken kullandığımız komutlar farklılık göstermektedir. Çünkü, komutu ilk Posta Kutusu sunucusunda çalıştırmak, ASA bilgisayar hesabının parolasını oluşturacak veya değiştirecektir.
Diğer tüm sunucular, komut dosyası kullanılarak önceden ayarlanmış olan parolayı kullanmaya gitmesi gerekiyor, yapılandırmayı ilk Posta Kutusu sunucusundan kopyalaması gerekiyor, bu nedenle komutlar değişkenlik gösterecek.
.\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer EXCSERVER2.cozumpark.com -CopyFrom EXCSERVER.cozumpark.com
Bu komutla ilgili scripti çalıştırdıktan sonra ilgili adımlar bir öncekinde olduğu gibidir. Diğer sunucularınızda da bu komutla çalıştırabilirsiniz.
Exchange Üzerinde ASA Kimlik Bilgilerini Doğrulama
Exchange sunucularınızın, ASA kimlik bilgileriyle doğru yapılandırıldığını doğrulamak için, aşağıdaki komutu çalıştıralım ve AlternateServiceAccountConfiguration’ın ASA bilgisayar hesabıyla güncelleştirildiğini doğruyalım.
Get-ClientAccessService EXCSERVER -IncludeAlternateServiceAccountCredentialStatus | fl Name, AlternateServiceAccountConfiguration
ASA kimlik bilgilerini tüm sunucularda doğrulamak isterseniz aşağıdaki komutu çalıştırmanız yeterli olacaktır.
Get-ClientAccessService -IncludeAlternateServiceAccountCredentialStatus | fl Name, AlternateServiceAccountConfiguration
SPN’leri ASA ile İlişkilendirme
Sunucuların yalnızca bir kısmının Kerberos kimlik doğrulamasıyla yapılandırılması durumunda, posta kutusuna bağlanmaya çalışırken veya Autodiscover servisine erişirken Parolal POP-UP’ları gelmeye devam edecektir. Bunun için tüm sunucularınızda RollAlternateServiceAcountPassword.ps1 scriptini çalıştırdığınızdan emin olmanız gerekmektedir.
Öncelikle ASA hesabımızın herhangi bir SPN ile ilişkisi var mı kontrol edelim.
Setspn -F -Q http/mail.cozumpark.com
No Such SPN Found, cevabını almanız gerekiyor. Şimdi Exchange Servislerimizde kullandığımız SPN’leri ASA ile ilişkilendirmeye başlayabiliriz.
Setspn -S http/mail.cozumpark.com AKKAYA\CP-ASA$
Setspn -S http/autodiscover.cozumpark.com AKKAYA\CP-ASA$
Ortamınız da kullanmış olduğunuz başka SPN AD’ları var ise onlarıda ilişkilendirmeniz gerekmektedir. SPN adlarını tanımlamanız yeterli olacaktır. Biz bu örneğimizde Outlook Anywhere ve Autodiscover için kullanacağız sadece.
SPN ilişkilendirme adımını tamamladık, şimdi yaptığımız işlemi doğrulayalım.
Setspn -L AKKAYA\CP-ASA$
Doğrulama işleminden sonra SPN’leri burda görebiliyoruz.
ASA ve SPN ilişkilendirme adımlarını tamamladık, şimdi İstemciler için Kerberos etkinleştirmesini gerçekleştireceğiz.
Kerberos kimlik doğrulamasını etkinleştirmenin son adımı, HTTPS ve Outlook Anywhere Üzerinden MAPI (HTTPS / OA Üzerinden RPC) ile Outlook bağlantısı için kimlik doğrulama yöntemleridir.
Kerberos kimlik doğrulaması için Outlook Anywhere desteğini ayarlamak üzere her Exchange sunucusu için aşağıdaki komutu çalıştırmanız yeterli olacak.
Get-OutlookAnywhere -Server EXCSERVER | Set-OutlookAnywhere -InternalClientAuthenticationMethod Negotiate
- Aynı anda tüm Exchange sunucularında çalıştırmak için aşağıdaki komutu çalıştırın:
OutlookAnywhere | Set-OutlookAnywhere -InternalClientAuthenticationMethod Negotiate
Kerberos kimlik doğrulaması için HTTPS üzerinden MAPI desteğini ayarlamak üzere her Exchange sunucusu için aşağıdaki komutu kullabilirsiniz
Get-MapiVirtualDirectory -Server EXCSERVER | Set-MapiVirtualDirectory -IISAuthenticationMethods Ntlm,Negotiate
- Aynı anda tüm Exchange sunucularında çalıştırmak için aşağıdaki komutu kullanabilirsiniz;
Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -IISAuthenticationMethods Ntlm,Negotiate
İstemcileri Kerberos kimlik doğrulamasıyla sınama
ASA ve Kerberos için gerekli tüm adımları tamamladık, şimdi Test işlemi gerçekleştirebiliriz.
Outlook Anywhere ve HTTPS üzerinden MAPI için kimlik doğrulama ayarlarının değiştirdik, bu ayarların en kısa sürede Outlook istemcilerine güncelleştirilmesi gerekmektedir.
Ayrıca, Exchange sunucularında Kerberos kimlik doğrulamasından sorumlu olan en önemli hizmet, varsayılan olarak başlatılan MSExchangeServiceHost hizmetidir.
Bu hizmet durdurulursa, Kerberos kimlik doğrulaması çalışmaz.
Outlook’un yeni kimlik doğrulama ayarlarıyla güncelleneceği zamanı hızlandırmak için, tüm mailbox sunucularında yapmamız gereken 2 adım bulunmakta;
- MSExchangeAutodiscoverAppPool uygulama havuzunu yeniden başlatın.
- MSExchangeServiceHost servisini yeniden başlatılması gerekmektedir.
Tüm Posta Kutusu sunucularında MSExchangeAutodiscoverAppPool uygulama havuzunu yeniden başlatmak için, Exchange sunucularından birinde Exchange Yönetim Kabuğu’ndan (EMS) aşağıdaki komutları kullanmanız yeterli olacaktır.
$cas=Get-ClientAccessService
cas.name | $ % {Invoke-Command -ComputerName $_ -ScriptBlock {Restart-WebAppPool -Name MSExchangeAutodiscoverAppPool}}
Tüm posta kutusu sunucularında MSExchangeServiceHost hizmetini yeniden başlatmak için aşağıdaki komutları çalıştırın:
$cas=Get-ClientAccessService
cas.name | $ % {Invoke-Command -ComputerName $_ -ScriptBlock {Restart-Service MSExchangeServiceHost -Force}}
MSExchangeServiceHost hizmetinin tüm Posta Kutusu sunucularında Çalışıyor durumda olduğunu doğrulamak için sonraki komutu çalıştırın:
cas.name | $ % {Get-Service MSExchangeServiceHost}
- Kerberos kullanarak Outlook bağlantısını doğrulayın:
Outlook’un Kerberos kimlik doğrulaması kullanılarak bağlandığını doğrulamanın birkaç yolu vardır.
İlk adım olarak, şu anda önbelleğe alınmış Kerberos biletlerinin bir listesini görüntüleyen Klist’i kullanabiliriz.
CMD veya PowerShell’den Klist komutunu çalıştırın:
klist
ASA bilgisayar hesabıyla ilişkilendirilmiş her SPN için bir tane olmak üzere 2 bilet olduğunu görebiliriz:
- http/mail.cozumpark.com
- http/autodiscover.cozumpark.com
klist test işleminin aslında sadece bir parçası, ilgili SPN’leri burda görmeniz İstemcilerin Kerberos ile bağlandığını doğrulamamakta. İstemcilerin Kerberos ile bağlandığını doğrulamak için C:\Program files\Microsoft\Exchange Server\V15\Logging\HttpProxy altında bulunan LOG’lara bakmamız gerekiyor. LOG dosyaları içerisinde Negotiate/TRUE görmeniz yeterli olacaktır.