Tutorials - Kerberos-Grundinstallation

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk

Kerberos-Grundinstallation

Diese Seite wurde 8352 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: kerberos basic setup nfs4 howto tutorial

Inhaltsverzeichnis



Vorwort Top


Kerberos ist ein System zur Authentifizierung (überprüfen der Login-Daten) und Authorisierung (Zugriffsregelung) mit Single-Sign-On (einmaliger Anmeldung für alle Dienste). Aktuell ist die Version 5, Version 4 sollte nicht mehr verwendet werden.

Es gibt davon mehrere Implementierungen, u.a. freie wie MIT-Kerberos, Heimdal und Shishi aber auch in Microsoft-Produkten ab Windows 2000.

Dieser Artikel behandelt lediglich die Grundkonfiguration von Kerberos. Anwendungsgebiete wie Systemanmeldung mit zentraler User-Verwaltung und Anmeldung an NFS4-Dateisystemen folgen noch.

Prinzip Top


Am Anfang meldet sich der User am System an und erhält dabei vom Key Distribution Center (KDC) ein Ticket Granting Ticket (TGT). Dieses TGT kann er dann verwenden, um ein Ticket zu erhalten, mit welchem er auf bestimmte Services zugreifen kann. Gleichzeitig bestätigt dabei der Service, dass er auch wirklich der ist, der er zu sein scheint und nicht ein, von einem Angreifer gestellter Host.

Dadurch dass zeitabhängige Tickets anstatt Passwörtern verwendet wird, ist es für Angreifer nahezu unmöglich durch Sniffing- und Replay-Attacken in das System einzudrigen. Andererseits muss dafür beim KDC besonders auf dessen Sicherheit geachtet werden, da dieser sämtliche Account-Daten enthält und den wunden Punkt des Systems darstellt.

Installation Top


Aufgrund der hohen Verbreitung entschied sich der Autor für MIT-Kerberos5. Unter Gentoo genügt es, das kerberos-Useflag in der make.conf zu aktivieren und ein emerge -DN world zu starten. Ein mit-krb5-Paket ist jedoch in nahezu allen Distributionen zu finden.

Konfiguration Top


Es gibt zwei Arten, wie sich Kerberos-Clients grundsätzlich Konfigurieren lassen.

  • die dynamische Weise - per DNS-Einträge und lokaler Domain für alle Client, sowie entsprechende Reverse-Records für IP-Adressen


  • die statische Weise - direkt in der Konfiguration eingetragen



dynamische Konfiguration
Über die Einrichtung von lokalen Domains gibt es ein eigenes Tutorial.

Auf dem Kerberos-Server und den Clients ist nur eine minimale Konfigurationsdatei erforderlich.

/etc/krb5.conf:


[libdefaults]
        default_realm = INTERN.BEISPIEL.LOCAL

[realms]
        INTERN.BEISPIEL.LOCAL = {

        }

[domain_realm]
        .intern.beispiel.local = INTERN.BEISPIEL.LOCAL
        intern.beispiel.local = INTERN.BEISPIEL.LOCAL



Zone intern.beispiel.local:


$ORIGIN intern.beispiel.local.
kdc                     A       192.168.0.2 ; IP des Kerberos-Servers
$ORIGIN _tcp.intern.beispiel.local.
_kerberos               SRV     0 0 88 kdc.intern.beispiel.local.
_kerberos-adm           SRV     0 0 749 kdc.intern.beispiel.local.
$ORIGIN _udp.intern.beispiel.local.
_kerberos               SRV     0 0 88 kdc.intern.beispiel.local.
_kpasswd                SRV     0 0 464 kdc.intern.beispiel.local.



Zone 0.168.192.in-addr.arpa:


$ORIGIN 0.168.192.in-addr.arpa.
2                       PTR     kdc.intern.beispiel.local



statische Konfiguration
Auch bei der statischen Konfiguration kann die krb5.conf vom Server auf alle Clients übernommen werden. DNS-Einträge für die Hosts sind nicht zwingend erforderlich (aber angenehm).

/etc/krb5.conf:


[libdefaults]
        default_realm = INTERN.BEISPIEL.LOCAL

[realms]
        INTERN.BEISPIEL.LOCAL = {
                admin_server = kdc.intern.beispiel.local # hier könnte auch eine IP stehen
                kdc = kdc.intern.beispiel.local # hier könnte auch eine IP stehen
        }

[domain_realm]
        .intern.beispiel.local = INTERN.BEISPIEL.LOCAL
        intern.beispiel.local = INTERN.BEISPIEL.LOCAL



Verwaltung Top


Bevor sich Kerberos starten lässt, muss noch eine Datenbank auf dem Server initialisiert werden.

Code:


kdb5_util create -s



Nun sollte sich der kdc-Daemon starten lassen. Dies geschieht meist durch ein /etc/init.d/mit-krb5kdc start.

Auf den Clients sind diese beiden Schritte nicht erforderlich.

Mit kadmin.local kann man auf dem Server nun beginnen User, Hosts und Services einzurichten.

Code:


# kadmin.local 
kadmin.local:  add_principal testuser
WARNING: no policy specified for testuser@INTERN.BEISPIEL.LOCAL; defaulting to no policy
Enter password for principal "testuser@INTERN.BEISPIEL.LOCAL":
Re-enter password for principal "testuser@INTERN.BEISPIEL.LOCAL":
Principal "testuser@INTERN.BEISPIEL.LOCAL" created.



Somit ist nun ein testuser angelegt. Auf dem Client können wir dies mit kinit testuser überprüfen.

Code:


 # kinit testuser
Password for testuser@INTERN.BEISPIEL.LOCAL:

 # klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: testuser@INTERN.BEISPIEL.LOCAL

Valid starting     Expires            Service principal
11/22/07 13:08:00  11/23/07 13:08:00  krbtgt/INTERN.BEISPIEL.LOCAL@INTERN.BEISPIEL.LOCAL



Um jetzt diesem User Zugang zu einem Service zu gewähren, müssen noch Principals in Form von service/hostname (z.B. ssh/kdc.intern.beispiel.local) erstellt werden.

Damit der Service-Host über die Zugangsdaten zum KDC verfügt, wird der Service-Principal mit ktadd ssh/kdc.intern.beispiel.local in die Keytab-Datei /etc/krb5.keytab exportiert und auf dem Service-Host abgelegt.

Hier gehts weiter mit Teil 2.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk/Kerberos-Grundinstallation