Mark Pröhl und Daniel Kobras sind als IT-Berater bei Puzzle ITC Deutschland tätig. Neben manch anderem beruflichen Steckenpferd wie Automatisierung, Container-Plattformen oder Dateidiensten landen sie doch stets wieder beim gemeinsamen Thema Kerberos und Single Sign-on, vor allem in heterogenen Umgebungen. Seit weit mehr als einem Jahrzehnt teilen sie ihr Wissen dazu auch regelmäßig in Schulungen und Workshops.
|
Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+: www.dpunkt.plus |
Single Sign-on in gemischten Linux/Windows-Umgebungen
2., komplett überarbeitete Auflage

Mark Pröhl · Daniel Kobras
Lektorat: René Schönfeldt
Projektkoordinierung: Anja Weimer
Copy-Editing: Annette Schwarz, Ditzingen
Satz: Mark Pröhl
Herstellung: Stefanie Weidner
Umschlaggestaltung: Helmut Kraus, www.exclam.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
978-3-86490-714-2 |
|
978-3-96088-851-2 |
|
ePub |
978-3-96088-852-9 |
mobi |
978-3-96088-853-6 |
2., komplett überarbeitete Auflage 2022
Copyright © 2022 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Hinweis:
Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.

Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: hallo@dpunkt.de.
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.
5 4 3 2 1 0
Die Verwaltung von Identitäten und deren Berechtigungen, auch »Identity and Access Management« genannt, ist eine der Grundlagen für die Sicherheit von IT-Umgebungen. Ein wesentlicher Aspekt dabei ist die Überprüfung und Bestätigung von Identitäten, also die Authentisierung bzw. Authentifizierung – ein Bereich, in dem sich das Authentisierungsverfahren Kerberos als Standard durchgesetzt hat. Diese Tatsache erkennt man u. a. daran, dass Kerberos heutzutage Bestandteil aller wichtigen Betriebssysteme ist: Unter den verschiedenen Unix- und Linux-Derivaten war Kerberos schon seit jeher vertreten. Aber auch in der Apple-Welt und insbesondere in Microsofts Active Directory spielt Kerberos eine wesentliche Rolle, wenn es um die Authentifizierung von Nutzer:innen geht. Mindestens ebenso wichtig ist die Unterstützung durch Anwendungen und Netzwerkdienste, die für Kerberos großflächig gegeben ist. Hier kann Kerberos durch echtes Single Sign-on (SSO) weiter punkten. Aber auch andere Aspekte der IT-Sicherheit, wie die Integrität und Vertraulichkeit von Nutzdaten, deckt Kerberos ab.
Gerade in heterogenen IT-Umgebungen eignet sich Kerberos aufgrund seines sehr hohen Verbreitungs- und Standardisierungsgrades als Authentisierungskomponente innerhalb einer zentralen User- und Berechtigungsverwaltung. Aus diesem Grund befasst sich dieses Buch neben dem Hauptschwerpunkt Kerberos auch mit den Möglichkeiten, Kerberos durch zusätzliche Infrastrukturdienste zu erweitern und so Kerberosintegrierte Netzwerk- und Verwaltungsumgebungen zu schaffen.
Dieses Buch möchte Ihnen zunächst ein Verständnis für die Funktionsweise des Kerberos-Protokolls vermitteln. Diese theoretischen Inhalte liefern das nötige Hintergrundwissen für die Praxisteile, in denen der Aufbau und die Verwaltung von Kerberos-Infrastrukturen und die Integration von Anwendungen und Netzwerkdiensten (die »Kerberisierung«) behandelt werden. Dabei soll das Motto gelten: »Nicht mehr Theorie als nötig, aber auch nicht weniger.« An geeigneten Stellen wird auf weiterführende Literatur verwiesen.
Die Praxisteile beschreiben konkrete Implementierungen und sollen Ihnen die Möglichkeit geben, schnell eine funktionierende Kerberos-Umgebung aufsetzen und das theoretisch Gelernte praktisch anwenden zu können.
Dieses Buch richtet sich in erster Linie an Administrator:innen heterogener Netzwerkumgebungen, die sich eingehend mit Single Sign-on und Kerberos beschäftigen wollen. Für Anwendungsprogrammierer:innen werden vor allem jene Buchteile interessant sein, die die Funktionsweise des Kerberos-Protokolls und die Kerberisierung existierender Netzwerkdienste beschreiben.
Unsere Leser:innen sollten über allgemeine Grundkenntnisse der Administration von Linux- und Windows-Systemen verfügen, sich insbesondere nicht vor dem Einsatz der Kommandozeile scheuen und in der Lage sein, mit einem Texteditor Konfigurationsdateien zu erstellen oder anzupassen. Es wird beispielsweise nicht erklärt, wie man unter Linux ein Terminalfenster oder einen Editor startet. Grundkenntnisse in LDAP sind von Vorteil, obwohl die nötigen Voraussetzungen hier geschaffen werden (siehe Anhang A). Wenn Sie sich bereits mit den Themengebieten Authentisierung, Autorisierung und Zugriffskontrolle beschäftigt haben, wird Ihnen der Einstieg in die Materie sicherlich leichter fallen, auch wenn diese Grundlagen hier behandelt werden.
Kenntnisse in Virtualisierungslösungen sind ebenfalls von Vorteil, wenn es darum geht, die hier beschriebenen Beispielszenarien in einer eigenen virtuellen Infrastruktur nachzuvollziehen.
Teil I befasst sich mit den theoretischen Grundlagen der Authentisierung in Rechnernetzen mit Kerberos. Um diesen theoretischen Stoff nicht zu trocken zu gestalten, bietet Kapitel 3 einen Eindruck von Kerberos aus der Sicht der Anwender:innen. Danach folgt eine eingehende Beschreibung des Protokollablaufs, wobei fortgeschrittene Themen (Stichworte: Principal-Aliase, KDC-Referrals und Constrained Delegation) in das abschließende Kapitel 6 ausgelagert sind.
In Teil II lernen Sie anhand verschiedener Beispielumgebungen, wie man Kerberos-Infrastrukturen aufbaut und verwaltet. Verschiedene Kapitel von Teil II benötigen zusätzliche Komponenten wie NTP, DNS und LDAP sowie eine Infrastruktur für X.509-Zertifikate, deren Einrichtung daher vorab in Kapitel 7 behandelt wird. Danach werden die Konzepte und Konfigurationsmöglichkeiten anhand der Kerberos-Implementierung des Massachusetts Institute of Technology (MIT Kerberos) sehr detailliert erläutert (Kapitel 8–13). In anschließenden Kapiteln geht es dann um die alternative Implementierung Heimdal und die Möglichkeiten, die Active Directory als Kerberos-Infrastruktur zu bieten hat. Kapitel 15 behandelt dabei die Microsoft-Implementierung von Active Directory, Kapitel 16 die dazu kompatible, freie Alternative des Samba-Projekts. Eine konzeptionell ähnliche integrierte Lösung speziell für Linux-Umgebungen ist FreeIPA, das Kapitel 17 im Detail vorstellt. Teil II wird von Kapitel 18 abgeschlossen, das sich fortgeschrittenen Themen der Kerberos-Praxis widmet.
In Teil III des Buches geht es darum, wie man Kerberos-Infrastrukturen durch die Integration weiterer Netzwerkdienste erweitern kann. Der Verzeichnisdienst LDAP spielt hier eine tragende Rolle, da dieser Dienst Kerberos um die Verwaltung von User- und Berechtigungsdaten ergänzt. Ein weiterer Aspekt dabei ist die Integration der Anmeldung am Betriebssystem, wobei LDAP als Namensdienst und Kerberos für die Passwortüberprüfung eingesetzt werden. Dieser Teil beschäftigt sich aber auch grundsätzlich mit dem Vorgang der Kerberisierung von Netzwerkdiensten, die unsere Leser:innen anhand zahlreicher Beispiele lernen können.
Der Aufbau des Buches erfolgt in der beschriebenen Reihenfolge, es sollte aber auch möglich sein, einzelne Kapitel zu überspringen oder erst später zu lesen, ohne dabei den Gesamtüberblick zu verlieren.
Die Praxisteile II und III beschreiben die verschiedenen Aspekte von Kerberos anhand einer konkreten Beispielumgebung mit dem Namen »EXAMPLE.COM«, die auch aus weiteren Subdomänen besteht. Abbildung 6.5 auf Seite 113 stellt die Gesamtstruktur dar. Der Aufbau dieser Beispielumgebung wird detailliert beschrieben. Selbstverständlich steht es Ihnen frei, diese Umgebung oder Teile davon in einem eigenen Testlabor aufzubauen oder nur die Beschreibung zu lesen.
In den Beispielumgebungen tauchen zwei Personen immer wieder auf: Max Mustermann, dem der Username maxm zugeordnet ist, und Erika Musterfrau mit dem Account erim.
In vielen Listings wird das Beispielpasswort »P@ssw0rd« verwendet – das englische Wort »Password« mit einem »@« statt »a« und der Ziffer »0« (Null) statt des »o«. Derartige Passwörter sollten in realen Umgebungen natürlich nicht verwendet werden, machen aber das Leben im Testlabor einfacher. An anderen Stellen dieses Buches wird dagegen mit »richtigen« Passwörtern gearbeitet, die mit einem Passwortgenerator erzeugt werden. Das macht zwar einige Listings etwas unleserlich, soll aber die Sicherheitsrelevanz unterstreichen.
Für die Auszeichnung von Programmein- und -ausgaben, Benutzernamen und Ähnlichem werden verschiedene Schriftarten verwendet, hauptsächlich ist das die Schreibmaschinenschrift. Hier ein paar Beispiele:
Listings werden wie folgt dargestellt:
user@lx01:~$ echo 'Hallo Welt'
Hallo Welt
user@lx01:~$
Benutzereingaben werden hierbei fett gesetzt. Es gibt aber auch unsichtbare Eingaben (beispielsweise Passwörter). Diese werden fett-kursiv dargestellt:
maxm@lx01:~$ kinit maxm@EXAMPLE.COM
Password for maxm@EXAMPLE.COM: P@ssw0rd
maxm@lx01:~$
Listings mit zu langen Zeilen müssen umgebrochen dargestellt werden. Der Umbruch wird dann mit den Zeichen »
« und »
« markiert:
user@lx01:~$ echo 'Diese Zeile ist zu lang für ein dpunkt- 
Buch, daher wird sie automatisch umgebrochen'
Diese Zeile ist zu lang fuer ein dpunkt-Buch, daher wird 
sie automatisch umgebrochen
user@lx01:~$
Sehr lange Listings können verkürzt dargestellt werden. Das wird dann durch die Zeichenfolge [...] angedeutet. Beispiel:
user@lx01:~$ ls -la
total 24
drwx------. 2 user user 4096 Feb 15 09:20 .
drwxr-xr-x. 3 root root 4096 Feb 15 09:20 ..
-rw-r--r--. 1 user user 18 Nov 8 17:21 .bash_logout
-rw-r--r--. 1 user user 141 Nov 8 17:21 .bash_profile
-rw-r--r--. 1 user user 312 Nov 8 17:21 .bashrc
[...]
user@lx01:~$
Die gleiche Zeichenfolge wird auch verwendet, um Kommentare in die Listings einzubauen. Im folgenden Beispiel soll zwischen zwei Kommandos neun Minuten gewartet werden:
[...]
user@lx01:~$ klist -f
[...]
[...9 Minuten warten...]
user@lx01:~$ kinit -R
user@lx01:~$ klist -f
[...]
Der Text [...9 Minuten warten...] ist also kein Teil einer Programmausgabe, sondern ein Kommentar.
Der Prompt hängt vom Betriebssystem ab. Befehlszeilen unter Linux werden durch einen Prompt wie dem folgenden eingeleitet:
user@lx01.ads:~$
Dem Prompt entnimmt man neben dem Usernamen auch den Hostnamen der Maschine, auf der ein Kommando ausgeführt wird, sowie die Umgebung. In folgendem Beispiel führt root auf kdc01 in der MIT-Umgebung (daher kdc01.mit) das Kommando ls -la aus:
root@kdc01.mit:~# ls -la
[...]
Unter Windows geschieht das in dieser Art:
C:\>
Mein Dank gilt in erster Linie meiner Frau und meinen Kindern, ohne deren Unterstützung ich dieses Werk nicht hätte fertigstellen können. Vielen Dank auch an Freunde und Arbeitskollegen für viele anregende Diskussionen.
Oliver Tennert gilt ein besonderer Dank für Anregungen und Diskussionen während der Entstehung dieses Buches. Vielen Dank auch an Markus Widmer und Heiko Hütter für Tests der beschriebenen Infrastrukturen und ihre Rückmeldungen zu den LDAP-spezifischen Teilen. René Schönfeldt und dem Team beim dpunkt.verlag sowie allen Gutachtern ebenfalls ein herzliches Dankeschön für die Unterstützung bei der Realisierung dieses Buchprojektes.
Für Fragen, Anregungen, Kritik und Feedback jeglicher Art sind die Autoren über die E-Mail-Adresse kerberos@puzzle-itc.de zu erreichen.
www.kerberos-buch.de
Unter https://www.kerberos-buch.de befindet sich die Homepage dieses Buches. Dort finden Sie Informationen rund um das Kerberos-Buch, insbesondere sind dort sämtliche Listings und Errata verfügbar.
Zu den jungen Wilden zählt Kerberos wahrlich nicht mehr. Als Protokoll mit Wurzeln in den 1980er-Jahren hat es inzwischen ein reifes Alter erreicht. Doch auch wenn in den rund zehn Jahren seit Erscheinen der ersten Auflage dieses Buches radikale Umwälzungen erwartungsgemäß ausgeblieben sind, gehen die Änderungen doch deutlich über reine Kosmetik hinaus. Im Protokoll selbst haben vor allem gestiegene Sicherheitsanforderungen ihre Spuren hinterlassen. Mehrere Faktoren zur Authentisierung ergänzen das klassische Passwort, gezielte Erweiterungen um asymmetrische Kryptografie beseitigen einige Problemstellen im Protokoll. Unter den Schlagworten FAST, PKINIT und SPAKE haben diese Themen in der zweiten Auflage neuen oder erweiterten Platz gefunden.
Bei den Implementierungen steht immer stärkere Integration im Vordergrund. Nach Active Directory gibt es nun auch im Open-Source-Bereich durch Samba 4 und FreeIPA sowie darauf aufbauende Produkte Komplettsysteme, die Kerberos-Authentisierung, LDAP-Verzeichnis und weitere Zusatzdienste miteinander vereinen. Entsprechend passt sich auch die Clientseite an. Der sssd als Basisdienst bündelt nun alle Anfragen ursprünglich getrennter Subsysteme wie NSS und PAM. Die Integration führt zu gleichförmigeren Umgebungen und ermöglicht so bequeme Werkzeuge wie realmd, die die Anbindung von Clientsystemen an Active Directory und Co. stark vereinfachen. Beim Anpassen der Praxisbeispiele auf aktuelle Betriebssystemversionen sind diese Aspekte in der neuen Auflage somit geradezu zwangsläufig mit eingeflossen. Gleichzeitig sollen die nach wie vor enthaltenen Abschnitte zu den einzelnen Kerberosund LDAP-Implementierungen dabei helfen, den Aufbau der integrierten Umgebungen zu verstehen, und damit unerlässliches Grundwissen für die Analyse von Problemen vermitteln.
Im Bereich der Applikationen verschiebt sich die Nutzung mehr und mehr weg vom klassischen Desktop, hin zu Browseranwendungen und mobilen Apps. Kerberos ist hier selten die erste Wahl, auf Smartphones und Tablets fehlt die entsprechende Infrastruktur sogar völlig. Stattdessen dominieren hier auf den Webbereich spezialisierte Single-Sign-on-Protokolle wie SAML oder OpenID Connect. Am Beispiel Keycloak zeigt diese Auflage, wie sich dennoch der Bogen spannen lässt vom Kerberos-SSO klassischer Netzwerkumgebungen bis hin zum Web-SSO mobiler Applikationen.
Nach über zehn Jahren ist die zweite Auflage dieses Buches einer Reihe von Personen zu verdanken: Daniel Kobras – als Kollege bei Puzzle ITC und in gemeinsamen Schulungsveranstaltungen bereits bestens mit dem Themenfeld dieses Buches vertraut – hat als neuer Co-Autor mit angepackt, die Inhalte auf einen zeitgemäßen Stand zu hieven. Unser beider Dank gilt auch wieder unseren Familien und der Geduld, die sie mit uns haben. René Schönfeldt und dem gesamten Team des dpunkt.verlags möchten wir für die Unterstützung bei der Realisierung des Buches danken. Jürgen Seeger und Oliver Diedrich gilt unser Dank für die Unterstützung bei den iX-Workshops.
IKerberos
1Kerberos im Überblick
1.1Ursprung am MIT: das Athena-Projekt
1.2Versionen des Kerberos-Protokolls
1.3Standardisierung
1.4Implementierungen
1.4.1Kerberos v4
1.4.2Kerberos v5
1.4.3Interoperabilität und Kompatibilität
2Grundlagen der Netzwerkauthentisierung mit Kerberos
2.1Authentisierung
2.1.1Authentisierungsmerkmale
2.1.2Problematik der Passwörter
2.1.3Lokale Anmeldung vs. Netzwerkauthentisierung
2.2Authentisierung mit Kerberos
2.2.1Key Distribution Center
2.2.2Realm
2.2.3Principals
2.2.4Tickets
2.2.5Gegenseitige Authentisierung
2.2.6Lokale Anmeldung und Kerberos
2.3Delegation
2.4Autorisierung und Zugriffskontrolle
2.4.1Authentisierung ist Voraussetzung
2.4.2Identity Mappings
2.4.3Autorisierung und Kerberos
2.5Single Sign-on (SSO)
2.6Zusammenfassung
3Kerberos aus Anwendersicht
3.1Die Beispielumgebung
3.2Lokale Anmeldung
3.3Der Credential Cache
3.4Anmeldung an Netzwerkdiensten
3.5Delegation
3.6Eine Demo-Webseite
3.7Umgang mit dem Credential Cache
3.8Zusammenfassung
4Sicherheit und Kryptografie
4.1Sicherheitsüberlegungen
4.1.1Allgemeine Sicherheitsanforderungen
4.1.2Die beteiligten Systemkomponenten
4.1.3Anforderungen an Kerberos
4.2Kryptografie in der Netzwerksicherheit
4.2.1Vertraulichkeit
4.2.2Integrität
4.2.3Authentisierung
4.2.4Passwörter, Schlüssel und Schlüsselaustausch
4.2.5Zusammenfassung
5Wie funktioniert Kerberos V5?
5.1Das Funktionsprinzip im Überblick
5.1.1Voraussetzungen
5.1.2Das einstufige Kerberos-Verfahren
5.1.3Diskussion
5.1.4Das zweistufige Kerberos-Verfahren
5.1.5Zusammenfassung
5.2Das Funktionsprinzip im Detail
5.2.1Die KDC-Datenbank
5.2.2Der Authentication Service (AS)
5.2.3Zugriff auf kerberisierte Dienste
5.2.4Der Ticket-Granting Service (TGS)
5.3Zusammenfassung
6Kerberos für Fortgeschrittene
6.1KDC-Optionen
6.1.1Optionen für Ticket Renewing
6.1.2Optionen für Ticket Postdating
6.1.3Optionen für die Kerberos-Delegation
6.1.4Sonstige Optionen
6.2Ticket Flags
6.2.1Flags für Ticket Renewing
6.2.2Flags für Ticket Postdating
6.2.3Flags für die Kerberos-Delegation
6.2.4Sonstige Flags
6.3AP-Optionen
6.4Tickets automatisiert erneuern
6.5Tickets für die Zukunft
6.6Delegation zum Ersten
6.6.1Ticket Forwarding
6.6.2Ticket Proxying
6.7Authentisierung zwischen Realms
6.7.1Grundsätzliches zu Vertrauensstellung
6.7.2Zwei Realms
6.7.3Mehr als zwei Realms
6.8Namenskanonisierung und Referrals
6.8.1Kanonisierung der Client-Principal-Namen
6.8.2Kanonisierung der Dienste-Principal-Namen
6.8.3Verweise an entfernte Realms
6.9User-to-User-Authentisierung
6.10Kerberos und Autorisierungsdaten
6.11Die S4U2Self-Erweiterung
6.12Delegation zum Zweiten
6.12.1Constrained Delegation
6.12.2Protocol Transition
6.12.3Diskussion
6.13Initiale Authentisierung mit Zertifikaten
6.13.1Eine Lösung für die Passwort-Problematik
6.13.2Das Funktionsprinzip von PKINIT
6.13.3Anonymes PKINIT
6.13.4PKINIT Freshness Extension
6.13.5Fazit
6.14FAST: zusätzlicher Schutz für KDC-Austausch
6.15Kerberos über HTTPS
6.16Initiale Authentisierung mit zweitem Faktor
IIZentrale Infrastrukturen
7Grundlegende Infrastruktur
7.1Überblick
7.2Software, Systemdienste und lokale Firewall
7.3DNS-Namensauflösung mit BIND
7.3.1BIND installieren
7.3.2Zonen einrichten
7.3.3Starten und Testen
7.3.4Subdomänen
7.4Zeitsynchronisation mit NTP
7.5Certificate Authority (CA) mit OpenSSL
7.5.1Einrichtung der CA
7.5.2Einen Zertifikatsrequest erzeugen
7.5.3Das Zertifikat unterschreiben
7.6Verzeichnisdienst mit OpenLDAP
7.6.1Installation und Grundkonfiguration
7.6.2Schemadefinition
7.6.3Datenbank für dc=example,dc=com konfigurieren
7.6.4Datenbank für dc=example,dc=com befüllen
7.6.5Ein erster Test
7.6.6Sicherheit
8Das Key Distribution Center von MIT Kerberos
8.1Übersicht
8.2Softwareinstallation
8.3Konfiguration
8.3.1Der Master Key der KDC-Datenbank
8.3.2Zeitangaben bei MIT Kerberos
8.3.3Verschlüsselungstypen
8.3.4Die Datei kdc.conf
8.4Initialisierung der KDC-Datenbank
8.4.1Die Datenbank mit kdb5_util initialisieren
8.4.2Die initiale Datenbank
8.4.3Mit kadmin.local weitere Principals anlegen
8.4.4Master Key in Stash-Datei ablegen
8.5Ein erster Test
9Die Administration von MIT Kerberos
9.1Der Kadmin-Dienst
9.2Administrative Zugriffe kontrollieren
9.3Der Kpasswd-Dienst
9.4Starten der administrativen Dienste
9.5Principals verwalten
9.5.1Passwortrichtlinien
9.5.2Lockout Policies
9.5.3Principal-Eigenschaften
9.5.4Principals für Anwender:innen anlegen
9.5.5Principals für Dienste anlegen
9.5.6Verschlüsselungstypen der Principals verwalten
9.6Keytabs verwalten
9.6.1Keytabs mit kadmin verwalten
9.6.2Keytabs mit ktutil verwalten
9.7Service Keys ändern
10Die Clientkommandos von MIT Kerberos
10.1Installation und Konfiguration
10.2Die Kommandos kinit und klist
10.2.1Tickets holen
10.2.2Den Credential Cache auswählen
10.2.3Ticket-Eigenschaften anzeigen und beeinflussen
10.2.4Protokollrequests beeinflussen
10.2.5Sonstige Kommandozeilenoptionen
10.2.6Service Tickets holen
10.2.7Mit Keytabs arbeiten
10.3Das Kommando kvno
10.4Das Kommando kpasswd
10.5Das Kommando kdestroy
10.6Die Kommandos k5start und krenew
10.6.1krenew
10.6.2k5start
11Die Konfiguration der MIT Libraries
11.1Die Datei krb5.conf
11.1.1Die Struktur der krb5.conf
11.1.2Konfigurationsabschnitte
11.1.3Parameter im Abschnitt [libdefaults]
11.1.4Parameter im Abschnitt [realms]
11.1.5Parameter im Abschnitt [domain_realm]
11.1.6Parameter im Abschnitt [appdefaults]
11.1.7Die krb5.conf für den Realm EXAMPLE.COM
11.2Konfiguration über DNS
11.2.1SRV Records
11.2.2TXT Records
11.3Konfiguration mit Umgebungsvariablen
12Ausfallsicherheit für MIT Kerberos
12.1Backup der KDC-Datenbank
12.2Wiederherstellung der KDC-Datenbank
12.3Replikation der KDC-Datenbank
12.3.1Möglichkeiten der Kerberos-Replikation
12.3.2Sicherheit der Replikation
12.4Replikation bei MIT Kerberos
12.4.1Ein Replica KDC einrichten
12.4.2Schritte auf dem Master KDC
12.4.3Das Replica KDC starten
12.4.4Das Replica KDC bekannt machen
12.4.5Regelmäßig replizieren
13Ein LDAP-Backend für die MIT-Datenbank
13.1Überblick
13.1.1Erweiterte Funktionalitäten
13.1.2Vorgehensweise
13.1.3Sicherheit
13.2Software, Schema und Konfiguration des LDAP-Servers
13.2.1Software installieren
13.2.2Das Schema erweitern
13.3Das KDC auf LDAP umstellen
13.3.1Vorbereitungen
13.3.2Konfiguration
13.3.3Die KDC-Datenbank im LDAP initialisieren
13.3.4Den Realm einrichten
13.4Existierende Nutzerobjekte
13.5Principal-Aliase
13.5.1Client-Aliase
13.5.2Dienste-Aliase
13.6Ausfallsicherheit mit LDAP
13.6.1OpenLDAP auf kdc01 vorbereiten
13.6.2LDAP-Server auf kdc02 einrichten
13.6.3Ausfallsicherheit für das KDC
13.6.4Die Clientkonfiguration anpassen
14Einen Heimdal Realm einrichten
14.1Überblick
14.2Vorbereitung
14.3Das Key Distribution Center von Heimdal
14.3.1Die Datei kdc.conf
14.3.2Master Key
14.3.3Die KDC-Datenbank initialisieren
14.3.4Das KDC starten
14.4Die Administration von Heimdal
14.4.1Administrative Zugriffe kontrollieren
14.4.2Principals verwalten
14.4.3Weitere administrative Tätigkeiten
14.4.4Passwörter verwalten
14.5Die Heimdal-Werkzeuge
14.6Ausfallsicherheit für Heimdal
14.6.1Ein Replica KDC einrichten
14.6.2Starten des hpropd auf dem Replica KDC
14.6.3Die Replikation mit Hprop starten
14.6.4Regelmäßig replizieren
14.7Ein LDAP-Backend für Heimdal
14.7.1LDAP vorbereiten
14.7.2Das KDC auf LDAP umstellen
14.7.3Ausfallsicherheit mit LDAP
15Kerberos bei Microsoft Active Directory
15.1Active Directory im Überblick
15.1.1Kerberos in Active Directory
15.1.2Kerberos-Erweiterungen
15.1.3AD-Version und Functional Level
15.2Testlabor
15.3Das Key Distribution Center von Active Directory
15.3.1Die Domäne einrichten
15.3.2Grundlegende Dienste
15.3.3Ein erster Test
15.3.4Ausfallsicherheit
15.4Kerberos-Administration
15.4.1Administrationswerkzeuge
15.4.2Überblick über den neuen Realm
15.4.3Principals verwalten
15.4.4Verschlüsselungstypen
15.4.5Kerberos Policies
15.5Keytab-Verwaltung in AD-Infrastrukturen
15.5.1Keytabs unter Windows mit ktpass.exe erzeugen
15.5.2Host Keytabs unter Linux mit adcli verwalten
15.5.3Host Keytabs unter Linux mit msktutil verwalten
15.5.4Keytabs für Service Accounts unter Linux mit msktutil verwalten
15.6Kerberos-Administration mit LDAP
15.6.1LDAP-Suchen im AD
15.6.2Ein Benutzerobjekt anlegen
15.6.3Diensteobjekte anlegen
15.6.4Maschinenobjekte anlegen
15.7Weitere Werkzeuge
16Active Directory mit Samba 4
16.1Die Domäne einrichten
16.1.1DNS verwalten
16.1.2Ein erster Test
16.1.3Ausfallsicherheit
16.2Kerberos-Administration
16.2.1Benutzerkonten und Gruppen verwalten
16.2.2Principals verwalten
16.3Sicherheitsrichtlinien
16.4Domain Join und Keytab-Verwaltung
16.5Fazit
17Kerberos bei FreeIPA
17.1FreeIPA im Überblick
17.1.1IPA-Komponenten
17.1.2Deployment-Szenario
17.2Die Domäne einrichten
17.3Verwaltungsaufgaben in der IPA-Domäne
17.4Integration weiterer Linux-Systeme
17.5Ausfallsicherheit
17.6Fazit
18Kerberos für Fortgeschrittene
18.1Verteilte Kerberos-Umgebungen
18.1.1Cross-Realm bei MIT Kerberos
18.1.2Cross-Realm bei Heimdal
18.1.3Cross-Realm bei Active Directory
18.1.4Aufbau der Gesamtstruktur
18.2Delegation für Fortgeschrittene
18.2.1Vorbereitungen
18.2.2Das Ok-As-Delegate Flag
18.2.3kimpersonate
18.2.4Constrained Delegation und Protocol Transition
18.3PKINIT
18.3.1Initiale Authentisierung mit Zertifikaten
18.3.2PKINIT im Testnetz
18.3.3Kerberos, PKINIT und Smartcards
18.3.4Anonymes PKINIT
18.4Zwei-Faktor-Authentisierung
18.4.1OTP Tokens bei IPA
18.4.2OTP und Passwort bei der Anmeldung
18.4.3OTP und Passwort bei kinit
IIIIntegrierte Umgebungen
19Grundlagen
19.1Principals und Keytabs verwalten
19.1.1Client-Principals anlegen
19.1.2Funktionalität von Client-Principals prüfen
19.1.3Dienste-Principals anlegen
19.1.4Funktionalität von Dienste-Principals prüfen
19.1.5Keytab-Dateien anlegen
19.1.6Funktionalität von Keytab-Dateien prüfen
19.2Zwischenstand
19.3Die nativen Kerberos-Bibliotheken
19.4GSS-API
19.5SPNEGO
19.6SSPI
19.7SASL
19.7.1Protokolle
19.7.2Mechanismen
19.7.3Konzepte
19.7.4Cyrus SASL
19.8Zusammenfassung
20LDAP-Infrastruktur
20.1LDAP im Überblick
20.1.1Begriffe und Standards
20.1.2Serverimplementierungen
20.1.3Daten im LDAP
20.1.4Verzeichnisoperationen
20.2LDAP-Sicherheit
20.3Kerberisierung bei Active Directory
20.4Kerberisierung bei OpenLDAP
20.4.1SASL-Konfiguration
20.4.2Principal und Keytab
20.4.3Identitätsmapping
20.5Zusammenfassung
21Clientanbindung
21.1Windows-Clients in Active Directory
21.2Linux-Clients in Active Directory
21.3Der System Security Services Daemon
21.3.1Einfache sssd-Konfiguration für Active Directory
21.3.2Name Service Switch (NSS) mit sssd
21.3.3Pluggable Authentication Modules (PAM) mit sssd
21.3.4Erweiterte sssd-Konfiguration
21.4Ausbau der Gesamtstruktur
21.4.1LDAP-Referrals einrichten
21.4.2Identitäts- und Autorisierungsdaten für Linux
21.5Linux-Clients in der Gesamtinfrastruktur
21.5.1Anbindung testen
21.5.2Multi-Domänen-Anbindung konfigurieren und testen
21.5.3Schattenobjekte für LDAP-Zugriff auf Active Directory
21.6Zusammenfassung
22Elementare Netzwerkdienste unter Unix und Linux
22.1Kerberos mit OpenSSH
22.1.1Vorbereitungen
22.1.2Kerberisierte Secure-Shell-Sitzung
22.1.3Tickets weiterleiten
22.1.4Secure-Shell-Client unter Windows
22.1.5OpenSSH ohne Kerberos Tickets
22.2Remote-Dienste in verteilter Umgebung
22.2.1Cross-Realm-Problematik
22.2.2auth_to_local-Mappings
22.2.3Heimdal
22.2.4Cross-Realm-Anmeldung ohne Kerberos Tickets
23Kerberisierte Dateisysteme
23.1Server Message Block
23.1.1SMB-Service unter Windows einrichten
23.1.2Authentisierung bei SMB
23.1.3SMB-Client unter Linux
23.1.4SMB-Service unter Linux: Samba
23.1.5ID Mapping
23.1.6Heimatverzeichnisse für alle Windows-Nutzer
23.2Network File System
23.2.1Überblick
23.2.2NFSv3 ohne Kerberos
23.2.3NFSv3 und Sicherheit
23.2.4NFSv
23.2.5Kerberisierter NFSv4-Service unter Linux
23.2.6Den Server für Kerberos einrichten
23.2.7Kerberisierter NFSv4-Client unter Linux
23.2.8Den Client einrichten
23.2.9NFSv4 und Sicherheit
23.2.10NFSv4 in Cross-Realm-Umgebung
23.2.11Abschlussarbeiten
23.3Nichtinteraktiver Zugriff auf NFS-Verzeichnisse
23.3.1Impersonifizierung über gssproxy einrichten
23.3.2Impersonifizierung testen
23.4Zusammenfassung
24Single Sign-on für Webdienste
24.1Kerberos und das HTTP-Protokoll
24.1.1Das World Wide Web
24.1.2Authentisierung im HTTP-Protokoll
24.1.3Negotiate (SPNEGO)
24.2Den Apache-Server konfigurieren
24.2.1Voraussetzungen
24.2.2Principals und Keytab-Einträge
24.2.3mod_auth_gssapi konfigurieren
24.3Browserkonfiguration
24.3.1Vertrauenswürdige Seiten konfigurieren
24.3.2Zugriff testen
24.3.3Delegation konfigurieren
24.3.4Delegation testen
24.4Autorisierungsdaten und Ticket-Größe
24.5Autorisierung über LDAP
24.6Kerberos und Web-SSO
24.6.1Keycloak installieren
24.6.2Keycloak kerberisieren
24.6.3Account-Konsole als Test
24.6.4Erweiterungsmöglichkeiten
24.7Kerberos-Authentisierung im Web-Proxy
24.7.1Den Squid-Proxy vorbereiten
24.7.2Kerberos-Principal für Squid
24.7.3Squid-Anmeldung konfigurieren
24.7.4Browserkonfiguration für Proxy-Authentisierung
24.8Zusammenfassung
IVAnhang
ASchnelleinstieg in LDAP
A.1LDIF
A.1.1Das LDAP-Datenmodell
A.1.2LDIF-Repräsentation von LDAP-Daten
A.1.3Änderungen mit LDIF
A.2OpenLDAP-Tools
A.2.1Suchen mit ldapsearch
A.2.2Authentisierung
A.2.3Weitere OpenLDAP-Kommandos
A.3Grafische LDAP-Werkzeuge
BKonfiguration der Betriebssysteme
B.1Netzwerkparameter
B.2CentOS 8
B.3Windows Server 2019
B.4Windows 10
CSoftwareinstallationen
C.1Vorbemerkungen
C.2MIT Kerberos
C.3Heimdal
C.4k5start
C.5msktutil
C.6Samba
Literaturverzeichnis
Index
I |
Kerberos |
Dieses Kapitel soll Ihnen einen Überblick über den Authentisierungsdienst Kerberos vermitteln. Sie lernen zunächst seine Entstehungsgeschichte kennen, die vor fast 40 Jahren mit dem Athena-Projekt begann. Nach einem Überblick über die Versionen des Kerberos-Protokolls und deren Standardisierungen erfahren Sie, welche Implementierungen von Kerberos heutzutage existieren.
In der griechischen Mythologie war Kerberos ein dreiköpfiger Hund, der den Zugang zum Reich der Toten bewachte. Um diesen soll es hier allerdings nicht gehen, sondern um einen Authentisierungsdienst, der zumindest den Namen dieses Hundes geerbt hat. Die Geschichte des Kerberos-Authentisierungsdienstes beginnt in den 80er-Jahren des letzten Jahrhunderts.
Damals waren typische Computerumgebungen noch vorwiegend zentral organisiert. Der Großteil der Speicher- und Rechenleistung war auf wenige Großrechner konzentriert, auf die über Terminals zugegriffen wurde. Mit dem Aufkommen von immer günstigeren Mini- und Mikrocomputern, die im Gegensatz zu Terminals vernetzt und mit eigenem Datenspeicher ausgestattet waren, sollte sich die zentrale Struktur der Großrechnernetze bald in eine verteilte Struktur von vernetzten Arbeitsplatzrechnern wandeln.
In dieser Zeit rief das Massachusetts Institute of Technology (MIT) in Boston, USA, das Athena-Projekt ins Leben, um die Möglichkeiten von Computern in der studentischen Ausbildung zu untersuchen. Im Rahmen dieses Forschungsprojektes wurde am Campus des MIT eine verteilte Umgebung von vernetzten Arbeitsplatzrechnern geschaffen – aus heutiger Sicht klingt das wie selbstverständlich. Tatsächlich kann das Athena-Netzwerk in vielen Punkten als Vorbild aktueller IT-Umgebungen gelten: Längst ist es allgemein üblich, Speicher- und Rechenleistung auf viele leistungsfähige Rechner zu verteilen.
Das Athena-Projekt startete im Jahre 1983 und war zunächst auf nur fünf Jahre angelegt. Danach wurde es um weitere drei Jahre verlängert und endete im Jahre 1991. Die Unternehmen DEC und IBM unterstützten das Athena-Projekt.
Mehr als 100 Softwareprojekte wurden im Rahmen von Athena durchgeführt. Bei den meisten dieser Projekte ging es um die Entwicklung von Software, die im Rahmen der studentischen Ausbildung genutzt werden sollte. Der folgende Abschnitt zeigt jedoch beispielhaft einige weitere Projekte von größerer Tragweite, die Software und Konzepte für die Verwaltung verteilter Rechnernetze entwickeln sollten.
X Window
In einem Teilprojekt wurde die Möglichkeit einer netzwerkfähigen, grafischen Benutzeroberfläche für die Arbeitsplatzrechner untersucht. Ergebnis dieses Teilprojektes war das Fenstersystem X Window, das noch heute das Standardfenstersystem der meisten Unix-Betriebssysteme ist. Auch die sogenannten »Athena-Widgets« sind ein Ergebnis dieses Athena-Teilprojektes.1
Hesiod
Mit Hesiod wurde ein netzwerkweiter Namensdienst eingeführt. Im Kern handelt es sich dabei um eine Erweiterung des DNS-Servers BIND. Neben den Informationen über IP-Adressen und zugeordneten Hostnamen stellt Hesiod auch typische Unix-Systeminformationen zentral zur Verfügung, die herkömmlicherweise in Dateien wie /etc/passwd, /etc/group oder /etc/printcap gespeichert werden. Hesiod konnte sich allerdings nicht gegen alternative Entwicklungen wie NIS oder LDAP durchsetzen.
Auch andere Teilprojekte spielen heutzutage kaum noch eine Rolle, wie z. B. Moira (ein Tool zur zentralen Systemverwaltung), Palladium (ein Druckdienst) oder Zephyr (ein System zur Onlinebenachrichtigung).
Kerberos
Doch jenseits der konkreten Software erforderte die verteilte Struktur des Athena-Netzwerks vor allem grundlegend neue Konzepte. Allen voran hob die steigende Vernetzung auch das Thema Netzwerksicherheit auf eine neue Ebene. Musste man sich bislang nur um die Sicherheit weniger Großrechner kümmern, waren in der verteilten Umgebung nun wesentlich mehr Systeme in die Sicherheitsanalyse einzubeziehen. Um dieser Herausforderung zu begegnen, wurde Kerberos entwickelt. Kerberos ist in erster Linie ein Dienst bzw. ein Protokoll zur Authentisierung, deckt aber auch andere Sicherheitsaspekte ab. Welche Aufgaben Kerberos zu erfüllen hat bzw. welche Aspekte eines Sicherheitssystems durch Kerberos abgedeckt werden, wird in den Kapiteln 2 und 4 behandelt. Hier soll zunächst die Entwicklungsgeschichte weiter verfolgt werden.
Kerberos v4
Im Rahmen des Athena-Projektes durchlief Kerberos drei Versionen, die reine Entwicklungsversionen waren und nur innerhalb des MIT eingesetzt wurden (Kerberos v1, Kerberos v2 und Kerberos v3). Erst im Jahre 1989 wurde die vierte Version (Kerberos v4) freigegeben. Kerberos v4 wurde auch außerhalb des MIT zum Industriestandard und war viele Jahre lang im Einsatz.
AFS, kaserver
Zur gleichen Zeit wurde für das Andrew File System (AFS) unter dem Namen kaserver ein Kerberos-v4-ähnlicher Authentisierungsdienst entwickelt. Das AFS und der kaserver entstanden im Rahmen des Andrew-Projektes an der Carnegie Mellon University (CMU) und wurden vor Kerberos v4 veröffentlicht. Daher entsprach der kaserver nicht ganz dem Kerberos-v4-Standard.
Kerberos v5
Data Encryption Standard (Single DES)