Checkliste für die Lösung von Kerberos-Problemen

Die Konfiguration von Kerberos ist sehr komplex, insbesondere wenn es sich um eine heterogene Systemlandschaft handelt.
Kleine Fehler schleichen sich leicht ein und können dazu führen, dass eine gerade noch funktionierende Kerberos Authentisierung plötzlich nicht mehr funktioniert.
Die Fehlersuche ist recht schwierig, da aussagekräftige Fehlermeldungen im Kerberosumfeld die Ausnahme sind. Hinzu kommt, dass Fehler oft gar nicht auf die eigentliche Kerberoskonfiguration zurückzuführen sind, sondern z.B. auf die Namensauflösung oder die Systemzeit.

Um Fehler schneller lokalisieren und beheben zu können habe ich eine Checkliste erstellt, die vielleicht dem einen oder anderen etwas weiterhilft.

Die Checkliste beruht auf den Erfahrungen, die ich in der folgender Systemlandschaft gesammelt habe:

Kerberos Clients:

  • Linux: Opensuse 11.3 (Apache Authentisierung)
  • AIX 6.1 (Samba, NFSv4)

Kerberos Server:

  • Microsoft Windows KDC (Windows 2003 DC + Windows 2008 DC)

Checkliste

Grundlegendes prüfen

  • Systemzeit prüfen (Probleme sind zu erwarten bei einem Unterschied von mehr als 5 Minuten)
  • DNS Einträge prüfen (Vorwärts- und Rückwärtsauflösung der beteiligten Rechner)
  • Funktioniert ein kinit mit einem normalen Domänenbenutzer? kinit userid
    • Falls nicht, dann ist evtl. /etc/krb5.conf falsch konfiguriert (KDC / Realm / Verschlüsselung / … falsch?)

Keytab überprüfen

  • Dateiberechtigungen des Keytabfiles prüfen (z.B. kann Apachebenutzer (wwwrun) das Keytab-File lesen?)
  • Keytab anzeigen und prüfen: klist -e -k -t meine.keytab
  • KVNO auf Kerberosserver prüfen (muss mit KVNO in Keytab übereinstimmen): kvno HTTP/meinhost.example.com
  • Keytab Authentisierung prüfen kinit -t meine.keytab -k HTTP/meinhost.example.com@EXAMPLE.COM

weitere Prüfungen:

  • Auf KDC Server(n) im Eventlog nach Fehlern schauen
    • werden z.B. Fehler bzgl. doppelten Benutzer/Computerkonten gemeldet.
  • Verschlüsselungsalgorithmen in der Kerberos Config überprüfen
    • Falls Keytab mit +DesOnly angelegt wurde, dann in aktuellen OpenSuse Versionen in der krb5.conf allow_weak_crypto auf true setzen.
    • Ist in der Windows Domäne ein Windows 2008 KDC aufgenommen worden?
      • werden in der krb5.conf keine default-enctypes angegeben, dann versucht z.B. Opensuse 11.3 bei der Kommunikation mit einem Windows KDC (ab Windows 2008) die Daten mit AES256 zu verschlüsseln. Aufgrund von Inkompatibilitäten funktioniert dies leider nicht. Deshalb sollte in der krb5.conf im Linux sichergestellt werden, dass AES256 nicht verwendet wird. z.B. durch folgende Einträge:
        • default_tkt_enctypes = arcfour-hmac des-cbc-md5 des-cbc-crc
        • default_tgs_enctypes = arcfour-hmac des-cbc-md5 des-cbc-crc
  • Prüfen ob Service/Host Principal mit einem Windowskonto verknüpft ist (auf dem KDC): setspn -L HTTP/meinhost.example.com

letzter Ausweg:

  • Pakete mit tcpdump mitschneiden und analysieren.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: