39.8. Erstellen der Kerberos-Dienst-Prinzipale

Bis jetzt wurden nur Benutzerberechtigungen erläutert. Kerberos-kompatible Dienste müssen sich jedoch selbst beim Client-Benutzer authentifizieren. Daher müssen spezielle Dienst-Prinzipale in der Kerberos-Datenbank für jeden im Bereich angebotenen Dienst vorhanden sein. Wenn ldap.example.com beispielsweise einen LDAP-Dienst anbietet, benötigen Sie einen Dienst-Prinzipal, ldap/ldap.example.com@EXAMPLE.COM, um diesen Dienst bei allen Clients zu authentifizieren.

Die Namenkonvention für Dienst-Prinzipale lautet Dienst/Hostname@BEREICH, wobei der Hostname dem vollständig qualifizierten Hostnamen entspricht.

Gültige Dienst-Deskriptoren sind:

Dienst-Deskriptor

Dienst

host

Telnet, RSH, SSH

nfs

NFSv4 (mit Kerberos-Unterstützung)

HTTP

HTTP (mit Kerberos-Authentifizierung)

imap

IMAP

pop

POP3

ldap

LDAP

Dienst-Prinzipale ähneln Benutzer-Prinzipalen, aber es gibt wesentliche Unterschiede. Im Gegensatz zum Schlüssel des Dienst-Prinzipals ist der Schlüssel des Benutzer-Prinzipals durch ein Passwort geschützt. Wenn ein Benutzer ein Ticket zur Ticketausstellung vom KDC erhält, muss er sein Passwort eingeben, damit Kerberos das Ticket entschlüsseln kann. Für den Systemadministrator wäre es ziemlich unpraktisch, wenn alle acht Stunden für den SSH-Daemon neue Tickets ausgestellt werden müssten.

Stattdessen extrahiert der Administrator den Schlüssel zur Entschlüsselung des anfänglichen Tickets für den Dienst-Prinzipal einmal aus dem KDC und speichert ihn in einer lokalen Datei namens keytab. Dienste, wie der SSH-Daemon, lesen diesen Schlüssel und nutzen ihn, falls erforderlich, zum automatischen Erhalt neuer Tickets. Die standardmäßige keytab-Datei befindet sich im Pfad /etc/krb5.keytab.

Zum Erstellen eines Dienst-Prinzipals für jupiter.example.com geben Sie die folgenden Kommandos während der kadmin-Sitzung ein:

kadmin -p newbie/admin
Authenticating as principal newbie/admin@EXAMPLE.COM with password.
Password for newbie/admin@EXAMPLE.COM:
kadmin:  addprinc -randkey host/jupiter.example.com
WARNING: no policy specified for host/jupiter.example.com@EXAMPLE.COM;
defaulting to no policy
Principal "host/jupiter.example.com@EXAMPLE.COM" created.
  

Statt ein neues Passwort für den neuen Prinzipal einzurichten, bedeutet das Flag -randkey für kadmin eine Aufforderung zum Generieren eines willkürlichen Schlüssels. Diese Funktion wird verwendet, weil keine Benutzeraktion für diesen Prinzipal gewünscht ist. Es handelt sich um ein Serverkonto für die Maschine.

Extrahieren Sie nun den Schlüssel und speichern Sie ihn in der lokalen keytab-Datei /etc/krb5.keytab. Diese Datei gehört dem Superuser. Daher müssen Sie als root angemeldet sein, um den nächsten Befehl in der kadmin-Shell auszuführen:

kadmin:  ktadd host/jupiter.example.com
Entry for principal host/jupiter.example.com with kvno 3, encryption type Triple
DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/jupiter.example.com with kvno 3, encryption type DES
cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab.
kadmin:

Vergewissern Sie sich nach der Fertigstellung, dass Sie das admin-Ticket, das Sie mit kinit erhalten haben, mit kdestroy vernichten.