Kerberos ist ein Netzwerkauthentifizierungsprotokoll.
Kerberos bietet eine starke kryptografische Authentifizierung gegenüber den Geräten, wodurch Client und Server sicherer kommunizieren können. Es wurde entwickelt, um Netzwerksicherheitsprobleme zu beheben.
Wenn Firewalls eine Lösung darstellen, um das Eindringen von externen Netzwerken zu bekämpfen, wird Kerberos normalerweise verwendet, um das Eindringen und andere Sicherheitsprobleme innerhalb des Netzwerks zu beheben.
Die aktuelle Version von Kerberos ist Version 5, die als KRB5 bezeichnet wird .
Um Kerberos zu implementieren, muss der zentralisierte Authentifizierungsdienst auf dem Server ausgeführt werden.
Dieser Dienst heißt KEY DISTRIBUTION CENTER (KDC).
Einem bei KDC registrierten Server vertrauen alle anderen Computer im Kerberos-Realm.
Beispieldatei krb5.conf
Hier ist eine krb5.conf-Beispieldatei, die alle REALM- und Domänen-zu-REAM-Zuordnungsinformationen enthält,
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
Kerberos KDC-Server installieren
Aus Sicherheitsgründen wird empfohlen, den Kerberos (KDC)-Server auf einem separaten Server auszuführen.
Laden Sie das krb5-Serverpaket herunter und installieren Sie es.
# rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm Preparing... ########################################### [100%] 1:krb5-server ########################################### [100%]
Stellen Sie sicher, dass die folgenden RPMs installiert sind, bevor Sie KDC konfigurieren:
# rpm -qa | grep -i krb5 pam_krb5-2.3.11-9.el6.x86_64 krb5-server-1.10.3-10.el6_4.6.x86_64 krb5-workstation-1.10.3-10.el6_4.6.x86_64 krb5-libs-1.10.3-10.el6_4.6.x86_64
Datei /etc/krb5.conf ändern
Ändern Sie /etc/krb5.conf so, dass es wie unten mit den entsprechenden REALM- und DOMAIN_REALM-Zuordnungen widerspiegelt.
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYREALM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MYREALM.COM = { kdc = elserver1.example.com admin_server = elserver1.example.com } [domain_realm] .myrealm.com = MYREALM.COM myrealm.com = MYREALM.COM
Kdc.conf-Datei ändern
Auch die kdc.conf sollte wie unten gezeigt modifiziert werden.
# cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] MYREALM.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
KDC-Datenbank erstellen
Erstellen Sie als Nächstes die KDC-Datenbank mit dem Befehl kdb5_util wie unten gezeigt. Geben Sie in diesem Schritt das entsprechende Passwort für den Hauptschlüssel der KDC-Datenbank ein.
# /usr/sbin/kdb5_util create -s Loading random data Initializing database '/var/kerberos/krb5kdc/principal' for realm 'MYREALM.COM', master key name 'K/[email protected]' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: Re-enter KDC database master key to verify:
Administratorrechte zuweisen
Den Benutzern können über die Datei /var/kerberos/krb5kdc/kadm5.acl.
Administratorrechte für die Datenbank gewährt werden# cat /var/kerberos/krb5kdc/kadm5.acl */[email protected] *
Im obigen Beispiel hat jeder Prinzipal in MYREALM mit einer Administratorinstanz alle Administratorrechte.
Erstellen Sie einen Prinzipal
Erstellen Sie den Prinzipal mit dem folgenden Befehl. In diesem Beispiel habe ich den Prinzipal mit dem Benutzernamen „eluser“ erstellt.
# kadmin.local -q "addprinc eluser/admin" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for eluser/[email protected]; defaulting to no policy Enter password for principal "eluser/[email protected]": Re-enter password for principal "eluser/[email protected]": Principal "eluser/[email protected]" created.
Starten Sie den Kerberos-Dienst
Starten Sie die KDC- und kadmin-Daemons wie unten gezeigt.
# service krb5kdc start Starting Kerberos 5 KDC: [ OK ] # service kadmin start Starting Kerberos 5 Admin Server: [ OK ]
Kerberos-Client konfigurieren
Konfigurieren Sie den Kerberos-Client so, dass er sich bei der KDC-Datenbank authentifiziert:
Sehen wir uns nun an, wie der krb5-Client so konfiguriert wird, dass er sich bei der oben erstellten Kerberos-KDC-Datenbank authentifiziert.
Schritt 1:Installieren Sie die Pakete krb5-libs und krb5-workstation auf dem Client-Rechner.
Schritt 2:Kopieren Sie die /etc/krb5.conf vom KDC-Server auf den Client-Rechner.
Schritt 3:Jetzt müssen wir den Prinzipal für den Client in der KDC/Kerberos-Datenbank erstellen.
Sie können die folgenden Befehle verwenden, um den Prinzipal für den Clientcomputer auf dem KDC-Masterserver zu erstellen. Im folgenden Beispiel erstelle ich einen Host-Prinzipal für den Client elserver3.example.com auf dem Master-KDC-Server elserver1.example.com
# kadmin.local -q "addprinc host/elserver3.example.com" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for host/[email protected]; defaulting to no policy Enter password for principal "host/[email protected]": Re-enter password for principal "host/[email protected]": Principal "host/[email protected]" created.
Schritt 4:Extrahieren Sie die krb5.keytab für den Client vom KDC-Masterserver mit dem folgenden Befehl:
# kadmin.local -q "ktadd -k /etc/krb5.keytab host/elserver3.example.com" Authenticating as principal root/[email protected] with password. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/etc/krb5.keytab.
Damit ist die Konfiguration abgeschlossen. In dieser Phase sind Sie fertig.
Von nun an überprüft der Host jedes Mal, wenn Sie eine SSH-, RSH-Verbindung herstellen, seine Identität anhand der KDC-Datenbank mithilfe der Keytab-Datei und stellt eine sichere Verbindung über Kerberos her.
Ktadd wird zum Generieren einer neuen Keytab-Datei oder zum Hinzufügen eines Prinzipals zu einer vorhandenen Keytab-Datei mit dem kadmin-Befehl verwendet.
Ktremove wird verwendet, um den Prinzipal aus einem vorhandenen Keytab zu entfernen. Der Befehl zum Entfernen des oben erstellten Prinzipals lautet:
kadmin.local -q "ktremove -k /etc/krb5.keytab –q all"
Löschen Sie eine KDC-Datenbank
Wenn Sie aus irgendeinem Grund eine KDC-Datenbank löschen müssen, verwenden Sie den folgenden Befehl:
# kdb5_util -r MYREALM.COM destroy kdb5_util: Deleting KDC database stored in /usr/local/var/krb5kdc/principal, you sure (type yes to confirm)? <== yes OK, deleting database '/usr/local/var/krb5kdc/principal'...
Die Option -f im obigen Befehl erzwingt das Löschen der KDC-Datenbank.
KDC-Datenbank sichern und wiederherstellen
Um eine KDC-Datenbank in eine Datei zu sichern, verwenden Sie krb5_util_dump.
# kdb5_util dump kdcfile # ls -l kdcfile -rw-------. 1 root root 5382 Apr 10 07:25 kdcfile
Gehen Sie wie folgt vor, um die KDC-Datenbank aus der im obigen Schritt erstellten Sicherungsdatei wiederherzustellen:
# kdb5_util load kdcfile