OpenLDAP und Kerberos, es wächst zusammen was zusammen gehört

Immer wieder sehe ich  bei Kunden, dass sie zwar einen OpenLDAP-Server einsetzen, den in den meisten Fällen auch via TLS absichern, wenn es um Verbindungen zum und zwischen den OpenLDAP-Server geht, aber in den seltensten Fällen wird zusätzlich Kerberos eingesetzt um die Sicherheit zu erhöhen. Die folgenden Gründe werde dann immer angeführt:

  • Der Aufwand ist zu hoch.
  • Nur ein geringer Sicherheitsgewinn.
  • Die Pflege des Kerberos ist zu aufwendig.
  • Die Schulung der Mitarbeiter ist zu aufwendig.
  • Zu lange Einarbeitungszeiten.

Noch besser sind dann die folgenden Argumente die auch immer mal wieder auftauchen:

  • Wir nutzen doch schon TLS das muss reichen.
  • Hier kommt eh niemand rein.
  • Viel zu kompliziert.

Aber was stimmt denn nun?
Klar, Kerberos ist nicht in einem Tag gelernt, verstanden und implementiert. Die Einführung von Kerberos benötigt eine gute Planung und ausgebildete Administratoren. Aber der Sicherheitsgewinn rechtfertigt die Einführung auf jeden Fall. 

Welchen Mehrwert bietet mir Kerberos in Zusammenarbeit mit OpenLDAP? 
Da sich nicht nur Benutzer authentifizieren müssen, sondern die Authentifizierung auf Dienste und Hosts erweitert wird, steigt die Sicherheit. Denn nur System und Dienste die im Kerberos ein Konto (Principal) besitzen können sich überhaupt gegen den Kerbeors-Server authentifizieren und die Anmeldetickets (TGT) der Benutzer zur Authentifizierung nutzen. Ein weiterer wichtiger Punkt ist der, dass bei der Authentifizierung zu keiner Zeit Passwörter, seien sie verschlüsselt oder gar unverschlüsselt, über das Netzwerk übertragen werden. Der gesamte Authentifizierungsprozess findet über Tokens statt. Auch die Übertragung von Daten kann, wie zum Beispiel bei der Datenübertragung über NFS, mittels Kerberos verschlüsselt werden, so dass die Daten nicht im Netz abgefangen werden können. Auf einen kerbereisierten NFS-Server kann so auch neben der Hostauthentifizierung eine Benutzerauthentifizierung durchgeführt werden. Denn ein Benutzer der keine TGT besitzt, kann auch nicht mehr auf den NFS-Server zugreifen. Die Sicherheit im Netz steigt.
Zusammen mit Kerberos können Sie alle Abfragen an den OpenLDAP-Server mittels strong-bind durchführen und sind nicht mehr auf den simple-bind angewiesen. Der Vorteil dabei liegt ganz klar auf der Hand. Beim simple-bind ist es notwendig die Passwörter, für zum Beispiele die Replikation der OpenLDAP-Server, in Klartext in die Konfgurationsdatei zu schreiben. Bei der Verwendung von strong-bind mittels Kerberos findet die Authentifizierung bei der Replikation über Tickets statt. Der Dienst authentifiziert sich mit seinem Principal und einer verschlüsselten Keytab-Datei. So können keine Passwörter mehr aus der Konfiguration gelesen werden.
Einen ganz großen Vorteil habe ich hier noch gar nicht erwähnt: In einer vollständig kerbereisierten Umgebung geben die Benutzer nur noch einmal, bei der Anmeldung am System, ihr Passwort ein. Alle weiteren Anmeldungen an Hosts oder Services werden, automatisch und im Hintegrund, über Tickets durchgeführt. Sie erhalten eine Singel-sign-on Umgebung.
Das sind nur ein paar der Vorteile die Ihnen Kerberos bietet.

Aber Kerberos ist doch so kompliziert!
Das Verfahren wie die Authentifizierung durchgeführt wird ist schon recht komplex und Sie benötigen schon einige Zeit um die komplette Funktion des Kerberos zu verstehen. Aber muss man da alles verstehen? Verstehen Sie die vollständige Arbeitsweise vom Active Directory (Was im übrigen auch Kerberos nutzt) oder können Sie mir erklären wie die Assistentssysteme Ihres Autos funktionieren? Aber Sie fahren Auto oder :-)?
Gerade wenn Sie Kerberos zusammen mit OpenLDAP nutzen und für die Verwaltung der Objekte dann noch den LDAP Account Manger in der Pro Version einsetzen, dann ist die Verwaltung der LDAP-Umgebung einfach. Klar können Sie OpenLDAP und Kerberos auch komplett ohne grafisches Werkzeug nutzen, aber so ein grafisches Werkzeug erleichtert die Sache manchmal und lässt Ihnen die Möglichkeit Aufgaben der Benutzerverwaltung zu delegieren. Wenn Sie Kerberos zusammen mit OpenLDAP betreiben fällt auch die Replikation der Kerberos-Datenbank weg, denn alle Kerberos-Informationen liegen im LDAP und die Ausfallsicherheit realisieren Sie über die Replikation der LDAP-Server. Die Kerberos-Server verbinden sich alle gegen den LDAP und nutzen den selben Datenbestand.

Wie funktioniert Kerberos?
Das hier komplett zu erklären würde den Rahmen erheblich sprengen, aber trotzdem möchte ich das ganze mal versuchen recht einfach zu erklären:
Jeder Teilnehmer an der Authentifizierung über Kerberos benötigt einen Prinicipal mit einem Credential (Passwort) in der Datenbank. Bei Benutzern ist es das Passwort, das der Benutzer bei der Anmeldung angeben muss,  Hosts und Services könne schlecht selber ein Passwort eingeben, sie bekommen eine Keytab-Datei mit einem verschlüsselten Passwort. So können sich alle  Teilnehmer gegen den Kerberos-Server authentifizieren. Ein Benutzer der sich Angemeldet hat, erhält vom Kerberos-Server ein Ticket (TGT). Dieses Ticket hat nur eine begrenze Gültigkeit. Wenn der Benutzer jetzt auf einen Dienst eines anderen Server zugreifen möchte, wird der Service, der sich ja auch gegen den Kerberos authentifiziert hat, das Ticket anfordern. Im Hintergrund wird das TGT an den Service übertragen, da der Service dem Kerberos-Server vertraut und das TGT vom Kerberos-Server ausgestellt wurde, vertraut der Service dem TGT und fragt nicht mehr den Kerberos-Server. Nach der erfolgreichen Anmeldung übermittelt der Service eine Service-Ticket an den Client des Benutzers. Das Ticket wird dort gespeichert und bei einem weiteren Zugriff überträgt der Client das Service-Ticket, da das Service-Ticket vom Kerberos-Server erstellt wurde, vertraut der Client dem Service-Ticket. 
Klar, der gesamte Prozess ist etwas komplizierter (wie ihr ABS im Auto) aber um die Funktion annähernd zu erklären, denke ich, reicht es aus.

Fazit:
Keine Angst vor Kerberos

This entry was posted in LDAP. Bookmark the permalink.