IIS'de NTLM yerine Kerberos'u neden kullanıyorsunuz?


40

Bu, istediğim kadar cevaplayamadığım bir şey: Kerberos kimlik doğrulamasını NTLM yerine IIS'de kullanmanın asıl avantajı nedir?

Bir çok insanın onu kurmakta gerçekten zorlandığını gördüm (kendim de dahil) ve kullanmak için iyi bir neden bulamadım. Yine de bazı önemli avantajlar olmalı, aksi taktirde bunu kurmak tüm sorunlara değmez, değil mi?

Yanıtlar:


66

Yalnızca Windows açısından bakıldığında:

NTLM

  • ile çalışmalar hem dış (non-etki) ve müşteriler
  • hem eserler alan hesaplarına ve yerel kullanıcı hesapları kutusunun IIS üzerinde
    • etki alanı hesaplarını kullanarak, yalnızca sunucu bir etki alanı denetleyicisine (DC) doğrudan bağlantı gerektirir
    • yerel hesapları kullanarak hiçbir yerde bağlantı kurmanıza gerek yok :)
    • Bir kimlik bilgisi kullanmak için söz konusu kullanıcı olarak oturum açmanıza gerek yoktur.
    • Kenara : DC NTLM isteklerinin hacmi ile yoğun NTLM sunucusu (IIS, Exchange TMG / ISA, vs) tarafından boğulmuş olması için onu değil Nadiren görülür (hafifletmek için: MaxConcurrentAPI, AuthPersistSingleRequest(false) ., Daha hızlı DH) ( Öz referans bonusu .)
  • yalnızca IIS sunucusuna istemci bağlantısı gerektirir (site bağlantı noktasında, başka hiçbir şey yoktur. Örneğin, her şey HTTP üzerinden gerçekleşir (veya HTTPS).)
  • HTTP Keep-Alive ın desteklediği tüm proxy'leri geçebilir
    • TLS / SSL’yi başkalarının yanında çalışmak için kullanabilirsiniz.
  • küçük paketlerle kimlik doğrulaması için birden fazla gidiş- dönüş gerektirir
    • (log kalıbı 401.2, 401.1, 200 kullanıcı adı ile)
  • çift ​​atlama doğrulamanın gerekli olduğu senaryolarda kullanılamaz
    • yani, kullanıcının kimlik bilgileri başka bir bilgisayardaki bir servise iletilecektir.
  • eski müşterileri destekler (<Win2000)
  • LM Yetki Düzeyi düzeyindeki farklılıklara karşı hassastır (uyumsuz lmcompatibilitylevel)
  • Curb başarısız olursa, Pazarlık paketi tarafından geri dönüş olarak kullanılır.
    • ( Değil "erişim ise reddedildi , frenlemek gerekir Curb ile" kırmak kullanılacak NTLM'de -. Genellikle bu görünüm bir bilet almıyorum sever istemci bir bilet alır ve mükemmel değilse, son çare nedeni değil yapar.)

Kerberos

  • şu anda etki alanına katılmış müşterilerle çalışır
    • bir AD DC'ye istemci bağlantısı gerektirir (tcp / udp 88) VE sunucuya (biletler, DC tarafından Curb portu üzerinden istemci tarafından alınır ve ardından HTTP kullanılarak sunucuya sağlanır)
  • belki bir proxy çapraz, ancak yukarıda DC noktasını görmek mümkün: Eğer hala sunucu yapar aktif DC ile aynı ağ üzerinde olması gerekir .

    • Dolayısıyla , teoride , internete bağlı müşterilerin doğrudan internete bağlı bir DC ile sohbet ettiği bir alanınız varsa, uygulanabilir. Ama bunu zaten bilmiyorsan bunu yapma.
    • Ters proxy senaryolarında (ISA / TMG), protokol geçiş sunucusunun o ağda olması gerekir, yani istemci değil ... ancak o zaman istemci gerçekten Kerberos bitini yapan biri değildir (mutlaka - Forms authbb için Curb geçiş).
  • bilet uzun ömürlüdür anlam (10h) daha az DC iletişimi bilet ömrü boyunca - ve vurgulamak: bu istekleri milyonlarca binlerce kurtarabilecek istemci başına o ömrü boyunca - ( AuthPersistNonNTLMhala şeydir; Kerberos PAC doğrulama bir şey olarak kullanılan)

  • kimlik doğrulaması için tek bir gidiş-dönüş gerektirir , ancak kimlik doğrulama bilgi yükü boyutu nispeten büyüktür (genelde 6-16K) ( 401 , {(kodlanmış) simge boyutu} 200 )
  • Bağlanan kullanıcının bir sonraki servise Windows kimlik doğrulamasını etkinleştirmek için (lütfen, her zaman kısıtlanmış ) yetkilendirme ile birlikte kullanılabilir
    • örneğin, UserAIIS’ye erişime izin vermek ve IIS SQL Server’a eriştiğinde aynı kullanıcı hesabını kullanmak için, bu "kimlik doğrulama temsilcisi" dır.
    • ( Bu bağlamda kısıtlanan "başka bir şey değil" anlamına gelir, örneğin Exchange veya başka bir SQL kutusu)
  • şu anda Müzakere kimlik doğrulaması için birincil güvenlik paketi
    • yani, Windows etki alanı üyeleri bunu bulabildiklerinde tercih ederler
  • yanıltıcı olabilen SPN'lerin kaydedilmesini gerektirir . Yardımcı olan kurallar .
  • IP adresi değil, hedef olarak bir ad kullanılmasını gerektirir.
  • Curb başarısız olabilir nedenleri:
    • isim yerine IP adresi kullanmak
    • SPN kayıtlı değil
    • yinelenen SPN'ler kaydedildi
    • SPN yanlış hesaba karşı kaydedildi ( KRB_ERR_AP_MODIFIED)
    • istemci DNS / DC bağlantısı yok
    • istemci vekil ayarı / Yerel İntranet Bölgesi, hedef site için kullanılmıyor

Biz varken:

Temel

  • çoklu hop olabilir. Ancak, kullanıcı adınızı ve şifrenizi doğrudan hedef web uygulamasına maruz bırakarak yapar
    • ki onlarla istediği her şeyi yapabilir. Bir şey .
    • "Ah, Sonra şifrelerini? Sıfırlama Ben sadece? Kendi e-posta okudun bir Alan Adı Yöneticisi sadece benim app kullandı? Ve Awww. Yazık "
  • ihtiyacı taşıma katmanı güvenlik güvenlik herhangi bir form için (diğer bir deyişle TLS / SSL).
    • ve sonra önceki sayıya bakın
  • herhangi bir tarayıcı ile çalışır
    • (ama ilk sayıya bakınız )
  • kimlik doğrulaması için tek bir gidiş-dönüş gerektirir ( 401 , 200 )
  • Windows, temel kimlik bilgileriyle etkileşimli bir oturum açma işlemi gerçekleştirebileceği için çoklu atlama senaryolarında kullanılabilir.
    • LogonTypeBunu başarabilmek için yapılandırılması gerekebilir (varsayılan değerin 2000 ve 2003 arasında ağ silme metninde değiştiğini, ancak yanlış hatırlayabildiğini düşünüyorum)
    • ama yine , birinci sorunu bkz .
    • İlk sayının gerçekten, gerçekten önemli olduğu izlenimini edinmek? Bu.

Sonuç olarak:

Kaldırım kenarı kurmak zor olabilir, ancak süreci basitleştirmeye çalışan birçok kılavuz var ( benimki ) ve araçlar 2003'ten 2008'e kadar büyük ölçüde gelişti ( SetSPNen yaygın kırılma sorunu olan kopyaları arayabilir) ; kullanımıSETSPN -S Eğer rehberlik -A kullanmak bkz zaman ve hayat) mutlu olacak.

