Vous êtes sur la page 1sur 6

1

TP Mise en oeuvre Kerberos

Nous allons mettre en œuvre dans un environnement virtuel:


• un serveur kerberos
• un client
• un serveur ssh utilisant kerberos.
1. Préparation des machines
● Créez 3 machines virtuelles Ubuntu. Le plus simple est de cloner la première.
Chaque machine doit avoir 2 interfaces. L'une en NAT, l'autre en « Réseau interne ».
● Démarrer les machines. Assignez les adresses 10.0.2.1, 10.0.2.2 et 10.0.2.3 aux 3
machines, respectivement, et assurez-vous que les machines puissent recevoir des
échos “ping” entre elles.
● Changez les noms de machines (kerberos sur 10.0.2.1, serveur sur 10.0.2.2 et
client sur 10.0.2.3) . L'une doit s'appeler client, l'autre serveur et la dernière
kerberos. Le nom de domaine sera formation.home. Vous devez modifier le fichier
/etc/hostname et le fichier /etc/hosts.
Le fichier /etc/hosts doit être comme ci-dessous (à adapter à chaque cas)

127.0.0.1 localhost
@ip_privee kerberos.formation.home kerberos

● Redémarrez et vérifiez que les commandes hostname, hostname -d et hostname -f


vous retournent les bonnes configurations.

● Arrêtez le service network-manager


service networkmanager stop

● Pour Kerberos, il faut que les horloges des machines soient synchronisées.
Pour ce faire, utilisez la commande ntpdate vers la machine maat :
ntpdate -s maat.unice.fr

Il nous faut aussi des résolutions DNS parfaites pour les 3 machines.
2

● Installez un serveur dns (apt-get install bind9) sur kerberos et configurez le


domaine formation.home : Ajoutez ce serveur DNS à ceux connus des 3
machines en ajoutant dans le fichier /etc/resolv.conf
nameserver ip_interne_kerberos
formation.home

2. Installation des paquets Kerberos et configuration


● Sur la machine kerberos, installez heimdal-servers, heimdal-clients, heimdal-kdc et
heimdal-kcm
● Sur les 2 autres machines, installez heimdal-clients seulement.
● Lors de l'installation d'un paquet, un script peut s'exécuter. C'est le cas ici. Il faut
répondre FORMATION.HOME et kerberos.formation.home

* Ré-éditez ensuite le fichier /etc/krb5.conf sur les 3 machines qui doit


ressembler à :
[libdefaults]
default_realm = FORMATION.HOME
[realms]
FORMATION.HOME = {
kdc = kerberos.formation.home
admin_server = kerberos.formation.home
kpasswd_server = kerberos.formation.home
}
[domain_realm]
.formation.home = FORMATION.HOME

● On ajoute à la fin une section pour les logs:

Il faut ensuite créer le répertoire kerberos dans /var/log.


3. Initialisation de la base de données, création premier principal

Il faut d'abord, sur kerberos (en root) créer une clé de stockage pour chiffrer la base
3

kstash -–random-key
serveur ⇒ kstash: writing key to `/var/lib/heimdal-kdc/m-key'
kerberos ⇒ kstash: writing key to `/var/lib/heimdal-kdc/m-key'

kstash: writing master key file: No such file or directory


