Kerberos5 und OpenAFS unter GNU/Linux

Einleitung

Diese Anleitung beschreibt kurz die Installation und Konfiguration eines Kerberos Servers und eines OpenAFS Server unter Debian GNU/Linux. In der ganzen Anleitung werden als Beispiele die Domain example.com und das IP-Netz 10.0.0.0/24 verwendet.

Voraussetzungen

Es werden neue Pakete auf dem Debian GNU/Linux System installiert, diese müssen bereitgestellt werden. Desweiteren muss das Netzwerk zu einem Client funktionsfähig sein.

Der Kerberos und OpenAFS Server wird im Beispiel auf dem gleichen System installiert: 10.0.0.11.

DNS

Damit Kerberos und OpenAFS optimal funktionieren sind einige DNS Einträge in der Zone example.com zu machen:

kerberos                IN      A       10.0.0.11
afs                     IN      A       10.0.0.11
_kerberos               IN      TXT     "EXAMPLE.COM"
_kerberos-master._udp   IN      SRV     0 0 88 kerberos
_kerberos-adm._tcp      IN      SRV     0 0 749 kerberos
_kpasswd._udp           IN      SRV     0 0 464 Kerberos
_kerberos._udp          IN      SRV     0 0 88 kerberos
EXAMPLE.COM.            IN      AFSDB   1 afs.example.com.

In allen Dokumentationen wird immer wieder darauf hingewiesen, dass es wichtig ist auf die Gross-/Kleinschreibung zu achten: das Kerberos realm wird immer komplett gross geschrieben und die AFS cell immer komplett klein. Zur vereinfachung geht diese Anleitung davon aus, dass die realm und die cell den gleichen Namen tragen.

Kerberos Installation

Die Installation der Kerberos Software geht recht schnell, apt-get install krb5-kdc krb5-admin-server krb5-clients ; krb5_newrealm. Die Fragen die apt-get muss man beantworten. Die Konfiguration von Kerberos findet vor allem in /etc/krb5.conf statt. Hier ist wichtig, dass default_realm und EXAMPLE.COM in der Sektion <realms> richtig konfiguriert ist.

Als nächstes wird ein principal (also ein Account) für einen Benutzer angelegt, dieser wird administrative Rechte erhalten und später den OpenAFS server verwalten.

kadmin.local -q "addprinc user@EXAMPLE.COM"
kadmin.local -q "addprinc user/admin@EXAMPLE.COM"

user/admin@EXAMPLE.COM muss jetzt in /etc/krb5kdc/kadm5.acl der Eintrag user/admin@EXAMPLE.COM * sorgt dafür das dieser principal vollen Zugriff auf die Kerberos Datenbank erhält.

Mittels kinit user/admin und dem richtigen Passwort sollte man die entsprechenden Ticket vom Kerberos Server bekommen (verifizierbar mittels klist).

OpenAFS Installation

apt-get install openafs-dbserver openafs-krb5 openafs-client installiert die OpenAFS Basis, hierbei ist darauf zu achten, dass openafs-client nicht nacht der Installation des Paketes oder nach dem booten gestartet wird. Die Antworten auf die Fragen von apt-get sollten klar sein. Zur Verifikation der Installation sollte in /etc/openafs/CellServDB der Zellenname mit der IP-Adress 10.0.0.11 enthalten sein. /etc/openafs/ThisCall sollte den Zellennamen enthalten.

OpenAFS Kernel Modules

Die Kernel Module für OpenAFS müssen wahrscheinlich auf dem Server kompiliert werden, am schnellsten geht es mit:

apt-get install module-assistant
module-assistant prepare openafs-modules
module-assistant auto-build openafs-modules

Kerberos: AFS principal anlegen

Für die Administration von OpenAFS wird ein separater principal angelegt. Hierzu wird kadmin.local genutzt und folgende Befehle

addprinc -randkey -e des-cbc-crc:v4 afs
ktadd -k /tmp/afs.keytab -e des-cbc-crc:v4 afs

Dieser principal wird mit asetkey add <kvno> /tmp/afs.keytab afs in die OpenAFS Konfiguration übernommen und im Keyfile abgelegt. kvno ist die kvno die von kadmin.local ausgegeben wurde.

Anlegen der root.cell

Als nächstes muss eine root.cell angelegt werden, hierzu nutzt OpenAFS initial die Partition /vicepa, dies muss eine Partition sein. Der Schnellstart wäre eine mittels loop gemountete Datei:

dd if=/dev/zero of=/var/lib/openafs/vicepa bs=1024k count=64
mke2fs /var/lib/openafs/vicepa
mkdir /vicepa
mount -oloop /var/lib/openafs/vicepa /vicepa

Den Eintrag in /etc/fstab zum automatischen mounten während des booten sollte man nicht vergessen!

Das Skript afs-newcell führt die entsprechende Konfiguration zum anlegen einer neuen Zell durch. kinit user/admin; aklog holt vom Kerberos mit adminitrativen Rechten ausgestattete Tickets und überträgt sie in ein entsprechendes OpenAFS Token. Dies muss mittels tokens sichtbar sein. afs-rootcell legt die root.cell auf dem Server an. Idealerweise bootet man den server jetzt neu – Muss aber nicht.

Einen Benutzer anlegen

Nachdem der Server läuft wird in diesem Abschnitt beschrieben wie ein neuer Benutzer und ein Datenbereich für diesen angelegt.

Benutzer anlegen

Mit kadmin.local fügt man einen neuen principal in die Kerberos Datenbank an: add benutzer, danach wird dieser Benutzer auch im OpenAFS angelegt:

pts createuser benutzer -id 501

Datenbereich

Auf dem OpenAFS Server wird jetzt ein volume für den Benutzer angelegt, ihm werden alle Rechte auf diesen Datenbereich zugesichert und die quota auf 0 (unbegrenzt) gesetzt:

vos create afs /vicepa user.benutzer -maxquota 0
cd /afs/.example.com/user 
fs mkm benutzer user.benutzer 
chown benutzer benutzer 
fs sa benutzer benutzer all  
fs sa benutzer system:authuser l 
vos release user 
fs checkvolumes 

MacOSX Client

Nach der Installation des OpenAFS for MacOS 10 Client ist für diesen die CellServDB und ThisCell in /var/db/openafs/etc anzupassen. In der CellServDB muss mindestens

example.com  # example
10.0.0.11      # afs.example.com

enthalten sein. Nach den # folgt kein Kommentar, sondern genutzte Daten!

zusätzliche Authentisierung

Zusätzlich zur Authentisierung unter MacOS muss man auf dem Client mittels des Terminals auch ein Kerberos Ticket und ein OpenAFS Token vom Server erfragen:

kinit benutzer
aklog
tokens

tokens listet dabei nur die AFS tokens auf.

Jetzt sollte man vollen schreib/lese-Zugriff auf /afs/example.com/daten/benutzer auf dem MacOS client haben.

Quellen

[4]: http://web.mit.edu/macdev/KfM/Common/Documentation/osx-kerberos-extras.html