Warum Kerberos anstelle von NTLM in IIS verwenden?

40

Dies ist etwas, das ich nie so gut beantworten konnte, wie es mir gefällt: Was ist der wahre Vorteil der Verwendung der Kerberos-Authentifizierung in IIS anstelle von NTLM?

Ich habe viele Leute gesehen, die wirklich Mühe hatten, es einzurichten (ich selbst eingeschlossen), und ich konnte keinen guten Grund finden, es zu benutzen. Es muss aber einige ziemlich bedeutende Vorteile geben, sonst wäre es den ganzen Aufwand nicht wert, es einzurichten, oder?

Infotekka
quelle

Antworten:

66

Nur aus Windows-Sicht:

NTLM

  • Arbeiten mit sowohl externer (Nicht-Domäne) und interne Kunden
  • Arbeiten mit beiden Domänenkonten und lokalen Benutzerkonten auf dem Feld IIS
    • Bei Verwendung von Domänenkonten erfordert nur der Server eine direkte Verbindung zu einem Domänencontroller (DC).
    • Mit lokalen Konten brauchen Sie nirgendwo Konnektivität :)
    • Sie müssen nicht als der betreffende Benutzer angemeldet sein, um einen Berechtigungsnachweis zu verwenden
    • Abgesehen : das ist es nicht ungewöhnlich , dass ein DC von einem langen NTLM - Server (IIS, Exchange TMG / ISA, usw.) mit dem Volumen von NTLM - Anfragen überwältigt werden (zu mildern: MaxConcurrentAPI, AuthPersistSingleRequest(false) ., Schneller DCs) ( Self- Referenzbonus .)
  • erfordert Client-Konnektivität nur zum IIS-Server (am Site-Port nichts anderes. Dh alles geschieht über HTTP (oder HTTPS).)
  • durchqueren kann unterstützt jedes Proxy - HTTP - Keep-Alive s
    • Möglicherweise können Sie TLS / SSL verwenden, um andere zu umgehen
  • Für die Authentifizierung sind mehrere Roundtrips mit kleinen Paketen erforderlich
    • (Protokollmuster ist 401.2, 401.1, 200 mit Benutzername)
  • Kann nicht in Szenarien verwendet werden, in denen eine Double-Hop-Authentifizierung erforderlich ist
    • dh die Anmeldeinformationen des Benutzers sollen an einen Dienst auf einem anderen Computer weitergeleitet werden
  • unterstützt ältere Clients (<Win2000)
  • Ist anfällig für Abweichungen der LM-Berechtigungsstufe (nicht übereinstimmend lmcompatibilitylevel)
  • wird vom Negotiate-Paket als Fallback verwendet, wenn Curb ausfällt.
    • ( Nicht „ wenn der Zugriff verweigert mit Curb“, Curb muss brechen für NTLM verwendet werden -. In der Regel das sieht aus wie kein Ticket bekommen Wenn der Kunde ein Ticket bekommt und es ist nicht perfekt, das nicht Ursache Ausweich.)

Kerberos

  • arbeitet mit derzeit nur Domäne verbundenen Clients
    • erfordert Clientkonnektivität zu einem AD DC (TCP / UDP 88) UND dem Server (Tickets werden vom Client über den Curb-Port vom DC abgerufen und dem Server über HTTP bereitgestellt)
  • Möglicherweise kann ein Proxy durchlaufen werden. Beachten Sie jedoch den obigen DC-Punkt: Sie müssen sich ebenso wie der Server im selben Netzwerk wie ein aktiver DC befinden .

    • Wenn Sie also theoretisch eine Domain hatten, in der Clients mit Internetverbindung direkt mit einem DC mit Internetverbindung chatteten, ist dies funktionsfähig. Aber mach das nicht, wenn du das nicht schon wusstest.
    • In Reverse-Proxy-Szenarien (ISA / TMG) ​​muss sich der Protokollübergangsserver in diesem Netzwerk befinden, dh nicht auf dem Client. In diesem Fall ist der Client jedoch nicht derjenige, der das Kerberos-Bit ausführt Übergang).
  • Ticket ist langlebig (10h) , was bedeutet weniger DC - Kommunikation bei der Ticket Lebensdauer - und betont: diese Tausende bis Millionen von Anfragen retten konnte pro Client über dieses Leben - ( AuthPersistNonNTLMist immer noch eine Sache, die Kerberos - PAC Validierung verwendet , um eine Sache zu sein)

  • Erfordert einen einzelnen Roundtrip zur Authentifizierung, aber die Nutzdatengröße für die Authentifizierung ist relativ groß (normalerweise 6-16 KB) ( 401 , {(codierte) Tokengröße } 200 ).
  • kann mit (bitte immer eingeschränkter ) Delegierung verwendet werden , um die Windows-Authentifizierung des verbindenden Benutzers für den nächsten Dienst zu aktivieren
    • Um beispielsweise UserAden Zugriff auf IIS zuzulassen und dasselbe Benutzerkonto zu verwenden, wenn IIS auf SQL Server zugreift, wird die Authentifizierung delegiert.
    • ( Eingeschränkt bedeutet in diesem Zusammenhang "aber nichts anderes", zB Exchange oder eine andere SQL-Box)
  • ist derzeit das primäre Sicherheitspaket für die Verhandlungsauthentifizierung
    • Dies bedeutet, dass Windows-Domänenmitglieder es vorziehen, wenn sie es erhalten können
  • erfordert die Registrierung von SPNs , was schwierig sein kann. Regeln, die helfen .
  • erfordert die Verwendung eines Namens als Ziel, keine IP-Adresse
  • Gründe, warum Curb versagen könnte:
    • Verwenden einer IP-Adresse anstelle eines Namens
    • Kein SPN registriert
    • doppelte SPNs registriert
    • SPN gegen falsches Konto registriert ( KRB_ERR_AP_MODIFIED)
    • Keine Client-DNS / DC-Konnektivität
    • Client-Proxy-Einstellung / Lokale Intranetzone wird nicht für den Zielstandort verwendet

