Die Kerberos-Datenbank ist das Rückrat von Kerberos und muss ordentlich gepflegt werden. Dieser Abschnitt stellt einige der Verfahren zur Verwaltung der Kerberos-Datenbank zur Verfügung, wie zum Beispiel Sichern und Wiederherstellen der Datenbank, Einrichten der parallelen Vervielfältigung, Verwalten der Vorsorgedatei. Die Schritte für die Initialisierung der Datenbank sind in "So wird ein Master-KDC konfiguriert" zu finden.
Das Vervielfältigen der Kerberos-Datenbank vom Master-KDC auf die Slave-KDCs ist eine der wichtigsten Konfigurationsaufgaben. Wenn die Vervielfältigung nicht oft genug geschieht, geraten Master-KDC und Slave-KDCs in einen nicht synchronisierten Zustand, so dass im Falle eines Versagens des Master-KDCs die Slave-KDCs nicht über die aktuellsten Datenbankinformationen verfügen. Wenn außerdem ein Slave-KDC als Master zum Zweck der Lastverteilung konfiguriert worden ist, haben die Clients, welche diesen Slave als Master-KDC verwenden, nicht die neuesten Informationen. Daher ist es wichtig, sicherzustellen, dass die Vervielfältigung oft genug geschieht, was wiederum von der Häufigkeit abhängig ist, in der die Kerberos-Datenbank geändert wird.
Wenn Sie das Master-KDC konfigurieren, richten Sie kprop_script in einem cron-Job ein, um die Kerberos-Datenbank automatisch in die Ablagedatei /var/krb5/slave_datatrans zu sichern und bei den Slave-KDCs zu vervielfältigen. Wie das mit jeder Datei geschehen kann, kann jedoch auch die Kerberos-Datenbank beschädigt werden. Wenn das auf einem der Slave-KDCs geschieht, bemerken Sie das möglicherweise nie, da durch die nächste automatische Vervielfältigung eine neue Kopie der Datenbank installiert wird. Geschieht das jedoch auf dem Master-KDC, dann wird die beschädigte Datenbank bei der nächsten Vervielfältigung auf alle Slaves übertragen. Außerdem wird die vorherige, unbeschädigte Sicherungsdatei auf dem Master-KDC durch die beschädigte Sicherung überschrieben.
Da es in diesem Szenario keine "fehlerfreie" Sicherungskopie gibt, sollten Sie auch einen cron-Job einrichten, der die Ablagedatei slave_datatrans periodisch an eine andere Stelle kopiert oder mithilfe des Befehls dump aus kdb5_util eine weitere Sicherungskopie erstellt. Wenn dann die Datenbank beschädigt wird, können Sie die letzte Sicherung auf dem Master-KDC mithilfe des Befehls load aus kdb5_util wiederherstellen.
Ein weiterer wichtiger Hinweis: Da die Datenbank-Ablagedatei Hauptbenutzerschlüssel enthält, müssen Sie die Datei vor dem Zugriff durch unbefugte Benutzer schützen (standardmäßig hat die Ablagedatei nur als root Lese-/Schreibrechte). Das bedeutet auch, dass nur der Befehl kprop zur Vervielfältigung der Ablagedatei verwendet werden sollte, weil hierdurch die zu übertragenden Daten verschlüsselt werden. Außerdem vervielfältigt kprop die Daten nur auf den Slave-KDCs, wodurch die Wahrscheinlichkeit, dass der Datenbankauszug versehentlich an nicht autorisierte Hosts geschickt wird, sich auf ein Mindestmaß beschränkt.
Wenn die Kerberos-Datenbank nach ihrer Vervielfältigung aktualisiert wird und danach, noch vor der nächsten Vervielfältigung, beschädigt wird, dann enthalten die Slaves nicht die Aktualisierungen: Die Aktualisierungen gehen verloren. Wegen dieses Szenarios sollten Sie, wenn Sie vor einer normalerweise geplanten Vervielfältigung noch bedeutsame Aktualisierungen an der Datenbank vornehmen, die Datenbank manuell vervielfältigen, um einen Datenverlust zu vermeiden.
Diese Datei auf einem KDC enthält eine Liste von Host-Hauptbenutzernamen, die zeilenweise die Systeme angeben, von denen das KDC über den Vervielfältigungsmechanismus eine aktualisierte Datenbank empfangen kann. Wenn alle Slave-KDCs durch das Master-KDC vervielfältigt werden, dann darf die Datei kpropd.acl auf jedem Slave nur den Host-Hauptbenutzernamen des Masters enthalten.
Die in diesem Handbuch enthaltenen Schritte für die SEAM-Installation und nachfolgende Konfiguration weisen Sie jedoch an, dieselbe kpropd.acl-Datei auf Master- wie auch Slave-KDCs zu speichern. Die Datei enthält alle Host-Hauptbenutzernamen für das KDC. Diese Konfiguration erlaubt Ihnen, von jedem beliebigen KDC aus eine Vervielfältigung für den Fall vorzunehmen, dass ein vervielfältigendes KDC vorübergehend nicht zur Verfügung steht. Außerdem wird durch die Aufbewahrung identischer Kopien auf allen KDCs die Verwaltung vereinfacht.
Der Befehl kprop_script verwendet den Befehl kprop, um die Kerberos-Datenbank auf anderen KDCs zu vervielfältigen. (Wenn kprop_script auf einem Slave-KDC ausgeführt wird, wird dadurch die Slave-Kopie der Kerberos-Datenbank auf anderen KDCs vervielfältigt.) Das Skript kprop_script akzeptiert als Argumente eine Liste von Hostnamen, die durch Leerzeichen voneinander getrennt sind und KDCs bezeichnen, auf denen vervielfältigt werden soll.
Wenn kprop_script ausgeführt wird, erstellt das Skript eine Sicherung der Kerberos-Datenbank in der Datei /var/krb5/slave_datatrans und kopiert dann diese Datei auf die angegebenen KDCs. Die Kerberos-Datenbank wird solange gesperrt, bis die Vervielfältigung abgeschlossen ist.
Melden Sie sich als Superuser beim Master-KDC an.
Sichern Sie die Kerberos-Datenbank mithilfe des Befehls dump aus kdb5_util.
# /usr/krb5/sbin/kdb5_util dump [-verbose] [-d dbname] [Dateiname [Hauptbenutzer...]] |
-verbose |
Druckt den Namen jedes Hauptbenutzers und jeder Richtlinie, die gesichert wird. |
dbname |
Der Name der zu sichernden Datenbank. Beachten Sie, dass ".db" an den angegebenen Datenbanknamen angehängt wird, und dass für die Datei eine absoluter Pfad angegeben werden kann. Wenn die Option -d nicht angegeben ist, dann lautet der Standard-Datenbankname /var/krb5/principal, der dann zu /var/krb5/principal.db wird. |
Dateiname |
Die Datei, in der die Datenbank gesichert wird. Für die Datei kann ein absoluter Pfad angegeben werden. Wenn Sie keine Datei angeben, wird die Datenbank auf der Standardausgabe ausgegeben. |
Hauptbenutzer |
Eine Liste eines oder mehrerer Hauptbenutzer (durch Leerzeichen voneinander getrennt), die gesichert werden sollen. Es müssen vollqualifizierte Hauptbenutzernamen verwendet werden. Wenn Sie keine Hauptbenutzer angeben, wird die gesamte Datenbank gesichert. |
Im folgenden Beispiel wird die Kerberos-Datenbank in einer Datei gesichert, die dumpfile genannt wird. Da die Option -verbose angegeben ist, wird jeder Hauptbenutzer während seiner Sicherung gedruckt.
# kbd5_util dump -verbose dumpfile kadmin/kdc1.eng.acme.com@ENG.ACME.COM krbtgt/eng.acme.com@ENG.ACME.COM kadmin/history@ENG.ACME.COM pak/admin@ENG.ACME.COM pak@ENG.ACME.COM changepw/kdc1.eng.acme.com@ENG.ACME.COM # |
Im folgenden Beispiel werden die Hauptbenutzer pak und pak/admin aus der Kerberos-Datenbank gesichert.
# kdb5_util dump -verbose dumpfile pak/admin@ENG.ACME.COM pak@ENG.ACME.COM pak/admin@ENG.ACME.COM pak@ENG.ACME.COM # |
Melden Sie sich als Superuser beim Master-KDC an.
Stellen Sie die Kerberos-Datenbank mithilfe des Befehls load aus kdb_util wieder her.
# /usr/krb5/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] |
-verbose |
Druckt den Namen jedes Hauptbenutzers und jeder Richtlinie, die wiederhergestellt wird. |
dbname |
Der Name der wiederherzustellenden Datenbank. Beachten Sie, dass ".db" an den angegebenen Datenbanknamen angehängt wird, und dass für die Datei eine absoluter Pfad angegeben werden kann. Wenn die Option -d nicht angegeben ist, dann lautet der Standard-Datenbankname /var/krb5/principal, der dann zu /var/krb5/principal.db wird. |
-update |
Aktualisiert die bestehende Datenbank; andernfalls wird eine neue Datenbank erstellt oder die bestehende Datenbank überschrieben. |
Dateiname |
Die Datei, aus der die Datenbank wiederherzustellen ist. Für die Datei kann ein absoluter Pfad angegeben werden. |
Im folgenden Beispiel wird die Datenbank mit dem Namen database1.db im aktuellen Verzeichnis der Datei dumpfile wiederhergestellt. Da die Option -update nicht angegeben ist, wird durch den Wiederherstellungsprozess eine neue Datenbank erstellt.
# kdb5_util load -d database1 dumpfile |
Dieses Verfahren zeigt Ihnen, wie die Kerberos-Datenbank mithilfe des Befehls kprop vervielfältigt wird. Sie können es anwenden, wenn Sie ein Slave-KDC mit dem Master-KDC außerhalb des periodischen cron-Jobs synchronisieren müssen. Und, anders als beim kprop_script, können Sie mit kprop nur die aktuelle Datenbank-Sicherung vervielfältigen, ohne zuerst eine neue Sicherung der Datenbank zu erstellen.
Melden Sie sich als Superuser beim Master-KDC an.
(Optional) Sichern Sie die Datenbank mithilfe des Befehls kdb5_util.
# /usr/krb5/sbin/kdb5_util dump /var/krb5/slave_datatrans |
Vervielfältigen Sie die Datenbank auf einem Slave-KDC mithilfe des Befehls kprop.
# /usr/krb5/lib/kprop -f /var/krb5/slave_datatrans slave_KDC |
Wenn Sie die Datenbank sichern und auf einem Slave-KDC außerhalb des periodischen cron-Jobs vervielfältigen möchten, können Sie den Befehl kprop_script folgendermaßen benutzen:
# /usr/krb5/lib/kprop_script slave_KDC |
In den meisten Fällen wird das Master-KDC ausschließlich dazu verwendet, seine Datenbank auf Slave-KDCs zu vervielfältigen. Wenn jedoch Ihre Site viele Slave-KDCs hat, sollten Sie eine Lastverteilung im Vervielfältigungsprozess in Erwägung ziehen, die parallele Vervielfältigung genannt wird.
Die parallele Vervielfältigung erlaubt es bestimmten Slave-KDCs, die Vervielfältigungspflichten mit dem Master-KDC zu teilen. Dadurch kann die Vervielfältigung schneller erfolgen und die Arbeit des Master-KDCs erleichtert werden.
Nehmen wir zum Beispiel an, Ihre Site hat einen Master und sechs Slaves (dargestellt in Abbildung 3-2), wobei slave-1 bis slave-3 eine logische Gruppe bilden und slave-4 bis slave-6 eine andere. Um die parallele Vervielfältigung einzurichten, könnten Sie das Master-KDC seine Datenbank auf slave-1 und slave-4 vervielfältigen lassen, und diese Slaves könnten dann die Datenbank auf den anderen Slaves in ihrer Gruppe vervielfältigen.
Dies ist kein schrittweise dargestelltes Verfahren, sondern eine Liste von Konfigurationsschritten auf hoher Ebene, die zur parallelen Vervielfältigung führen.
Ändern Sie auf dem Master-KDC den kprop_script-Eintrag im cron-Job, damit nur für die Slaves Argumente angegeben werden, welche die nachfolgende Vervielfältigung durchführen (Vervielfältigungs-Slaves).
Fügen Sie auf jedem Vervielfältigungs-Slave einen kprop_script -Eintrag im jeweiligen cron-Job hinzu, der Argumente für die Slaves enthält, auf denen zu vervielfältigen ist. Damit die parallele Vervielfältigung erfolgreich verläuft, sollte der cron-Job so eingerichtet werden, dass er erst ausgeführt wird, nachdem der Vervielfältigungs-Slave selbst eine Vervielfältigung der neuen Datenbank erhalten hat.
Die Festlegung, wie lange es dauert, bis ein Vervielfältigungs-Slave seine Vervielfältigung erhalten hat, hängt von Faktoren wie Netzwerkbandbreite und Datenbankgröße ab.
Richten Sie auf jedem Slave-KDC die entsprechenden, zu vervielfältigenden Berechtigungen ein. Das wird durch Hinzufügen des Host-Hauptbenutzernamens seines vervielfältigenden KDCs zu seiner Datei kpropd.acl erreicht.
Für das Beispiel in Abbildung 3-2 würde der Eintrag unter kprop_script für den Master-KDC etwa so aussehen:
10 3 * * * /usr/krb5/lib/kprop_script slave-1.acme.com slave-4.acme.com
Der kprop_script-Eintrag von slave-1 würde etwa so aussehen (beachten Sie, dass die Vervielfältigung auf dem Slave eine Stunde nach der Vervielfältigung durch den Master beginnt):
10 4 * * * /usr/krb5/lib/kprop_script slave-2.acme.com slave-3.acme.com
Die Datei kpropd.acl auf den Vervielfältigungs-Slaves enthält dann den folgenden Eintrag:
host/master.acme.com@ACME.COM
Die Datei kpropd.acl auf den Slaves, welche die Vervielfältigung durch slave-1 erhalten, enthält folgenden Eintrag:
host/slave-1.acme.com@ACME.COM
Die Vorsorgedatei enthält den Masterschlüssel für die Kerberos-Datenbank, der mit Erstellung einer Kerberos-Datenbank automatisch generiert wird. Wenn die stash-Datei (Vorsorgedatei) beschädigt wird, können Sie die beschädigte Datei durch den Befehl stash aus kdb5_util(1M) ersetzen. Nur in einem Fall müssen Sie eine stash-Datei (Vorsorgedatei) entfernen, und zwar dann, wenn Sie die Kerberos-Datenbank mit dem Befehl destroy aus kdb5_util löschen. Da die Vorsorgedatei nicht zusammen mit der Datenbank automatisch gelöscht wird, müssen Sie die Datei selbst entfernen, um das Aufräumen abzuschließen.
Melden Sie sich auf dem KDC als Superuser an, das die Vorsorgedatei enthält.
Entfernen Sie die Vorsorgedatei.
# rm stash_file |
stash_file |
Der Pfad zur Vorsorgedatei. Standardmäßig wird die Vorsorgedatei unter /var/krb5/.k5 realm gespeichert. |
Wenn Sie die Vorsorgedatei noch einmal erstellen müssen, verwenden Sie die Option -f des Befehls kdb5_util.