SkayaWiki

KerberosDebian

JeromePetazzoni :: DerniersChangements :: DerniersCommentaires? :: ParametresUtilisateur :: http://www.enix.org/ :: Vous êtes 216.73.216.79
Ceci est une version archivée de KerberosDebian à 2006-07-07 18:15:44.
Sur le serveur : apt-get install krb5-admin-server krb5-kdc krb5-user
Sur les clients : apt-get install krb5-user
Pour le "realm", il est recommandé de mettre son nom de domaine en majuscule, par exemple ENIX.FR, ou TOTO.COM (sans point final ni rien)
Ensuite, lancer sur le serveur : kdb5_util create -r ENIX.FR -s pour créer les fichiers de base.
Puis, on peut lancer (toujours sur le serveur) /etc/init.d/krb5-kdc start et /etc/init.d/krb5-admin-server start.
À partir de là, pour manipuler la base Kerberos, il faut utiliser kadmin. Au début, comme on n'a même pas le droit d'utiliser kadmin, il faut lancer kadmin.local qui fonctionne exactement pareil, sauf qu'il est destiné à être lancé en root, depuis le serveur Kerberos, et qu'il "bypass" la sécurité.

La plupart des programmes (kadmin, ktutil, ...) peuvent être lancés de manière intéractive, avec un joli "shell" qui fait de la complétion et tout ; ou bien en ligne de commande, en mettant la commande derrière l'option -q ; par exemple pour créer un utilisateur on peut faire kadmin -q "addprinc -pw lalala joe@TOTO.COM".

Chaque entité qui va utiliser Kerberos, qu'il s'agisse d'un client ou d'un serveur (ex: un serveur SSH qui va utiliser un Kerberos distant pour authentifier les clients) va se voir associer un principal. En général, les principals des utilisateurs sont de la forme login@TOTO.COM ; pour les serveurs c'est de la forme host/machine.domaine.com@TOTO.COM. Parfois on aura servicename/machine.domaine.com@TOTO.COM. La construction des principals est complètement arbitraire ; on peut très bien mettre zob/lala/pouet@TOTO.COM même si ça ne servira à rien en pratique.

Pour ajouter un utilisateur : kadmin.local -q "addprinc -pw pouetzob joe@TOTO.COM
Pour ajouter une machine sur laquelle on va faire tourner des services Kerbérisés : kadmin.local -q "addprinc -randkey host/bighost.toto.lan@TOTO.COM"
Le randkey équivaut à "génère moi un pass au hasard" ; c'est recommandé pour les hosts.
Si, comme ici, la machine est dans le domaine toto.lan au lieu de toto.com, il faut mettre dans /etc/krb5.conf, dans la section domain_realms, ajouter une ligne .toto.lan=TOTO.COM qui veut dire : "les machines *.toto.lan sont rattachées au realm TOTO.COM", sinon par défaut il utilise le DNS.
À propos de DNS, il est impératif que le nom (bighost.toto.lan dans l'exemple) soit celui qu'on obtient en tapant hostname -f sur la machine, sinon ça ne marchera pas :-)
Une fois qu'on a généré le principal, il faut générer le keytab, qui contient la clé de la machine :
kadmin.local -q "ktadd -k /tmp/bighost.keytab host/bighost.toto.lan@TOTO.COM" puis copier le fichier bighost.keytab sur la machine bighost, dans /etc/krb5.keytab (lisible uniquement par le root, non backupé sur média non-safe, etc.)

Pour tester : sur un client, lancer kinit (éventuellement kinit joe@TOTO.COM si on veut se loger avec un principal différent du login courant, et/ou sur un autre domaine que le domaine par défaut). Ensuite avec klist on peut voir les "tickets" obtenus.

Ensuite pour pouvoir se loger avec SSH, il faut soit le package ssh-krb5, soit les nouveaux packages openssh-server et openssh-client. Côté serveur, il faut ajouter dans le /etc/ssh/sshd_config une ligne GSSAPIAuthentication yes et le relancer. Côté client, tester avec ssh -o GSSAPIAuthentication=yes user@host, normalement ça doit marcher :) puis modifier si nécessaire le ssh_config ou le ~/.ssh/config pour activer GSSAPI au niveau global.

NFSV4 :
- installer libgssapi2 si nécessaire ; sur le serveur (et peut-être aussi le client?) vérifier que dans /etc/gssapi_mech.conf la lib référencée existe bien (j'ai dû modifier /usr/lib/libgssapi_krb5.so en /usr/lib/libgssapi_krb5.so.2 par exemple)
- modifier /etc/default/nfs-common et /etc/default/nfs-kernel-server (sur le serveur) pour activer idmapd, gssd, et svcgssd. Relancer les services correspondants et vérifier qu'ils tournent tous
- sur chaque machine (client ou serveur), créer un principal nfs/nom.machine.com@REALM (et le mettre dans le keytab comme décrit plus haut pour SSH)
- vérifier que dans le /etc/services on a bien une entrée nfs 2049/tcp (l'ajouter si besoin)
- côté serveur, dans le /etc/exports, mettre / gss/krb5(rw,no_root_squash,insecure,async,fsid=0) (on doit pouvoir mettre un mode moins flippant si nécessaire!)
- côté client,
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]