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
, wobei der Dienst
/Hostname
@BEREICH
Hostname
dem vollständig qualifizierten Hostnamen entspricht.
Gültige Dienst-Deskriptoren sind:
Dienst-Deskriptor |
Dienst |
---|---|
|
Telnet, RSH, SSH |
|
NFSv4 (mit Kerberos-Unterstützung) |
|
HTTP (mit Kerberos-Authentifizierung) |
|
IMAP |
|
POP3 |
|
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.