Active Directory Sıkılaştırma Serisi Bölüm 3: LDAP Signing Zorlaması

Merhaba

Active Directory Sıkılaştırma serisinin üçüncü bölümünde, domain’in kalbindeki dizin sorgularının güvenliğine odaklanıyoruz. Konu: LDAP (Lightweight Directory Access Protocol) signing.

Bölüm 1’de NTLMv1’i, Bölüm 2’de SMBv1’i ele almış, eski ve savunmasız protokolleri ortamdan temizlemenin yollarını konuşmuştuk. Bu bölümde ise bir protokolü kaldırmıyoruz; kullanmaya devam ettiğimiz ama güvenliğini zorunlu hale getirmemiz gereken bir protokolü, LDAP’ı sıkılaştırıyoruz. LDAP signing’i zorunlu kılmak, Domain Controller’lara yönelik en yaygın saldırı tekniklerinden birinin, LDAP relay’in önünü kapatır.

LDAP Signing Neden Önemli

LDAP (Lightweight Directory Access Protocol), istemcilerin ve uygulamaların Active Directory’ye sorgu göndermek, kimlik doğrulamak ve dizin nesnelerini okumak için kullandığı temel protokoldür. Sorun şu ki, LDAP varsayılan olarak imzasız (unsigned) bağlantılara izin verebilir.

Burada dikkat çeken nokta şu: İmzasız bir LDAP bağlantısında, istemci ile Domain Controller arasındaki trafiğin bütünlüğü doğrulanmaz. Bu da araya giren bir saldırganın (man-in-the-middle) trafiği değiştirmesine veya daha kritik olarak, yakaladığı bir kimlik doğrulama oturumunu Domain Controller’a aktarmasına (LDAP relay) olanak tanır. NTLM relay saldırılarının en tehlikeli hedeflerinden biri tam olarak budur: bir saldırgan, ağdaki bir kullanıcının ya da makinenin kimlik doğrulamasını yakalayıp imzasız LDAP üzerinden Domain Controller aktararak dizinde yetkili işlemler yapabilir.

LDAP signing, bağlantıya kriptografik bir bütünlük imzası ekleyerek bu senaryoyu engeller. İmzalı bir oturumda trafik değiştirilemez ve başka bir hedefe aktarılamaz; imza doğrulaması başarısız olursa bağlantı reddedilir.

Önemli bir ayrım: LDAP signing, SASL tabanlı bağlantıları (Kerberos, NTLM üzerinden Negotiate) imzalar. Şifresiz kanal üzerinden yapılan simple bind (düz metin kullanıcı adı/parola) işlemleri imzalanamaz; signing zorunlu kılındığında bu tür güvensiz bağlantılar da reddedilir. Tam koruma için LDAP signing’i, ilerleyen bölümde ele alacağımız LDAP channel binding ve LDAPS (LDAP over TLS) ile birlikte düşünmek gerekir.

Windows Server 2025 ve Güncel Durum

Microsoft, LDAP signing konusunda yıllardır kurumları zorunlu yapılandırmaya teşvik ediyor. Domain Controller’lar imzasız SASL bağlantılarını ve şifresiz simple bind’leri tarihsel olarak kabul edecek şekilde gelebiliyor; bu da pek çok ortamda sessizce açık kalmış bir risktir.

Doğru hedef, Domain Controller’ları imzayı zorunlu kılacak (Require signing) şekilde yapılandırmak. Ancak bunu doğrudan zorlamak, ortamda hala imzasız bağlantı kuran eski uygulamaların, cihazların veya yanlış yapılandırılmış istemcilerin aniden erişiminin kesilmesine yol açabilir. Bu yüzden yaklaşım, önceki bölümlerdeki mantığın aynısı: önce görmek, sonra zorlamak.

LDAP Signing Seviyeleri

İki tarafın da yapılandırması var: Domain Controller (sunucu) tarafı ve istemci tarafı.

Domain Controller tarafında ayar, registry’de şu konumda tutulur:

  • Anahtar: HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
  • Değer: LDAPServerIntegrity
Değer Anlamı Güvenlik
1 None (imza zorunlu değil) Zayıf
2 Require signing (imza zorunlu) Güçlü

İstemci tarafında ise ayar şu konumdadır:

  • Anahtar: HKLM\SYSTEM\CurrentControlSet\Services\LDAP
  • Değer: LDAPClientIntegrity
