image

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.

image

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

Mark Pröhl • Daniel Kobras

Kerberos

Single Sign-on in gemischten Linux/Windows-Umgebungen

2., komplett überarbeitete Auflage

image

Mark Pröhl · Daniel Kobras

Lektorat: René Schönfeldt

Bibliografische Information der Deutschen Nationalbibliothek

ISBN:

Print

978-3-86490-714-2

PDF

978-3-96088-851-2

ePub

978-3-96088-852-9

mobi

978-3-96088-853-6

2., komplett überarbeitete Auflage 2022

Hinweis:

image

Schreiben Sie uns:

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.

5 4 3 2 1 0

Über dieses Buch

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.

Welche Ziele hat dieses Buch?

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.

Für wen ist das Buch?

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.

Welche Voraussetzungen sollten Sie mitbringen?

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.

Wie ist das Buch aufgebaut?

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 Beispielumgebung

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.

Verwendete Usernamen

In den Beispielumgebungen tauchen zwei Personen immer wieder auf: Max Mustermann, dem der Username maxm zugeordnet ist, und Erika Musterfrau mit dem Account erim.

Verwendete Passwörter

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.

Typografische Konventionen

Im Text

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:

In den Listings

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 »image« und »image« markiert:

user@lx01:~$ echo 'Diese Zeile ist zu lang für ein dpunkt- image

image Buch, daher wird sie automatisch umgebrochen'

Diese Zeile ist zu lang fuer ein dpunkt-Buch, daher wird image

image 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:\>

Danksagung

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.

Kontakt

Für Fragen, Anregungen, Kritik und Feedback jeglicher Art sind die Autoren über die E-Mail-Adresse kerberos@puzzle-itc.de zu erreichen.

Im Internet

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.

Zur zweiten Auflage

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.

Inhaltsverzeichnis

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

1Kerberos im Überblick

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.

1.1Ursprung am MIT: das Athena-Projekt

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.

Das Athena-Projekt

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.

Teilprojekte

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).

Vernetzung und Sicherheit

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.

1.2Versionen des Kerberos-Protokolls

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)