Während wir gerade dabei sind:

Basic

  • kann Multi-Hop. Dies geschieht jedoch, indem Sie Ihren Benutzernamen und Ihr Passwort direkt in der Ziel-Web-App veröffentlichen
    • die können dann alles machen was sie wollen mit ihnen. Irgendwas .
    • "Oh, hat ein Domain-Administrator gerade meine App verwendet? Und habe ich gerade ihre E-Mails gelesen? Dann haben Sie ihr Passwort zurückgesetzt? Awww. Schade "
  • benötigt Transportschichtsicherheit (dh TLS / SSL) für jede Form von Sicherheit.
    • und dann siehe vorherige Ausgabe
  • funktioniert mit jedem browser
    • (aber siehe erste Ausgabe )
  • Erfordert einen einzelnen Roundtrip zur Authentifizierung ( 401 , 200 )
  • kann in Multi-Hop-Szenarien verwendet werden, da Windows eine interaktive Anmeldung mit grundlegenden Anmeldeinformationen durchführen kann
    • LogonTypeMöglicherweise muss das konfiguriert werden, um dies zu erreichen. (Denken Sie, die Standardeinstellung wurde zwischen 2000 und 2003 in Netzwerkklartext geändert, kann aber falsch sein.)
    • aber wieder , siehe erste Frage .
    • Den Eindruck bekommen, dass die erste Ausgabe wirklich, wirklich wichtig ist? Es ist.

Um zusammenzufassen:

Das Einrichten von Curb kann schwierig sein, aber es gibt viele Anleitungen ( meine ), die versuchen, den Prozess zu vereinfachen, und die Tools haben sich von 2003 bis 2008 erheblich verbessert ( SetSPNSuche nach Duplikaten, was das häufigste Problem ist) ; VerwendenSETSPN -S Sie diese Option, wenn Sie eine Anleitung zur Verwendung von -A sehen, und das Leben wird glücklicher).

Eine eingeschränkte Delegation ist die Eintrittskosten wert.

TristanK
quelle
2
Technisch Curb Kunden nicht haben zu verbunden werden , um die Domäne / Realm sie verwenden möchten. Solange sie mit dem DC verbunden sind, können Sie Runas mit dem Flag / netonly verwenden und einen Prozess im Kontext eines Domänenbenutzers starten, der weiterhin ein gültiges TGT abruft, wenn die DCs über DNS-Lookups gefunden werden . Und selbst wenn DNS kaputt ist, können Sie es mithilfe von ksetup.exe technisch mit Registrierungshinweisen umgehen. Ähnliches können Sie auch mit einem Linux-Client tun. Dies sind natürlich Randfälle.
Ryan Bolger
10
  • Kerberos gilt als schnellerer und sichererer Authentifizierungsmechanismus als NTLM.
  • Aufgrund des verbindungsbasierten Charakters von NTLM war es in der Vergangenheit auch einfacher, eine Verbindung über Proxy-Server herzustellen als mit NTLM.
  • Wie Sie bemerken, ist Kerberos jedoch schwieriger in Betrieb zu nehmen und erfordert eine Verbindung zum AD, die nicht immer praktisch ist.