Değer Anlamı Güvenlik
0 None (imza istenmez) Zayıf
1 Negotiate signing (varsayılan) Orta
2 Require signing (imza zorunlu) Güçlü

Hedef, Domain Controller’larda LDAPServerIntegrity = 2 ve istemcilerde LDAPClientIntegrity = 2 değerlerine ulaşmaktır. Kurumsal ortamda bu değerleri registry’ye tek tek yazmak yerine Group Policy ile uygulamak en doğru yoldur.

Aşama 1: İmzasız Bağlantıları Tespit Etmek

Zorlamaya geçmeden önce ortamda hangi istemcilerin imzasız LDAP bağlantısı kurduğunu görmelisiniz. Bunun için Domain Controller’larda ayrıntılı LDAP tanılama (diagnostic) loglamasını açmanız gerekir.

Tanılama Loglamasını Açmak

Domain Controller’larda şu registry değerini ayarlayın:

  • Anahtar: HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics
  • Değer: 16 LDAP Interface Events
  • Ayar: 2 (Basic)

PowerShell ile:

$diag = "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics"
Set-ItemProperty -Path $diag -Name "16 LDAP Interface Events" -Value 2 -Type DWord

16 LDAP Interface Events değerini 2 (Basic) yapmak, Domain Controller’ın imzasız LDAP bağlantılarını ayrıntılı biçimde kaydetmesini sağlar. Komut sessizce tamamlanır; herhangi bir çıktı dönmemesi normaldir.

Bu ayar açıkken Domain Controller, imzasız bağlantı kuran her istemci için ayrıntılı bir kayıt üretir.

İlgili Olay (Event) Kayıtları

LDAP signing ile ilgili olaylar Directory Service olay günlüğüne yazılır. Anlamları şöyle:

Event ID Anlamı
2886 DC başlangıcında, imza zorunluluğunun kapalı olduğunu hatırlatan uyarı
2887 İzin verilen (reddedilmeyen) imzasız bağlantıların 24 saatlik özeti
2888 Reddedilen imzasız bağlantıların 24 saatlik özeti (imza zorunlu olduğunda)
2889 İmzasız bağlantı kuran her istemcinin ayrıntılı kaydı (tanılama seviyesi 2 gerekir)

En değerli kayıt Event 2889. Bu olay, imzasız bağlantı kuran istemcinin IP adresini ve TCP portunu, kimlik doğrulamada kullanılan hesabı ve bağlantı türünü (0 = imzasız SASL, 1 = şifresiz simple bind) içerir.

Bu kayıtları toplamak için:

Get-WinEvent -LogName "Directory Service" |
    Where-Object { $_.Id -eq 2889 } |
    Select-Object TimeCreated, Message -First 50

Bu sorgu, Directory Service olay günlüğündeki imzasız bağlantı (Event 2889) kayıtlarını listeler. Çıktı boş dönerse, tanılama açıldıktan sonra ortamda henüz imzasız LDAP bağlantısı yakalanmamış demektir; bu iyi bir işarettir, ancak periyodik işleri kaçırmamak için bir süre beklemek gerekir.

Ayrıca Event 2887 kayıtları, ortamda ne kadar imzasız trafik olduğunun 24 saatlik özetini verir; ilk bakışta sorunun büyüklüğünü ölçmek için idealdir. Öneri: tanılamayı en az bir ay açık tutun ki periyodik işler ve nadir çalışan uygulamalar da yakalanabilsin.

Aşama 2: LDAP Signing’i Zorunlu Kılmak

Event 2889 kayıtlarında görünen tüm imzasız istemcileri (eski uygulamalar, LDAP entegrasyonları, cihazlar) imzalı bağlanacak şekilde düzelttikten sonra zorlamaya geçebilirsiniz.

Group Policy ile Domain Controller Tarafı

Domain Controller’larda imzayı zorunlu kılmak için, Default Domain Controllers Policy (ya da Domain Controller’ları kapsayan bir GPO (Group Policy Object)) üzerinden şu politikayı ayarlayın:

Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options > Domain controller: LDAP server signing requirements

Bu politikayı Require signing olarak ayarlayın. Bu, LDAPServerIntegrity değerini 2 yapar.

Adımlar sırasıyla şöyle:

Security Options altında Domain controller: LDAP server signing requirements politikasını bulun. Başlangıçta durumu genellikle Not Defined olur.

Politikayı çift tıklayın, Define this policy setting kutusunu işaretleyip açılır listeden Require signing seçin ve Apply‘a tıklayın.