client : ⇒ kstash: writing key to `/var/lib/heimdal-kdc/m-key'

On va ensuite créer la base :


kadmin -l
kadmin> init FORMATION.HOME
⇒ serveur:
Realm max ticket life [unlimited]:
Realm max renewable ticket life [unlimited]:
kadmin: create_random_entry(krbtgt/FORMATION.HOME@FORMATION.HOME):
randkey failed: Principal or policy already exists
kadmin: create_random_entry(kadmin/changepw@FORMATION.HOME):
randkey failed: Principal or policy already exists
kadmin: create_random_entry(kadmin/admin@FORMATION.HOME): randkey
failed: Principal or policy already exists
kadmin: create_random_entry(changepw/kerberos@FORMATION.HOME):
randkey failed: Principal or policy already exists
kadmin: create_random_entry(kadmin/hprop@FORMATION.HOME): randkey
failed: Principal or policy already exists
kadmin: create_random_entry(WELLKNOWN/ANONYMOUS@FORMATION.HOME):
randkey failed: Principal or policy already exists
kadmin: kadm5_create_principal: Principal or policy already exists
⇒ kerberos

● Créer un utilisateur :
kadmin> add nom_user
● On vérifie avec la commande:
get nom_user
⇒ Principal: monia@FORMATION.HOME
Principal expires: never
Password expires: never
4

Last password change: 2021-09-24 16:42:25 UTC


Max ticket life: 1 day
Max renewable life: 1 week
Kvno: 1
Mkvno: unknown
Last successful login: never
Last failed login: never
Failed login count: 0
Last modified: 2021-09-24 16:42:25 UTC
Modifier: kadmin/admin@FORMATION.HOME
Attributes:
Keytypes: aes256-cts-hmac-sha1-96(pw-salt)[1], des3-cbc-sha1(pw-salt)[1],
arcfour-hmac-md5(pw-salt)[1]
PK-INIT ACL:
Aliases:

client ⇒ kadmin> init FORMATION.HOME


Realm max ticket life [unlimited]:
Realm max renewable ticket life [unlimited]:
kadmin: create_random_entry(krbtgt/FORMATION.HOME@FORMATION.HOME): randkey
failed: Principal or policy already exists
kadmin: create_random_entry(kadmin/changepw@FORMATION.HOME): randkey failed:
Principal or policy already exists
kadmin: create_random_entry(kadmin/admin@FORMATION.HOME): randkey failed:
Principal or policy already exists
kadmin: create_random_entry(changepw/kerberos@FORMATION.HOME): randkey failed:
Principal or policy already exists
kadmin: create_random_entry(kadmin/hprop@FORMATION.HOME): randkey failed:
Principal or policy already exists
kadmin: create_random_entry(WELLKNOWN/ANONYMOUS@FORMATION.HOME):
randkey failed: Principal or policy already exists
kadmin: kadm5_create_principal: Principal or policy already exists

La partie création de compte est découplée de la partie récupération de ticket.

En cas de besoin, démarrer le service


5

$ /etc/init.d/heimdal-kdc start

4. Récupération d'un ticket sur une autre machine

● Sur client, on crée le même utilisateur (adduser nom_user) et on se logue


avec.: kadmin -p nom_user
● On récupère un ticket : $kinit nom_user
→ unable to reach any kdc...
● On vérifie qu'il est présent avec klist. (sudo klist)
→ no ticket … krb5cc

5. Création principal pour le service ssh et installation de la clef

● Modifier l'ACL de kerberos : var/lib/heimdal/kadmin.acl


nom_user@FORMATION.HOME all *@FORMATION.HOME
nom_user@FORMATION.HOME all */*@FORMATION.HOME
● Redémarrer ensuite le démon heimdal-kdc pour qu'il prenne la modification en
compte.
● Sur le serveur, on va maintenant créer le user pour accéder à un service, puis
l'exporter :
kadmin -p nom_user
add --random-key --use-defaults host/serveur.formation.home

● On liste ensuite les clés de service présentes :


ktutil list
6. Configuration serveur et client ssh

● Installer le serveur ssh (paquet openssh-server). On configure le serveur de


manière à ce qu'il utilise kerberos en éditant le fichier /etc/ssh/sshd_config. On
met
GSSAPIAuthentication à yes

● On créée le user sur le serveur


● On teste un accès ssh : ssh -K serveur
→ On doit avoir 2 tickets sur le client, celui de base et celui pour le service ssh sur la
6

machine serveur : klist

Vous aimerez peut-être aussi