Ein anderer Ansatz wäre, die Authentifizierung auf negotiatebeide anstatt auf einen anderen zu setzen und diesen zu verwenden.

nedm
quelle
9

Aus dem Microsoft Application Verifier , der häufig auftretende Entwicklerfehler erkennt. Einer dieser Fehler ist die Verwendung von NTLM :

NTLM ist ein veraltetes Authentifizierungsprotokoll mit Fehlern, die möglicherweise die Sicherheit von Anwendungen und des Betriebssystems beeinträchtigen. Das wichtigste Manko ist die fehlende Serverauthentifizierung, durch die ein Angreifer Benutzer dazu verleiten kann, eine Verbindung zu einem gefälschten Server herzustellen. Als Folge der fehlenden Serverauthentifizierung können Anwendungen, die NTLM verwenden, auch für eine Art von Angriff anfällig sein, die als Reflexionsangriff bezeichnet wird. Letzteres ermöglicht es einem Angreifer, die Authentifizierungskonversation eines Benutzers mit einem legitimen Server zu missbrauchen und den Angreifer auf dem Computer des Benutzers zu authentifizieren. Die Schwachstellen von NTLM und ihre Ausnutzung sind das Ziel einer verstärkten Forschungstätigkeit in der Sicherheitsgemeinschaft.

Obwohl Kerberos seit vielen Jahren verfügbar ist, sind viele Anwendungen immer noch so geschrieben, dass sie nur NTLM verwenden. Dies verringert die Sicherheit von Anwendungen unnötig. Kerberos kann jedoch NTLM nicht in allen Szenarien ersetzen - vor allem dann, wenn ein Client sich bei Systemen authentifizieren muss, die keiner Domäne angehören (wobei ein Heimnetzwerk möglicherweise das häufigste ist). Das Negotiate-Sicherheitspaket ermöglicht einen abwärtskompatiblen Kompromiss, der nach Möglichkeit Kerberos verwendet und nur dann zu NTLM zurückkehrt, wenn es keine andere Option gibt. Durch die Umstellung des Codes auf Negotiate anstelle von NTLM wird die Sicherheit für unsere Kunden erheblich erhöht, und es werden nur wenige oder keine Anwendungskompatibilitäten eingeführt. Allein zu verhandeln ist kein Wundermittel - es gibt Fälle, in denen ein Angreifer ein Downgrade auf NTLM erzwingen kann, die jedoch erheblich schwieriger auszunutzen sind. Eine sofortige Verbesserung ist jedoch, dass Anwendungen, die für die korrekte Verwendung von Negotiate geschrieben wurden, automatisch immun gegen NTLM-Reflexionsangriffe sind.

Ein letzter Hinweis, der vor der Verwendung von NTLM warnt: In zukünftigen Versionen von Windows wird es möglich sein, die Verwendung von NTLM unter dem Betriebssystem zu deaktivieren. Wenn Anwendungen eine harte Abhängigkeit von NTLM haben, können sie sich einfach nicht authentifizieren, wenn NTLM deaktiviert ist.

Ian Boyd
quelle
3
Tolles Zitat. Lesezeichen gesetzt.
Michael-O
4

Sie sollten einen sehr wichtigen Punkt hinzufügen:

Kerberos ist seit über 20 Jahren Standard und offenes Protokoll in Unix, wohingegen NTLM eine reine proprietäre Lösung von Microsoft ist und nur Microsoft bekannt ist.

Michael-O
quelle
Es ist bei fast allen Desktop-Browsern (Mac und Windows) und (modernen) mobilen Browsern bekannt. Also nicht nur "Microsoft".
Aardvark
Nein, nur wegen Reverse Engineering. NTLM ist nicht offen und nicht öffentlich von Microsoft dokumentiert. Das ist also ein sinnloser Sicherheitsmechanismus.
Michael-O
Ich weiß nicht, was drin ist, aber: msdn.microsoft.com/en-us/library/cc236621.aspx
thinkOfaNumber
@thinkOfaNumber, das heißt, es wurde bereits vor Jahren veröffentlicht, obwohl keine einzige Funktion für die vollständige Open-Source-NTLM-Implementierung verfügbar ist. Überlegen Sie, warum nicht?
Michael-O
1

Kerberos ist erforderlich, wenn Sie sich als Benutzer ausgeben müssen, um auf Ressourcen zuzugreifen, die sich nicht auf dem iis-Server befinden.

Greg Askew
quelle