Bei der Konfiguration von Kerberos gibt es zwei verschiedene Ansätze: die statische Konfiguration in der Datei /etc/krb5.conf
oder die dynamische Konfiguration mit dem DNS. Bei der DNS-Konfiguration suchen die Kerberos-Anwendungen die KDC-Dienste über DNS-Einträge. Bei der statischen Konfiguration fügen Sie die Hostnamen Ihres KDC-Servers der Datei krb5.conf
hinzu (und aktualisieren Sie die Datei, wenn Sie das KDC verschieben oder Ihren Bereich anderweitig neu konfigurieren).
Die DNS-basierte Konfiguration ist meist viel flexibler und der Arbeitsaufwand pro Maschine ist wesentlich geringer. Ihr Bereichsname muss hierfür jedoch entweder Ihrer DNS-Domäne oder einer Unterdomäne davon entsprechen. Die Konfiguration über DNS verursacht ein geringes Sicherheitsproblem. Ein Angreifer kann Ihre Infrastruktur über Ihr DNS ernsthaft stören (durch Shoot-Down des Namenservers, Spoofing von DNS-Datensätzen usw.) Meistens führt das jedoch zu einem Denial of Service. Ein ähnliches Szenario gilt für die statische Konfiguration, es sei denn, Sie geben IP-Adressen in die Datei krb5.conf
statt Hostnamen ein.
Eine Konfigurationsweise von Kerberos ist die Bearbeitung der Konfigurationsdatei /etc/krb5.conf
. Die standardmäßig installierte Datei enthält verschiedene Beispieleinträge. Löschen Sie alle Einträge vor dem Start. krb5.conf
besteht aus mehreren Abschnitten. Jeder beginnt mit dem Abschnittsnamen in Klammern, das sieht z. B. [so aus]
.
Zur Konfiguration Ihrer Kerberos-Clients fügen Sie der Datei krb5.conf
den folgenden Absatz hinzu (wobei kdc.example.com
der Hostname des KDC ist):
[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = kdc.example.com admin_server = kdc.example.com }
Die Zeile default_realm
bestimmt den Standardbereich für Kerberos-Anwendungen. Wenn Sie mehrere Bereiche haben, fügen Sie zusätzliche Anweisungen im Abschnitt [realms]
hinzu.
Fügen Sie der Datei außerdem eine Anweisung hinzu, die bestimmt, wie Anwendungen Hostnamen einem Bereich zuordnen. Beispiel: Wenn Sie sich bei einem entfernten Host anmelden, muss die Kerberos-Bibliothek wissen, in welchem Bereich sich der Host befindet. Das muss im Abschnitt [domain_realms]
konfiguriert werden:
[domain_realm] .example.com = EXAMPLE.COM www.foobar.com = EXAMPLE.COM
Dadurch weiß die Bibliothek, dass alle Hosts in der Datei example.com
DNS-Domänen im Kerberos-Bereich EXAMPLE.COM
sind. Außerdem sollte ein externer Host mit dem Namen www.foobar.com
als Mitglied des Bereichs EXAMPLE.COM
betrachtet werden.
Die DNS-basierte Kerberos-Konfiguration verwendet die SRV-Datensätze. Siehe (RFC2052) A DNS RR for specifying the location of services unter http://www.ietf.org. Diese Datensätze werden in früheren Installationen des BIND-Namensservers nicht unterstützt. Dafür ist mindestens die BIND-Version 8 erforderlich.
Der Name eines SRV-Datensatzes ist für Kerberos immer im Format _service._proto.realm
, wobei "realm" für den Kerberos-Bereich steht. Die Groß-/Kleinschreibung wird bei Domänennamen in DNS nicht beachtet. Daher würden Kerberos-Bereiche mit Groß-/Kleinschreibung bei dieser Konfigurationsmethode zerstört. _service
ist ein Dienstname (beim Verbindungsversuch mit dem KDC oder dem Passwortdienst werden beispielsweise verschiedene Namen verwendet). _proto
kann entweder _udp
oder _tcp
sein, aber nicht alle Dienste unterstützen beide Protokolle.
Der Datenteil der SRV-Ressourcen-Datensätze besteht aus einem Wert für die Priorität, einer Gewichtung, einer Port-Nummer und einem Hostnamen. Die Priorität legt die Reihenfolge fest, in der die Hosts versucht werden (ein niedriger Wert bedeutet eine niedrigere Priorität). Die Gewichtung unterstützt eine Art Belastungsausgleich zwischen Servern mit gleicher Priorität. Sie brauchen diese Werte wahrscheinlich nicht und können sie daher auf Null setzen.
MIT Kerberos sucht derzeit bei der Suche nach Diensten die folgenden Namen:
Definiert den Standort des KDC-Daemons (die Authentifizierung und der Ticket ausstellende Server). Ein typischer Datensatz sieht wie folgt aus:
_kerberos._udp.EXAMPLE.COM. IN SRV 0 0 88 kdc.example.com. _kerberos._tcp.EXAMPLE.COM. IN SRV 0 0 88 kdc.example.com.
Beschreibt den Standort des entfernten Administrationsdiensts. Ein typischer Datensatz sieht wie folgt aus:
_kerberos-adm._tcp.EXAMPLE.COM. IN SRV 0 0 749 kdc.example.com.
Da kadmind UDP nicht unterstützt, sollte kein _udp
-Datensatz vorhanden sein.
Wie bei der statischen Konfigurationsdatei gibt es eine Methode, den Clients mitzuteilen, dass sich ein bestimmter Host im Bereich EXAMPLE.COM
befindet, auch wenn dieser nicht zur example.com
-DNS-Domäne gehört. Das geschieht, indem ein TXT-Datensatz an _keberos.hostname
angehängt wird, wie im Folgenden:
_keberos.www.foobar.com. IN TXT "EXAMPLE.COM"
Die Zeitdifferenz ist die Toleranz, in der Tickets mit Zeitstempeln akzeptiert werden, die nicht genau der Systemuhr des Hosts entsprechen. Die Zeitdifferenz wird meist auf 300 Sekunden (fünf Minuten) festgelegt. Das bedeutet, ein Ticket kann einen Zeitstempel zwischen fünf Minuten vorher und fünf Minuten nach der Server-Uhr haben.
Wenn Sie NTP zum Synchronisieren aller Hosts einsetzen, können Sie diesen Wert auf ca. eine Minute verringern. Der Wert für die Zeitdifferenz wird in der Datei /etc/krb5.conf
wie folgt festgelegt:
[libdefaults] clockskew = 120