Kerberos - Single Sign-on in gemischten Linux/Windows-Umgebungen
von: Mark Pröhl
dpunkt, 2012
ISBN: 9783864910951
Sprache: Deutsch
558 Seiten, Download: 10912 KB
Format: EPUB, PDF, auch als Online-Lesen
Inhaltsverzeichnis | 13 | ||
I Kerberos | 25 | ||
1 Kerberos im Überblick | 27 | ||
1.1 Ursprung am MIT: Das Athena-Projekt | 27 | ||
1.2 Versionen des Kerberos-Protokolls | 29 | ||
1.3 Standardisierung | 29 | ||
1.4 Implementierungen | 30 | ||
1.4.1 Kerberos v4 | 30 | ||
1.4.2 Kerberos v5 | 31 | ||
1.4.3 Interoperabilität | 32 | ||
2 Grundlagen der Netzwerkauthentisierung mit Kerberos | 33 | ||
2.1 Authentisierung | 33 | ||
2.1.1 Authentisierungsmerkmale | 34 | ||
2.1.2 Problematik der Passwörter | 36 | ||
2.1.3 Lokale Anmeldung vs. Netzwerkauthentisierung | 37 | ||
2.2 Authentisierung mit Kerberos | 39 | ||
2.2.1 KDC | 39 | ||
2.2.2 Realm | 40 | ||
2.2.3 Principals | 40 | ||
2.2.4 Tickets | 41 | ||
2.2.5 Gegenseitige Authentisierung | 42 | ||
2.2.6 Lokale Anmeldung und Kerberos | 42 | ||
2.3 Delegation | 43 | ||
2.4 Autorisierung, Zugriffskontrolle und Namensdienste | 44 | ||
2.4.1 Authentisierung ist Voraussetzung | 45 | ||
2.4.2 Dienste und Identitäten | 45 | ||
2.4.3 Autorisierung und Kerberos | 46 | ||
2.5 Single Sign-on (SSO) | 47 | ||
2.6 Zusammenfassung | 49 | ||
3 Kerberos aus Anwendersicht | 51 | ||
3.1 Die Beispielumgebung | 51 | ||
3.2 Lokale Anmeldung | 52 | ||
3.3 Der Credential Cache | 53 | ||
3.4 Anmeldung an Netzwerkdiensten | 54 | ||
3.5 Delegation | 56 | ||
3.6 Eine Demo-Webseite | 58 | ||
3.7 Umgang mit dem Credential Cache | 64 | ||
3.8 Zusammenfassung | 65 | ||
4 Sicherheit und Kryptografie | 67 | ||
4.1 Sicherheitsüberlegungen | 67 | ||
4.1.1 Allgemeine Sicherheitsanforderungen | 67 | ||
4.1.2 Die beteiligten Systemkomponenten | 68 | ||
4.1.3 Anforderungen an Kerberos | 71 | ||
4.2 Kryptografie in der Netzwerksicherheit | 74 | ||
4.2.1 Vertraulichkeit | 74 | ||
4.2.2 Integrität | 77 | ||
4.2.3 Authentisierung | 78 | ||
4.2.4 Passwörter, Schlüssel und Schlüsselaustausch | 83 | ||
4.2.5 Zusammenfassung | 87 | ||
5 Wie funktioniert Kerberos v5? | 89 | ||
5.1 Das Funktionsprinzip im Überblick | 89 | ||
5.1.1 Voraussetzungen | 89 | ||
5.1.2 Das einstufige Kerberos-Verfahren | 91 | ||
5.1.3 Diskussion | 94 | ||
5.1.4 Das zweistufige Kerberos-Verfahren | 95 | ||
5.1.5 Zusammenfassung | 98 | ||
5.2 Das Funktionsprinzip im Detail | 99 | ||
5.2.1 Die KDC-Datenbank | 100 | ||
5.2.2 Der Authentication Service (AS) | 100 | ||
5.2.3 Zugriff auf kerberisierte Dienste | 105 | ||
5.2.4 Der Ticket-Granting Service (TGS) | 109 | ||
5.3 Zusammenfassung | 112 | ||
6 Kerberos für Fortgeschrittene | 115 | ||
6.1 KDC-Optionen | 115 | ||
6.1.1 Optionen für Ticket Renewing | 116 | ||
6.1.2 Optionen für Ticket Postdating | 116 | ||
6.1.3 Optionen für die Kerberos-Delegation | 117 | ||
6.1.4 Sonstige Optionen | 117 | ||
6.2 Ticket Flags | 118 | ||
6.2.1 Flags für Ticket Renewing | 118 | ||
6.2.2 Flags für Ticket Postdating | 118 | ||
6.2.3 Flags für die Kerberos-Delegation | 119 | ||
6.2.4 Sonstige Flags | 119 | ||
6.3 AP-Optionen | 120 | ||
6.4 Tickets automatisiert erneuern | 120 | ||
6.5 Tickets für die Zukunft | 123 | ||
6.6 Delegation zum Ersten | 125 | ||
6.6.1 Ticket Forwarding | 125 | ||
6.6.2 Ticket Proxying | 127 | ||
6.7 Authentisierung zwischen Realms | 129 | ||
6.7.1 Grundsätzliches zu Vertrauensstellung | 129 | ||
6.7.2 Zwei Realms | 131 | ||
6.7.3 Mehr als zwei Realms | 133 | ||
6.8 Namenskanonisierung und Referrals | 136 | ||
6.8.1 Kanonisierung der Client-Principal-Namen | 137 | ||
6.8.2 Kanonisierung der Dienste-Principal-Namen | 138 | ||
6.8.3 Verweise an entfernte Realms | 139 | ||
6.9 Kerberos und Autorisierungsdaten | 139 | ||
6.10 User-to-User-Authentisierung | 140 | ||
6.11 Delegation zum Zweiten | 141 | ||
6.11.1 Constrained Delegation | 142 | ||
6.11.2 Protocol Transition | 143 | ||
6.11.3 Diskussion | 144 | ||
6.12 Initiale Authentisierung mit Zertifikaten | 145 | ||
6.12.1 Eine Lösung für die Passwort-Problematik | 145 | ||
6.12.2 Das Funktionsprinzip von PKINIT | 146 | ||
6.12.3 Fazit | 147 | ||
II Zentrale Infrastrukturen | 149 | ||
7 Grundlegende Infrastruktur | 153 | ||
7.1 Überblick | 153 | ||
7.2 DNS-Namensauflösung mit BIND | 154 | ||
7.2.1 BIND installieren | 155 | ||
7.2.2 Zonen einrichten | 155 | ||
7.2.3 Starten und Testen | 157 | ||
7.3 Zeitsynchronisation mit NTP | 157 | ||
7.4 Certificate Authority (CA) mit OpenSSL | 158 | ||
7.4.1 Einrichtung der CA | 158 | ||
7.4.2 Einen Zertifikats-Request erzeugen | 160 | ||
7.4.3 Das Zertifikat unterschreiben | 161 | ||
7.5 Verzeichnisdienst mit OpenLDAP | 163 | ||
7.5.1 Installation und Konfiguration | 163 | ||
7.5.2 LDAP-Datenbank für dc=example,dc=com | 166 | ||
7.5.3 Ein erster Test | 168 | ||
7.5.4 Sicherheit | 169 | ||
8 Das Key Distribution Center von MIT Kerberos | 173 | ||
8.1 Übersicht | 173 | ||
8.2 Softwareinstallation | 173 | ||
8.3 Konfiguration | 174 | ||
8.3.1 Der Master Key der KDC-Datenbank | 174 | ||
8.3.2 Zeitangaben bei MIT Kerberos | 175 | ||
8.3.3 Verschlüsselungstypen | 176 | ||
8.3.4 Die Datei kdc.conf | 176 | ||
8.4 Initialisierung der KDC-Datenbank | 181 | ||
8.4.1 Die Datenbank mit kdb5_util initialisieren | 181 | ||
8.4.2 Die initiale Datenbank | 183 | ||
8.4.3 Mit kadmin.local weitere Principals anlegen | 184 | ||
8.4.4 Master Key in Stash-Datei ablegen | 185 | ||
8.5 Starten des KDC | 187 | ||
8.6 Ein erster Test | 187 | ||
9 Die Administration von MIT Kerberos | 189 | ||
9.1 Der Kadmin-Dienst | 189 | ||
9.2 Administrative Zugriffe kontrollieren | 191 | ||
9.3 Der Kpasswd-Dienst | 193 | ||
9.4 Starten der administrativen Dienste | 193 | ||
9.5 Principals verwalten | 195 | ||
9.5.1 Passwortrichtlinien | 195 | ||
9.5.2 Principal-Eigenschaften | 198 | ||
9.5.3 Anwender-Principals anlegen | 203 | ||
9.5.4 Dienste-Principals anlegen | 205 | ||
9.5.5 Verschlüsselungstypen der Principals verwalten | 206 | ||
9.6 Keytabs verwalten | 207 | ||
9.7 Service Keys ändern | 208 | ||
10 Die Clientkommandos von MIT Kerberos | 211 | ||
10.1 Installation und Konfiguration | 211 | ||
10.2 Die Kommandos kinit und klist | 211 | ||
10.2.1 Tickets holen | 211 | ||
10.2.2 Ticket-Eigenschaften anzeigen und beeinflussen | 213 | ||
10.2.3 Protokoll-Requests beeinflussen | 215 | ||
10.2.4 Sonstige Kommandozeilenoptionen | 215 | ||
10.2.5 Service Tickets holen | 216 | ||
10.2.6 Mit Keytabs arbeiten | 216 | ||
10.3 Das Kommando kvno | 218 | ||
10.4 Das Kommando kpasswd | 219 | ||
10.5 Das Kommando kdestroy | 220 | ||
10.6 Die Kommandos k5start und krenew | 220 | ||
10.6.1 krenew | 220 | ||
10.6.2 k5start | 221 | ||
11 Die Konfiguration der MIT Libraries | 223 | ||
11.1 Die Datei krb5.conf | 223 | ||
11.1.1 Die Struktur der krb5.conf | 224 | ||
11.1.2 Konfigurationsabschnitte | 225 | ||
11.1.3 Parameter im Abschnitt [libdefaults] | 226 | ||
11.1.4 Parameter im Abschnitt [realms] | 230 | ||
11.1.5 Parameter im Abschnitt [domain_realm] | 232 | ||
11.1.6 Parameter im Abschnitt [appdefaults] | 233 | ||
11.1.7 Parameter im Abschnitt [logging] | 235 | ||
11.1.8 Die krb5.conf für den Realm EXAMPLE.COM | 235 | ||
11.2 Konfiguration über DNS | 236 | ||
11.2.1 SRV Records | 236 | ||
11.2.2 TXT Records | 239 | ||
11.3 Konfiguration mit Umgebungsvariablen | 239 | ||
12 Ausfallsicherheit für MIT Kerberos | 241 | ||
12.1 Backup der KDC-Datenbank | 241 | ||
12.2 Wiederherstellung der KDC-Datenbank | 242 | ||
12.3 Replikation der KDC-Datenbank | 243 | ||
12.3.1 Möglichkeiten der Kerberos-Replikation | 243 | ||
12.3.2 Sicherheit der Replikation | 244 | ||
12.4 Replikation bei MIT Kerberos | 244 | ||
12.4.1 Ein Slave KDC einrichten | 245 | ||
12.4.2 Schritte auf dem Master KDC | 247 | ||
12.4.3 Das Slave KDC starten | 248 | ||
12.4.4 Das Slave KDC bekannt machen | 248 | ||
12.4.5 Regelmäßig replizieren | 248 | ||
13 Ein LDAP-Backend für die MIT-Datenbank | 251 | ||
13.1 Überblick | 251 | ||
13.1.1 Erweiterte Funktionalitäten | 251 | ||
13.1.2 Vorgehensweise | 252 | ||
13.1.3 Sicherheit | 252 | ||
13.2 Software, Schema und Objekte | 254 | ||
13.2.1 Software installieren | 254 | ||
13.2.2 Das Schema erweitern | 254 | ||
13.2.3 Konvention | 257 | ||
13.2.4 Objekte anlegen | 258 | ||
13.2.5 Limits für LDAP-Suchvorgänge | 259 | ||
13.2.6 LDAP-Berechtigungen | 260 | ||
13.3 Das KDC auf LDAP umstellen | 260 | ||
13.3.1 Vorbereitungen | 260 | ||
13.3.2 Konfiguration | 261 | ||
13.3.3 Die KDC-Datenbank im LDAP initialisieren | 263 | ||
13.3.4 Den Realm einrichten | 265 | ||
13.4 Existierende Nutzerobjekte | 266 | ||
13.5 Principal-Aliase | 269 | ||
13.5.1 Client-Aliase | 270 | ||
13.5.2 Dienste-Aliase | 271 | ||
13.6 Ausfallsicherheit mit LDAP | 271 | ||
13.6.1 OpenLDAP auf kdc01 vorbereiten | 272 | ||
13.6.2 LDAP-Server auf kdc02 einrichten | 277 | ||
13.6.3 Ausfallsicherheit für das KDC | 279 | ||
13.6.4 Die Clientkonfiguration anpassen | 280 | ||
13.7 Lockout Policies | 281 | ||
14 Einen Heimdal Realm einrichten | 285 | ||
14.1 Überblick | 285 | ||
14.2 Vorbereitung | 286 | ||
14.3 Das Key Distribution Center von Heimdal | 287 | ||
14.3.1 Die Datei kdc.conf | 288 | ||
14.3.2 Master Key | 290 | ||
14.3.3 Die KDC-Datenbank initialisieren | 291 | ||
14.3.4 Das KDC starten | 293 | ||
14.4 Die Administration von Heimdal | 293 | ||
14.4.1 Administrative Zugriffe kontrollieren | 293 | ||
14.4.2 Principals verwalten | 294 | ||
14.4.3 Weitere administrative Tätigkeiten | 297 | ||
14.4.4 Passwörter verwalten | 297 | ||
14.5 Die Heimdal-Werkzeuge | 299 | ||
14.6 Ausfallsicherheit für Heimdal | 300 | ||
14.6.1 Ein Slave KDC einrichten | 301 | ||
14.6.2 Starten des hpropd auf dem Slave KDC | 302 | ||
14.6.3 Die Replikation mit Hprop starten | 302 | ||
14.6.4 Regelmäßig replizieren | 302 | ||
14.7 Ein LDAP-Backend für Heimdal | 303 | ||
14.7.1 LDAP vorbereiten | 303 | ||
14.7.2 Das KDC auf LDAP umstellen | 305 | ||
14.7.3 Ausfallsicherheit mit LDAP | 306 | ||
15 Kerberos bei Microsoft Active Directory | 309 | ||
15.1 Active Directory im Überblick | 309 | ||
15.1.1 Kerberos in Active Directory | 310 | ||
15.1.2 AD-Version und Functional Level | 311 | ||
15.2 Testlabor | 312 | ||
15.3 Das Key Distribution Center von Active Directory | 313 | ||
15.3.1 Die Domäne einrichten | 313 | ||
15.3.2 Grundlegende Dienste | 319 | ||
15.3.3 Ein erster Test | 320 | ||
15.3.4 Ausfallsicherheit | 321 | ||
15.4 Kerberos-Administration | 321 | ||
15.4.1 Administrationswerkzeuge | 322 | ||
15.4.2 Überblick über den neuen Realm | 322 | ||
15.4.3 Principals verwalten | 324 | ||
15.4.4 Verschlüsselungstypen | 330 | ||
15.4.5 Keytabs erzeugen | 331 | ||
15.4.6 Kerberos Policies | 333 | ||
15.5 Kerberos-Administration mit LDAP | 335 | ||
15.5.1 LDAP-Suchen im AD | 336 | ||
15.5.2 Ein Benutzerobjekt anlegen | 337 | ||
15.5.3 Diensteobjekte anlegen | 339 | ||
15.5.4 Maschinenobjekte anlegen | 339 | ||
15.6 Weitere Werkzeuge | 342 | ||
16 Kerberos für Fortgeschrittene | 343 | ||
16.1 Verteilte Kerberos-Umgebungen | 343 | ||
16.1.1 Cross-Realm bei MIT Kerberos | 344 | ||
16.1.2 Cross-Realm bei Heimdal | 349 | ||
16.1.3 Cross-Realm bei Active Directory | 353 | ||
16.1.4 Aufbau der Gesamtstruktur | 355 | ||
16.2 Delegation für Fortgeschrittene | 360 | ||
16.2.1 Vorbereitungen | 360 | ||
16.2.2 Das Ok-As-Delegate Flag | 361 | ||
16.2.3 kimpersonate | 363 | ||
16.2.4 Constrained Delegation und Protocol Transition | 365 | ||
16.3 PKINIT | 368 | ||
16.3.1 Initiale Authentisierung mit Zertifikaten | 368 | ||
16.3.2 PKINIT im Testnetz | 369 | ||
16.3.3 Kerberos, PKINIT und Smartcards | 374 | ||
III Integrierte Umgebungen | 379 | ||
17 Grundlagen | 383 | ||
17.1 Principals und Keytabs verwalten | 383 | ||
17.1.1 Client Principals anlegen | 383 | ||
17.1.2 Funktionalität von Client Principals prüfen | 384 | ||
17.1.3 Dienste-Principals anlegen | 385 | ||
17.1.4 Funktionalität von Dienste-Principals prüfen | 386 | ||
17.1.5 Keytab-Dateien anlegen | 386 | ||
17.1.6 Funktionalität von Keytab-Dateien prüfen | 387 | ||
17.2 Zwischenstand | 387 | ||
17.3 Die nativen Kerberos-Bibliotheken | 388 | ||
17.4 GSS-API | 388 | ||
17.5 SPNEGO | 390 | ||
17.6 SSPI | 390 | ||
17.7 SASL | 391 | ||
17.7.1 Protokolle | 391 | ||
17.7.2 Mechanismen | 391 | ||
17.7.3 Konzepte | 392 | ||
17.7.4 Cyrus SASL | 393 | ||
17.8 Zusammenfassung | 394 | ||
18 LDAP-Infrastruktur | 395 | ||
18.1 LDAP im Überblick | 395 | ||
18.1.1 Begriffe und Standards | 395 | ||
18.1.2 Serverimplementierungen | 397 | ||
18.1.3 Daten Im LDAP | 397 | ||
18.1.4 Verzeichnisoperationen | 399 | ||
18.2 LDAP-Sicherheit | 400 | ||
18.3 Kerberisierung bei Active Directory | 401 | ||
18.4 Kerberisierung bei OpenLDAP | 403 | ||
18.4.1 SASL-Konfiguration | 403 | ||
18.4.2 Principal und Keytab | 404 | ||
18.4.3 Identitäts-Mapping | 405 | ||
18.5 Zusammenfassung | 408 | ||
19 Client-Anbindung | 411 | ||
19.1 Windows-Clients in Active Directory | 411 | ||
19.2 Ausbau der Gesamtstruktur | 414 | ||
19.2.1 LDAP-Referrals einrichten | 415 | ||
19.2.2 Identitäts- und Autorisierungsdaten für Linux | 416 | ||
19.3 Linux-Clients in der Infrastruktur mit Kerberos und OpenLDAP | 421 | ||
19.3.1 Name Service Switch (NSS) | 422 | ||
19.3.2 NSS-Module für LDAP | 423 | ||
19.3.3 Pluggable Authentication Modules (PAM) | 430 | ||
19.3.4 pam-krb5 | 433 | ||
19.4 Linux-Clients in Active Directory | 436 | ||
19.5 Linux-Clients in der Gesamtinfrastruktur | 437 | ||
19.5.1 Problemstellung | 437 | ||
19.5.2 slapd als lokaler LDAP-Proxy | 438 | ||
19.5.3 slapd-Konfiguration | 439 | ||
19.5.4 Test der NSS-Anbindung | 442 | ||
19.5.5 PAM-Kerberos-Konfiguration | 443 | ||
19.5.6 Ausblick | 445 | ||
19.6 Zusammenfassung | 445 | ||
20 Elementare Netzwerkdienste unter Unix und Linux | 447 | ||
20.1 Traditionelle Remote-Dienste | 447 | ||
20.1.1 Telnet | 447 | ||
20.1.2 Kerberisierte Remote Shell: krb5-rsh | 454 | ||
20.1.3 Kerberisierter File Transfer: krb5-ftp | 455 | ||
20.2 Moderne Remote-Dienste mit OpenSSH | 456 | ||
20.2.1 Vorbereitungen | 457 | ||
20.2.2 Kerberisierte Secure-Shell-Sitzung | 458 | ||
20.2.3 Tickets weiterleiten | 459 | ||
20.2.4 Secure-Shell-Client unter Windows | 460 | ||
20.2.5 OpenSSH ohne Kerberos Tickets | 464 | ||
20.3 Remote-Dienste in verteilter Umgebung | 465 | ||
20.3.1 Cross-Realm-Problematik | 465 | ||
20.3.2 auth_to_local-Mappings | 466 | ||
20.3.3 Heimdal | 468 | ||
20.3.4 Cross-Realm-Anmeldung ohne Kerberos Tickets | 468 | ||
21 Kerberisierte Dateisysteme | 469 | ||
21.1 CIFS | 469 | ||
21.1.1 CIFS-Service unter Windows einrichten | 469 | ||
21.1.2 Authentisierung bei CIFS | 472 | ||
21.1.3 CIFS-Client unter Linux | 472 | ||
21.1.4 CIFS-Service unter Linux: Samba | 474 | ||
21.1.5 ID Mapping | 477 | ||
21.1.6 Heimatverzeichnisse für alle Windows-Nutzer | 482 | ||
21.2 NFS | 483 | ||
21.2.1 Überblick | 483 | ||
21.2.2 NFSv3 ohne Kerberos | 484 | ||
21.2.3 NFSv3 und Sicherheit | 486 | ||
21.2.4 NFSv4 | 487 | ||
21.2.5 Kerberisierter NFSv4-Service unter Linux | 488 | ||
21.2.6 Den Server einrichten | 493 | ||
21.2.7 Kerberisierter NFSv4-Client unter Linux | 494 | ||
21.2.8 Den Client einrichten | 495 | ||
21.2.9 NFSv4 und Sicherheit | 497 | ||
21.2.10 NFSv4 in Cross-Realm-Umgebung | 498 | ||
21.2.11 Abschlussarbeiten | 498 | ||
22 Single Sign-on für den Apache-Webserver | 501 | ||
22.1 Kerberos und das HTTP-Protokoll | 501 | ||
22.1.1 Das World Wide Web | 501 | ||
22.1.2 Authentisierung im HTTP-Protokoll | 502 | ||
22.1.3 Negotiate (SPNEGO) | 503 | ||
22.2 Den Apache-Server konfigurieren | 503 | ||
22.2.1 Voraussetzungen | 503 | ||
22.2.2 Principals und Keytab-Einträge | 505 | ||
22.2.3 mod_auth_kerb konfigurieren | 508 | ||
22.3 Browserkonfiguration | 509 | ||
22.3.1 Vertrauenswürdige Seiten konfigurieren | 509 | ||
22.3.2 Zugriff testen | 510 | ||
22.3.3 Delegation konfigurieren | 512 | ||
22.3.4 Delegation testen | 513 | ||
22.4 Autorisierungsdaten und Ticket-Größe | 515 | ||
22.5 Autorisierung über LDAP | 516 | ||
22.6 Beispiel MediaWiki | 519 | ||
22.6.1 Die Anwendung einrichten | 519 | ||
22.6.2 Kerberisierung | 520 | ||
22.7 Zusammenfassung | 522 | ||
IV Anhang | 523 | ||
A Schnelleinstieg in LDAP | 525 | ||
A.1 LDIF | 525 | ||
A.1.1 Das LDAP-Datenmodell | 525 | ||
A.1.2 LDIF-Repräsentation von LDAP-Daten | 526 | ||
A.1.3 Änderungen mit LDIF | 527 | ||
A.2 OpenLDAP-Tools | 529 | ||
A.2.1 Suchen mit ldapsearch | 529 | ||
A.2.2 Authentisierung | 530 | ||
A.2.3 Weitere OpenLDAP-Kommandos | 532 | ||
A.3 Grafische LDAP-Werkzeuge | 532 | ||
B Konfiguration der Betriebssysteme | 535 | ||
B.1 Netzwerkparameter | 535 | ||
B.2 Ubuntu 10.04 | 535 | ||
B.3 Windows Server 2008 R2 | 538 | ||
B.4 Windows 7 | 539 | ||
C Softwareinstallationen | 541 | ||
C.1 Vorbemerkungen | 541 | ||
C.2 MIT Kerberos | 542 | ||
C.3 MIT-Kerberos-Applikationen | 543 | ||
C.4 Heimdal | 543 | ||
C.5 k5start | 544 | ||
C.6 msktutil | 545 | ||
C.7 OpenSC | 545 | ||
Literaturverzeichnis | 547 | ||
Index | 553 |