msktutil Teil 1 – Client-Keytabs verwalten

Abschnitt 15.4.3 im Buch beschreibt, wie man über die grafischen Verwaltungswerkzeuge im AD ein Benutzerobjekt anlegen kann und Abschnitt 15.5.2 zeigt dann, wie das alternativ mit LDAP-Mitteln von Linux aus geht.

Häufig benötigt man solche Benutzerobjekte für technische Accounts, beispielsweise um unter Linux nicht interaktiven Programmen (wie Daemons oder Batchprozessen) Kerberos-Identitäten zuzuordnen. Die Tickets stellt man solchen Programmen dann über Tools wie kstart zur Verfügung, die dazu allerdings eine Keytab mit den Langzeitschlüsseln des Benutzerobjekts benötigen (siehe Abschnitt 10.6.2). Alternativ kann man anstelle von kstart auch kinit mit der Option -k einsetzen, muss dann allerdings mit geringerem Funktionsumfang auskommen. Da die Keytab hier nicht für einen Dienst eingesetzt wird spricht man von einer Client-Keytab.

Auf den Seiten 316 und 317 findet man eine Beschreibung, wie sich Keytabs grundsätzlich mit dem MIT-eigenen Werkzeug ktutil erzeugen lässt. Selbstverständlich geht das auch mit dem Microsoft-Tool ktpass.exe (siehe Abschnitt 15.4.5). Eine wesentlich komfortablere Alternative stellt msktutil (https://code.google.com/p/msktutil) dar, um das es im vorliegenden Abschnitt gehen soll.

Im Folgenden werden zwei Szenarien betrachtet. Ziel ist jeweils, ein Benutzerobjekt mit dem Namen techuser01 (Kerberos Principal: techuser01@ADS.EXAMPLE.COM) anzulegen und dessen Keys in der Datei /etc/krb5.keytab.techuser01 zu hinterlegen.

Halbautomatisch: Keytab für existierendes Benutzerobjekt

Mit bekanntem Passwort, ohne administrative Berechtigungen im AD

Gehen Sie wie in Abschnitt 15.4.3 beschrieben vor, um den Account für techuser01 anzulegen. Dabei setzen Sie ein initiales Passwort (im Beispiel ist das Start123), das aber bei der ersten Anmeldung geändert werden muss.

Unter Linux führt folgendes Kommando die Passwortänderung durch und erzeugt dabei die Keytab:

# msktutil --update                            \
           --use-service-account               \
           --account-name techuser01           \
           --old-account-password Start123     \
           --keytab /etc/krb5.keytab.techuser01

Man benötigen dazu keine weiteren Berechtigungen im AD, da dort lediglich das Passwort geändert wird. Die Kenntnis des alten Passwortes genügt. Ein wichtiger Punkt: an die Passwortrichtlinien des AD muss man sich hier halten. Das betrifft nicht die Komplexität, denn msktutil erzeugt zufällige Passwörter, die allen Komplexitätsanforderungen standhalten sollten. Allerdings ist die Richtlinie Minimales Kennwortalter (siehe Abbildung 15.16 auf Seite 309) hier zu beachten. Verwendet man einen existierendes Benutzerobjekt mit einem bekanntem Passwort, das nicht geändert werden muss, das aber vor kurzem geändert wurde, dann muss man gegebenenfalls warten, bis dieses wieder geändert werden darf. Das könnte eine Weile dauern, der Default ist ein Tag.

Mit administrativen Berechtigungen im AD

Möchte man sich nicht mit diesen Richtlinien herumschlagen, so kann man das Passwort einfach neu setzen anstatt es zu ändern. Dazu benötigt man aber einen administrativen AD-Account (im folgenden Beispiel Administrator), für den man sich vorab mit kinit Tickets besorgen muss:

# kinit Administrator
# msktutil --update                            \
           --use-service-account               \
           --account-name techuser01           \
           --user-creds-only                   \
           --keytab /etc/krb5.keytab.techuser01
# kdestroy

Vollautomatisch: Benutzerobjekt und Keytab in einem Rutsch

Das letzte Beispiel würde den Account techuser01 auch anlegen, falls dieser noch nicht existiert. Das neue Benutzerobjekt würde dabei an der Default-Stelle im AD landen (üblicherweise: cn=Users). Ein etwas allgemeingültigeres Beispiel zeigt die folgende Kommandozeile, bei der die Lage des neuen Benutzerobjekts auch gleich mit --base angegeben wird:

# kinit Administrator
# msktutil --create                              \
           --use-service-account                 \
           --account-name techuser01             \
           --base cn=Service Accounts,ou=Unix    \
           --user-creds-only                     \
           --keytab /etc/krb5.keytab.techuser01
# kdestroy

Die Keytab testen

Die erzeugte Keytab kann nun einfach wie folgt getestet werden:

# kinit -k -t /etc/krb5.keytab.techuser01 techuser01@ADS.EXAMPLE.COM