Kısıtlı delegasyon kabul maliyetine değer.


2
Teknik olarak frenlemek istemci en do not var onlar kullanmak istediğiniz alan / alemine birleştirilmeye. DC'ye bağlandıkları sürece, / netonly bayrağıyla runas kullanmak ve DC'lerin DNS aramaları yoluyla bulunabiliyorsa, geçerli bir TGT çekecek olan bir etki alanı kullanıcısı bağlamında bir işlem başlatabilirsiniz. . Ve DNS bozuksa bile, ksetup.exe aracını kullanarak teknik olarak kayıt defteri ipuçlarıyla çalışabilirsiniz. Linux istemcisi ile de benzer şeyler yapabilirsiniz. Açıkçası, bunlar olsa da kenar davaları.
Ryan Bolger

10
  • Kerberos, NTLM'den daha hızlı ve daha güvenli bir kimlik doğrulama mekanizması olma ününe sahiptir.
  • Ayrıca, NTLM'nin bağlantıya dayalı doğası nedeniyle, proxy sunucularına bağlanmak NTLM'den daha kolay olmuştur.
  • Bu, not ettiğiniz gibi, Kerberos'un kalkması ve çalıştırılması daha zor ve AD ile her zaman pratik olmayan bir bağlantıya ihtiyaç duyduğunu söyledi.

