Schlagwort-Archive: Authentifizierung

An attempt to login using SQL authentication failed

Bei einem Kunden musste ich vor einiger Zeit eine Software installieren, die nur mit einem SQL User eine Verbindung zu einer MS SQL Datenbank herstellen kann.  Dabei gab es verschiedene Probleme überhaupt physikalisch eine Verbindung herzustellen dank diverser Firewalls.

Als ich dann endlich eine Verbindung bekam, meldete die Applikation, dass das Logon am SQL Server fehlschlägt.

Also SSMS aufgemacht und das Logfile angeschaut und siehe da:
Login failed for user ’sqluser‘. Reason: An attempt to login using SQL authentication failed.
Server is configured for Windows authentication only.

Das bedeutet, dass bei der Installation vom SQL Server statt der Mixed Authentication die reine Windows Authentication ausgewählt wurde. Um das zu korrigieren geht man im SSMS auf die Server Properties. Dort kann man im Tab Security von reiner Windows Authentication auf die Mixed Authentication umstellen:
sql server properties

Anschließend muss die entsprechende SQL Instanz neugestartet werden und das Problem ist gelöst.

Grundsätzlich ist es eine gute Idee bei der Installation von SQL Server immer die mixed authentication auszuwählen. Den mitgelieferten sa Account disabled man einfach solange man ihn nicht braucht.

Nach Umstieg auf 2012R2 Domänencontroller gibt es sporadische Logonprobleme der Computerkonten (Kerberos)

Momentan wird ja fleissig migriert von Windows Server 2003 auf Windows Server 2012R2, da ja der Support in einem Jahr ausläuft.  Leider gibt es in Server 2012R2 einen Bug, der sich in einem Mixed Environment nach dem Hochstufen eines 2012R2 zum Domänencontroller oder in einem reinem 2012R2 Environment der vorher 2003er Domänencontroller enthielt, zeigt.

Dabei wird das Event 4 auf dem Domänencontroller geloggt:

Event ID: 4
Source: Kerberos
Type: Error
„The Kerberos client received a KRB_AP_ERR_MODIFIED error from the server servername/domänenname. This indicates that the password used to encrypt the Kerberos service ticket is different than that on the target server. Commonly, this is due to identically named machine accounts in the target realm (domänenname), and the client realm. Please contact your system administrator.“

Das Ganze passiert sowohl mit Clientmaschinen als auch mit Servern. Meist findet sich im Eventlog des betroffenen Computers eine enstprechende Meldung dass das Passwort für das Computerkonto geändert wurde. Das ist auch gleichzeitig die Ursache warum die Logons failen.

Die Ursache dafür liegt in den verwendeten Verschlüsselungsalgorithmen. Wenn man ein Passwort im AD setzt, dann wird dieses verschlüsselt und der dabei entstehende Hash im AD gespeichert. Da Windows Server verschiedene Algorithmen unterstützt wird dabei für jeden Algorithmus der entsprechende Hash gespeichert. Windows Server 2003 unterstützt DES und RC4. Also wird in einem reinen 2003er Environment für ein Computerkontopasswort zwei Hashs gespeichert. Wenn sich der Computer nun authentifizieren will, dann verhandeln Computer und DC einen Verschlüsselungsalgorithmus aus und vergleichen dann den Hash gegen die im AD gespeicherte Version. Stimmen beide überein, ist die Authentifizierung erfolgreich. Das ist jetzt natürlich ein bisschen vereinfacht dargestellt. Es passiert schon noch ein bisschen mehr drum herum, aber die vereinfachte Darstellung reicht um das Problem zu verstehen.

Mit Windows Server 2008 wurde zusätzlich AES als Algorithmus eingeführt. Ab diesem Zeitpunkt konnte dann – sofern ein 2008er DC natürlich im Environment steht – für jedes Passwort 3 Hashs gespeichert werden: DES, RC4 & AES. So konnte gegen einen 2008er DC mit einem „besseren“ Algorithmus authentifiziert werden als gegen einen 2003er. Der 2008er erkannte auch automatisch wenn noch kein AES Hash gespeichert war, dass er dann DES benutzen musste.

Und genau das ist das Problem im 2012R2. Aus irgendeinem Grund erkennt der 2012R2 DC sporadisch nicht wenn für einen Account kein AES Hash gespeichert ist und versucht trotzdem die Authentifizierung damit. Dabei wird dann ein generierter AES Hash gegen einen nicht im AD vorhandenen verglichen und natürlich schlägt die Authentifizierung fehl.

Glücklicherweise hat Microsoft einen Hotfix dafür bereit gestellt und Ende August auch für die Öffentlichkeit bereitgestellt:
http://support.microsoft.com/kb/2989971/en-us

KB2919355 wird wie so oft in letzter Zeit als installiert vorausgesetzt bevor man den Hotfix installieren kann.