# NTLM

NTLM (kurz für NT LAN Manager) ist ein Authentifizierungsverfahren für Rechnernetze. Es verwendet eine Challenge-Response-Authentifizierung.
Durch den Einsatz von NTLM über HTTP ist ein Single Sign-on auf Webservern oder Proxyservern unter Verwendung des Berechtigungsnachweises (Credentials) der Windows-Benutzeranmeldung möglich.

## Sicherheitsprobleme

NTLM gilt als nicht mehr sicher und sollte möglichst nicht mehr verwendet werden. Microsoft setzt als Alternative die Kerberos-Authentifizierung ein.

## Historie

NTLM war ursprünglich ein proprietäres Protokoll des Unternehmens Microsoft und daher fast ausschließlich in Produkten dieses Herstellers implementiert. Dank Reverse Engineering unterstützen jedoch beispielsweise auch Samba, Squid, Mozilla Firefox, cURL, Opera und der Apache HTTP Server dieses Protokoll. Anfang 2007 hat Microsoft seine Spezifikation auf Druck der Vereinigten Staaten und der Europäischen Union veröffentlicht.
Der Vorgänger des NTLM-Protokolls ist LM (LAN Manager), das schon im Betriebssystem OS/2 zum Einsatz kam. NTLM behob das Problem, dass lange Passwörter angreifbarer als kurze Passwörter sein konnten. Aufgrund weiterer Sicherheitsprobleme wurde NTLMv2 entwickelt und die frühere Version fortan NTLMv1 genannt. Auch in NTLMv2 sind Sicherheitsprobleme bekannt: Responses können abgefangen werden, um Replay-Angriffe auf den Server und Reflection-Angriffe auf den Client durchzuführen.

## Ablauf einer Authentifizierung

Eine Authentifizierung über NTLM beginnt damit, dass der Client den Benutzernamen an den Server sendet. Der Server sendet daraufhin als Challenge eine Zufallszahl an den Client. Der Client sendet als Response die mit dem Hashwert des Benutzerpassworts verschlüsselte Zufallszahl zurück. Der Server verschlüsselt ebenfalls die Zufallszahl mit dem Hashwert des Benutzerpassworts, das er in seiner Datenbank oder vom Domain Controller hat, vergleicht die beiden Ergebnisse und bestätigt bei Übereinstimmung die Authentifizierung. Das Benutzerpasswort wird also nicht über das unsichere Medium gesendet.
Eine Alternative zu NTLM ist das Protokoll Kerberos, das auch unter Windows seit der Einführung des Active Directory mit Windows 2000 standardmäßig zum Einsatz kommt. Wenn eine Authentifizierung mittels Kerberos nicht möglich ist, wird aber automatisch NTLM verwendet. Den Port für NTLM wählt Windows in der Grundeinstellung dynamisch.
Secure Password Authentication, kurz SPA, nennt Microsoft die Authentifizierung über NTLM für Microsoft Exchange Server.

## LmCompatibilityLevel

Mit den LmCompatibilityLevel kann konfiguriert werden, welche Authentifizierungs-Mechanismen der Client verwenden soll. Hier wird zwischen LM-, NTLM- und NTLMv2-Authentifizierungen unterschieden.
* 0 = Clients nutzen die LM- und NTLM-Authentifizierung
* 1 = Clients nutzen die LM- und NTLM-Authentifizierung sowie die NTLMv2-Authentifizierung
* 2 = Clients nutzen nur die NTLM- und NTLMv2-Authentifizierung
* 3 = Clients nutzen nur die NTLMv2-Authentifizierung. Domänencontroller akzeptieren LM-, NTLM- und NTLMv2-Authentifizierung
* 4 = Clients nutzen nur die NTLMv2-Authentifizierung. Domänencontroller lehnen LM-Authentifizierung ab und akzeptieren nur NTLM- und NTLMv2-Authentifizierung
* 5 = Clients nutzen nur die NTLMv2-Authentifizierung. Domänencontroller lehnen LM- und NTLM-Authentifizierung ab und akzeptieren nur NTLMv2-Authentifizierung