Başka bir yaklaşım, kimlik doğrulamanın ayarlanması negotiateve diğeri yerine ikisinin de kullanılmasıdır.


9

Gönderen Microsoft Application Verifier genel geliştirici hataları algılar. Bu hatalardan biri NTLM kullanımıdır :

NTLM, uygulamaların ve işletim sisteminin güvenliğini tehlikeye sokan kusurlu eski bir kimlik doğrulama protokolüdür. En önemli eksiklik, bir saldırganın kullanıcıları sahtekar bir sunucuya bağlanmalarını kandırmasına izin verebilecek sunucu kimlik doğrulaması eksikliğidir. Eksik sunucu kimlik doğrulamasının bir sonucu olarak, NTLM kullanan uygulamalar "yansıma" saldırısı olarak bilinen bir tür saldırıya karşı da savunmasız olabilir. Bu sonuncusu, bir saldırganın bir kullanıcının kimlik doğrulama görüşmesini meşru bir sunucuya kaçırmasına ve saldırganı kullanıcının bilgisayarına doğrulamak için kullanmasına izin verir. NTLM'nin güvenlik açıkları ve bunları kullanma yolları, güvenlik topluluğundaki araştırma faaliyetlerini arttırma hedefidir.

Kerberos uzun yıllar boyunca mevcut olmasına rağmen, birçok uygulama hala sadece NTLM kullanmak için yazılmıştır. Bu, uygulamaların güvenliğini gereksiz yere azaltır. Bununla birlikte Kerberos, NTLM'yi tüm senaryolarda değiştiremez - temel olarak müşterinin bir etki alanına katılmamış sistemleri (belki de bunlardan en yaygın olanı olan bir ev ağı) kimliğini doğrulaması gerektiği durumlarda. Anlaşma güvenlik paketi, mümkün olduğunda Kerberos kullanan ve başka bir seçenek olmadığında yalnızca NTLM'ye geri dönen, geriye dönük bir uyumluluğa izin verir. NTLM yerine Negotiate kullanmak için kod değiştirmek, müşterilerimiz için güvenliği önemli ölçüde artıracak, ancak bazı uygulama uyumlulukları getirmeyecektir. Tek başına müzakere gümüş bir mermi değildir - bir saldırganın NTLM'ye indirgenmeye zorlayabileceği durumlar vardır, ancak bunların kullanılması oldukça zordur. Ancak, acil bir gelişme, Müzakere'yi doğru kullanmak için yazılan uygulamaların otomatik olarak NTLM yansıma saldırılarına karşı bağışık olmasıdır.

NTLM kullanımına karşı son bir uyarı kelimesi ile: Windows'un gelecekteki sürümlerinde, NTLM'nin işletim sisteminde kullanımını devre dışı bırakmak mümkün olacaktır. Uygulamaların NTLM'ye zor bir bağımlılığı varsa, NTLM devre dışı bırakıldığında kimlik doğrulaması başarısız olur.


3
Müthiş alıntı. İmi.
Michael-O,

4

Çok önemli bir nokta eklemelisiniz:

Kerberos, 20 yılı aşkın bir süredir Unix'te standart ve açık bir protokoldür, NTLM ise Microsoft'tan tamamen tescilli bir çözümdür ve yalnızca Microsoft tarafından bilinmektedir.


Neredeyse tüm masaüstü (mac ve windows) ve (modern) mobil tarayıcılar tarafından bilinir. Yani sadece "Microsoft" değil.
Aardvark

Hayır, sadece ters mühendislik nedeniyle. NTLM, Microsoft'tan halka açık bir şekilde belgelenmemiş olan açılmıyor. Yani, bu anlamsız bir güvenlik mekanizmasıdır.
Michael-O,

İçinde nedir biliyorum ama yoktur: msdn.microsoft.com/en-us/library/cc236621.aspx
thinkOfaNumber

@thinkOfaNumber, yani, bir tek tam özellik açık kaynak NTLM uygulaması mevcut olmasa da, yıllar önce piyasaya sürülmüştür. Sence neden olmasın?
Michael-O,

1

İis sunucusunda olmayan kaynaklara erişmek için kullanıcıyı taklit etmeniz gerekiyorsa Kerberos gereklidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.