Configuring MaxConcurrentAPI for NTLM Pass-Through Authentication / NTLM Doğrudan Kimlik Doğrulama için MaxConcurrentAPI Konfigurasyonu

4 Ocak 2019 tarihli TechNet’de revize gören bu makalede, authentication bottlenecks oluştuğu esnada, Net Logon service ve NTLM pass-through authentication’ın çalışma mantığını kavramak için, MaxConcurrentAPI’nin nasıl konfigure edilmesi gerektiği anlatılmaktadır.

Understanding how NTLM pass-through authentication uses the Net Logon service / NTLM doğrudan kimlik doğrulamanın Net Logon hizmetini nasıl kullandığını anlama

NTLM pass-through ([MS-APDS] Section 3.1), domain-joined bir sunucunun bir domain hesabından NTLM doğrulama isteği aldığı sırada oluşur. NTLM server, DC ile mesajları değiş doğuş yaparken Net Logon pass-through yöntemini ([MS-NRPC] Section 3.2) kullanır. Net Logon service, Server ve DC arasında güvenli bir kanal oluşturarak bilgilerin bu güvenli kanal üzerinden DC’ye iletilmesi sağlar. DC, hesabın Winlogon ve security grupları tarafından kullanılan bilgileri döndürür. Ayrıca Net Logon service, bilgisayar bir domain üyesi olduğunda otomatik olarak başlar ve yine RPC isteklerini güvenli kanal için otomatik düzenleyerek, DC’yi korumayı amaçlar. NTLM pass-through authentication’nın yanı sıra ayrıcalıklı olmayan servisler ve digest authentication, Kerberos PAC validation tarafından, Windows tabanlı bilgisayarlarda Lsass.exe içerisinde thread’ler ile gerçekleştirilir. İstekleri handle etmek için maksimum sayıda thread vardır ancak bir şekilde thread’ler bu istekleri handle edemez hale gelirse (exceed) authentication time-out oluşur.

MaxConcurrentAPI ayarı, herhangi bir zamanda güvenli kanal üzerinden itetilecek maksimum eşzamanlı, oturum açma ile ilgili, uygulama programlama arayüzü (API) isteklerini belirtir. MaxConcurrentAPI her bilgisayarda farklı şekilde ayarlanabildiğinden çeşitli etkileşimler olabilmektedir. Aşağıdaki örnek MaxConcurrentAPI’nin bu iletimleri nasıl yönettiğini açıklamaktadır. Verilen değerler default değerler olmak zorunda değildir.

  • Workstations A, B and C with MaxConcurrentAPI = 1
  • Member server A with MaxConcurrentAPI = 5
  • Member server B with MaxConcurrentAPI = 10
  • Domain controller with MaxConcurrentAPI = 10
  • Trusted domains = 7

MaxConcurrentAPI her zaman iş istasyonlarında güvenli kanal başına default 1’dir. Üye sunucular için etki alanlarında bulunan bir DC’ye sadece bir güvenli kanal atanır. Ancak yukardaki örnekte kimlik doğrulaması için sunucu A 5 thread, sunucu B ise 10 thread kullanmaktadır. DC MaxConcurrentAPI ise 10 olarak ayarlanmıştır. Toplam Net Logon service istekleri 70’dir (7×10). Ancak DC’nin MaxConcurrentAPI thread sayısı 10’dur.

MaxConcurrentAPI semaphore nesneleri kullanılarak uygulanır ve performance monitoring tool ile görüntülenebilir. Semaphore nesnesi, eşzamanlı threads sayısını MaxConcurrentAPI değerine sınırlar. Eşzamanlı isteklerin sayısı MaxConcurrentAPI değerini aşarsa, talepler sıraya alınır ve rastgele servis verilir. Thread 45 saniye beklediğinde ya da çok fazla Net Logon service isteği geldiğinde bottleneck ortaya çıkar. Bir thread timeout aldığında client makinası tarafından üye sunucu vasıtasıyla tekrar bir Net Logon service isteği DC’ye gönderilir.

Understanding Netlogon pass-through authentication / Netlogon doğrudan kimlik doğrulamasını anlama

Netlogon aşağıdaki işlevleri yerine getirir:

  • Kimlik doğrulama isteğinin iletileceği domain’i seçer.
  • Domain’deki sunucuyu seçer.
  • Kimlik doğrulama isteğini seçilen sunucu üzerinden domain controller’a iletir.

Domain adı LsaLogonUser’a iletilir. Domain adı aşağıdaki şekilde işlenmektedir:

  1. Eğer domain adı SAM veritabanındaki ad ile eşleşirse, kimlik doğrulama o bilgisayar için çalışır. Domain üyesi olan bir bilgisayarın SAM veritabanında yer alan adı, bilgisayarın adı olarak kabul edilir. Active Directory domain controller’ın hesap veritabanı adı domain’in adıdır. Domain üyesi olmayan bir bilgisayarda, tüm oturum açma istekleri yerel olarak işlenir.
  2. Belirtilen domain adı, kendi domain’i tarafından güvenilirse, kimlik doğrulama isteği güvenilen domain’e doğru aktarılır. Active Directory domain controllers üzerinde güvenilir domain’ler ayarlanabilir. Domain’in bir üyesinin isteği her zaman kendi domain controller’ına iletilir ve DC bu domain’in güvenli olup olmadığını tanımlayabilir.
  3. Domain tarafından domain adına güvenilmiyorsa, kimlik doğrulama isteği belirtilen domain adıymış gibi o bilgisayarda işlenir. Net Logon service var olmayan domain, güvenilmeyen domain ve yanlış yazılan bir domain adı arasında ayrım yapmaz.

Net Logon service domain içerisinden keşfetme işlemiyle bir sunucu seçer. Bir Windows makine kendi domain’i içerisindeki domain controller’ın adını keşfeder. Bu domain controller da, güvenli domain’lerdeki Active Directory domain contoller’ın adını keşfeder. Bu keşifleri yapan bileşen DC Locator, Net Logon service içerisinde çalışır. DC Locator yapılandırılan domain ve güvene bağlı olarak gerekli sunucuları bulmak için NETBIOS ve DNS’i kullanmaktadır.

What is MaxConcurrentApi?

Location: HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

Default:

  • domain joined workstations: 1. One call at a time on member workstations.
  • domain joined servers: 10 beginning with Windows Server 2012. 10 threads for member servers. (Prior to Windows Server 2012 default was 2.)
  • domain controllers: 10 beginning with Windows Server 2012.  10 threads for domain controllers. (Prior to Windows Server 2012 default was 1.)

Configuring MaxConcurrentApi

Varsayılan değer çoğu kurulum için optimal seviyededir ancak değerini arttırmak için registry değerini ekleyebilirsiniz.

Uyarı: MaxConcurrentApi değerini 10’dan büyük bir değere yükseltmek, bağlantı kurulan domain controller kaynaklarını tüketme veya ana bilgisayar performansını etkileme gibi diğer kaynak sorunlarına (bottleneck) neden olabilir. Bu sebeple production ortamına uygulanmadan önce mutlaka başka bir ortamda test edilmelidir. Ek olarak, hizmet yükü koşullarının her senaryoya ve iş ortamına göre değişebileceğini unutmayın. Eğer ki, servis yükü önemli ölçüde değişirse, MaxConcurrentApi değeri de değişebileceğinden, NetLogon performansının gözlemlenmesi tavsiye edilir.

To calculate the appropriate value to set MaxConcurrentAPI and configure it, see https://support.microsoft.com/en-us/help/2688798/how-to-do-performance-tuning-for-ntlm-authentication-by-using-the-maxc

Kaynak