Mécanisme d authentifications : Kerberos Responsables du TP : O. Allovon, D. Fossier, F. Gratta, B. Sauvajon Base : Système linux et Windows 2000 en salle TP B120 Accès Internet Accès administrateur Stations étudiants. Travail par groupe de 3 Installation de Kerberos, mise en place d un domaine 1 - Présentation de Kerberos Vocabulaire et principales commandes Dans un environnement fournissant des services réseaux on utilise des clients pour accéder à ces services. Par exemple, une personne connectée sur une station de travail souhaitant se connecter par rlogin sur un serveur UNIX utilisera le client rlogin pour se connecter au démon rlogind sur le serveur. Sous Kerberos, le serveur klogind vous autorisera à vous connecter à une machine distante si vous pouvez fournir à klogind un ticket prouvant votre identité. En plus de ce ticket, vous devez être en possession de la clef de session correspondant au ticket. La combinaison du ticket et de sa clé de session est appelée credential. Typiquement, une application cliente obtient automatiquement un credential (référence) identifiant la personne utilisant cette application. Les références sont obtenus auprès d'un serveur Kerberos sur le réseau. Le serveur Kerberos maintient une base d'informations concernant les utilisateurs, les serveurs (ou services réseaux) et les mots de passe (liés aux utilisateurs et serveurs). Kerberos ne vous fournira de référence que si vous correspondez à une entrée dans la base du serveur Kerberos. Cette entrée correspond en fait à votre principal (une chaîne d'identification, en général, votre login) et à votre mot de passe. Tout utilisateur Kerberos doit avoir son entrée dans la base. Chaque domaine d'administration doit avoir sa propre base d'administration contenant les utilisateurs et services de ce domaine. Ce domaine est appelé Realm (= royaume) Kerberos. Chaque Realm doit être géré par au moins un serveur Kerberos. Il peut également contenir un ou plusieurs serveurs Kerberos esclaves contenant une copie de la base principale accessible en lecture seule, ces copies étant propagées périodiquement à partir du serveur. La commande 'kinit' vous demande un mot de passe. Si vous entrez le bon mot de passe, vous obtenez un Ticket-Granting Ticket ainsi qu'une clé de session pour ce ticket vous autorisant à utiliser le TGT. La combinaison des deux correspond à un credential (référence). Comme vous le verrez plus tard les programmes clients utilisent la référence associée à votre TGT pour obtenir des références spécifiques à l'application. Vos références sont stockés dans un cache, le plus souvent un simple fichier dans /tmp. TP CS536 : Mécanismes d authentifications : Kerberos 1
La base maître contient également des entrées pour chaque service utilisant l'authentification Kerberos. Supposons que nous avons une machine nommée «laughter.mit.edu» nécessitant une authentification kerberos pour toute personne souhaitant effectuer un rlogin dessus. Le Realm Kerberos de l'hote est «ATHENA.MIT.EDU». Ce service doit être enregistré dans la base Kerberos, en utilisant le nom du service, ce qui donne, dans ce cas, le principal : host/laughter.mit.edu@athena.mit.edu Le «/» sépare le primary (ici le service host) de l'instance (ici laughter.mit.edu, soit le nom d'hôte) et le «@» sépare le Realm du reste du principal. Nous pouvons ainsi utiliser différentes machines fournissant le même service et fournir plusieurs services par machine. A chaque ticket correspond un mot de passe connu uniquement du serveur Kerberos et du service. Sur le serveur Kerberos le mot de passe est stocké dans sa base. Sur l'hôte hébergeant le service, le mot de passe est stocké dans une table de clés nommée keytab. Par exemple les clés utilisées par les services fonctionnant en tant que root sont stockées dans /etc/krb5.keytab. 2 Organisation de la séance Nous allons nous répartir en deux groupes d étudiants qui travailleront en parallèle (1 groupe de 4 personnes et un groupe de 5). Chaque groupe devra mettre en place son propre domaine parmi les suivants : Domaine n 1 : «ESISAR1» Domaine n 2 : «ESISAR2» Chacun de ces deux domaines sera composé : D un serveur Kerberos v5 sur linux. D un client Kerberos v5 sur linux. D un client Kerberos v5 sur windows 2000. Chacune des machine sera désignée par <nom hote>.<nom domaine>. Comme nous n allons pas installer de serveur de nom pour chacun de ces domaines, vous devrez modifier les fichiers hosts de chaque machine afin de faire la correspondance adresse ip/nom de machine. Sous windows : C:\WINNT\System32\drivers\etc\hosts Sous Linux : /etc/hosts Dans ce TP, vous mettrez en place dans un premier temps chacun de ces deux domaines. Ensuite vous mettrez en place des applications kerbérisées du type : Telnet, ssh. Ensuite vous utiliserez des modules PAM pour permettre de personnaliser l authentification de KDM (KDE). Vous configurerez aussi Windows pour permettre de centraliser l authentification sur le serveur Kerberos. TP CS536 : Mécanismes d authentifications : Kerberos 2
3 Installation du serveur Kerberos et création du domaine Installation des packages # apt-get install krb5-kdc krb5-admin-server krb5-doc krb5- user libkrb5-dev krb5-rsh-server Pendant l'installation, des scripts de configuration interactifs proposent de paramétrer les options pour le KDC, le serveur d'administration et les clients. La configuration du serveur est indiquée dans les fichiers suivants : /etc/krb5.conf : contient les informations que toutes les machines intégrées au REALM Kerberos doivent connaître. /etc/krb5kdc/kdc.conf contient toutes les options indispensables au fonctionnement du KDC (où se trouve sa base, les clés, durée de vie de tickets et ports tcp/udp utilisés). Création du REALM «ESISAR» : # kdb5_util create -r ESISAR -s Il vous faudra rentrer le mot de passe de la base de donnée, à ne pas l oublier. Il faut ensuite rentrer la clef principale de la Base KDC. hote:/var/lib/krb5kdc# ls principal principal.kadm5 principal.kadm5.lock principal.ok Création des comptes de base Il faut se connecter à la base pour ajouter un compte normal et un compte d'administration : Vous créerez les comptes normaux sur les machines UNIX et sur le serveur Kerberos, de la forme suivante : «prenom» et mot de passe «prenom» (exemple : quicky pour quicky Thevenon). # kadmin.local Authenticating as principal root/admin@esisar with password. Tout d'abord, on demande la liste des comptes (principaux) : kadmin.local: listprincs K/M@ESISAR kadmin/admin@esisar kadmin/changepw@esisar kadmin/history@esisar krbtgt/esisar@esisar TP CS536 : Mécanismes d authentifications : Kerberos 3
Puis on ajoute un compte d'administration : kadmin: addprinc admin/admin WARNING: no policy specified for admin/admin@esisar; defaulting to no policy Enter password for principal "admin/admin@esisar": Re-enter password for principal "admin/admin@esisar": Principal "admin/admin@esisar" created. Création des ACL pour kadmin Il faut maintenant autoriser les utilisateurs et administrateurs à interroger ou modifier des comptes dans la base. Pour cela, il faut créer un fichier acl correspondant à ce qui est indiqué dans /etc/krb5kdc/kdc.conf. # cat /etc/krb5kdc/kadm5.acl */admin * admin * mdp li * ci Création du keytab pour kadmin Nous devons ajouter les principaux suivants dans le keytab du serveur. Ceci est nécessaire pour lancer kadmin : kadmin.local: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw Relancer le serveur # /etc/init.d/krb5-kdc start # /etc/init.d/krb5-admin-server start Starting Kerberos Administration Servers: kadmind Test du fonctionnement du serveur Pour vérifier le bon fonctionnement du serveur, tapez les commandes : # kinit <nom utilisateur> # klist Vous devrez alors avoir la liste des clés (credential) que vous possédez TP CS536 : Mécanismes d authentifications : Kerberos 4
4 Installation du client Linux Installation du package # apt-get install krb5-user Pendant l'installation, des scripts de configuration interactifs proposent de paramétrer les options pour le KDC et le serveur d'administration. Les paramètres de la machine cliente se situent dans /etc/krb5.conf. Test du fonctionnement coté client Vous pouvez maintenant récupérer des clés à partir du serveur kerberos grâce à la commande kinit. 5 Installation d applications kerberisées Installation du serveur Telnet Maintenant que le serveur Kerberos est correctement installé, vous allez installer et configurer un serveur Telnet kerbérisé. Dans un premier temps, vous installerez le serveur telnet sur la même machine que le serveur kerberos. Puis une fois que vous avez un fonctionnement correct, vous installerez le serveur telnet sur la deuxième machine linux du royaume. Lancez donc la commande : # apt-get install krb5-telnetd Configuration du serveur Kerberos Vous devez configurez correctement le serveur kerberos pour que le serveur telnet fonctionne convenablement. IL faut ajouter un principal correspondant à la machine qui héberge le serveur telnet. Etant donné que le mot de passe de ce principal ne va pas être réutilisé, vous pouvez générer le mot de passe aléatoirement. Installation du client Telnet sous linux Lancez la commande pour installer le client telnet linux : # apt-get install krb5-clients Pour tester si l application fonctionne correctement, il suffit de taper la commande suivante : # telnet.krb5 l «nom utilisateur» -a «nom machine» Afin de voir le fonctionnement de la communication avec le serveur, activez le mode «debug» sur ce client pour voir les échanges. TP CS536 : Mécanismes d authentifications : Kerberos 5
Installation du client Telnet sous Windows Vous téléchargerez l application Ktelnet sur le site http://www.stacken.kth.se/~thn/ktelnet/ Vous configurerez le client afin que celui-ci puisse se connecter sur le serveur Kerberos. Vous effectuerez le même type de manipulation avec SSH sur le serveur et la machine cliente Linux. 6 Kerbérisation de l authentification PAM Dans cette partie, vous allez configurer le client Linux afin qu il se connecte via authentification Kerberos, et non pas par simple login/password local. Pour cela, il va falloir modifier les fichiers de configuration de PAM : /etc/pam.d Et utiliser la bibliothèque Kerberos pam_krb5.so. Vous allez utiliser un fichier common-auth que vous inclurez dans les fichiers PAM nécessaires via un «@include common-auth» Dans un premier temps ; vous kerberiserez le login non-graphique, puis le login graphique (le fichier s appelle KDE). N hésitez pas à regarder l aide de «pam.d». Le cas échéant, demandez à vos responsables de TP. Pour aller plus loin 7 - Kerberisation de l authentification Windows Pour interroger le serveur kerberos lors de l authentification windows, vous utiliserez l outil Ksetup téléchargeable à l adresse : http://www.petri.co.il/download_free_restkit_tools.htm 8 - Communication inter-royaume. Essayer de faire communiquer les 2 royaumes entre eux. TP CS536 : Mécanismes d authentifications : Kerberos 6