Windows, bu değişikliğin istemci ve uygulama uyumluluğunu etkileyebileceğine dair bir onay penceresi gösterir. Aşama 1’deki tespiti tamamladıysanız Yes ile devam edin.

Onaydan sonra ayarın Require signing olduğunu doğrulayıp OK ile pencereyi kapatın.

Politika listesinde değerin artık Require signing olduğunu görürsünüz. Değişikliğin Domain Controller’lara ulaşması için gpupdate /force çalıştırabilirsiniz.

Group Policy ile İstemci Tarafı

İstemcilerin de imzalı bağlantı kurmasını sağlamak için:

Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options > Network Security: LDAP client signing requirements

Bu politikayı Require signing olarak ayarlayın. Bu, LDAPClientIntegrity değerini 2 yapar.

Registry ile Uygulama (Tek Makine / Test)

İzole bir test veya tek makine senaryosu için registry doğrudan yazılabilir.

Domain Controller tarafında:

$ntds = "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters"
# 2 = Require signing
Set-ItemProperty -Path $ntds -Name LDAPServerIntegrity -Value 2 -Type DWord

Aynı değer Registry Editor üzerinden de görülebilir: NTDS\Parameters altında ldapserverintegrity DWORD değeri 2. Değişikliğin etkin olması için değişikliğin ardından ilgili servisin yeniden başlatılması veya makinenin yeniden başlatılması gerekebilir.

İstemci tarafında:

$ldap = "HKLM:\SYSTEM\CurrentControlSet\Services\LDAP"
# 2 = Require signing
Set-ItemProperty -Path $ldap -Name LDAPClientIntegrity -Value 2 -Type DWord

Kurumsal ortamda önerilen yöntem her zaman GPO (Group Policy Object)’dur; registry yalnızca test veya istisnai durumlar içindir.

Doğrulama

Zorlamadan sonra, Domain Controller’larda artık Event 2888 kayıtlarını görmelisiniz; bunlar reddedilen imzasız bağlantıları listeler. Bu kayıtlarda hala bir istemci görünüyorsa, o istemci henüz imzalı bağlanacak şekilde düzeltilmemiş demektir ve erişimi kesilmiştir. Bu yüzden zorlamadan önce Aşama 1’deki tespiti dikkatle yapmak kritiktir.

Sağlıklı bir sonuçta 2888 kayıtları ya hiç görünmez ya da yalnızca gerçekten güncellenmesi gereken eski birkaç istemciyi işaret eder.

Geri Alma (Rollback) Planı

Zorlama sonrası kritik bir uygulamanın erişimi kesilirse, GPO (Group Policy Object) ayarını geri alıp gpupdate /force ile hızlıca eski davranışa dönebilirsiniz. Registry ile uyguladıysanız LDAPServerIntegrity değerini 1’e (None) döndürmek imzasız bağlantılara yeniden izin verir.

Ancak bunu kalıcı bir çözüm değil, yalnızca sorunlu istemciyi imzalı bağlanacak şekilde düzeltene kadar geçici bir köprü olarak kullanın. Pilot yaklaşım burada da geçerlidir: değişikliği önce bir test Domain Controller veya sınırlı bir kapsamda uygulayın, izleyin, sonra tüm Domain Controller’lara yayın.

Genel Görünüm

LDAP signing zorlaması, Domain Controller’lara yönelik NTLM relay ve man-in-the-middle saldırılarının en etkili kapatma yollarından biri. Kaldırılacak bir protokol değil, güvenliği zorunlu hale getirilecek bir yapılandırma söz konusu.

İzlenecek yol serinin genel mantığıyla aynı: önce görünürlük (tanılama loglaması ve Event 2889 / 2887 takibi), sonra imzasız istemcileri düzeltme, ardından GPO (Group Policy Object) ile hem sunucu hem istemci tarafında Require signing zorlaması, en son da Event 2888 ile doğrulama. Bu sırayı koruduğunuzda hem LDAP relay riskini kapatır hem de üretim ortamını kesintiye uğratmadan sıkılaştırmayı tamamlarsınız.

Serinin bir sonraki bölümünde Kerberos için AES zorlamasını ele alacağız. Kimlik altyapısını katman katman güçlendirmeye devam edeceğiz.

Başka bir yazımızda görüşmek dileğiyle…

 

 

 

 

Bir yanıt yazın

Başa Dön