La quasi totalité du TP se fera sur la machine cfedora. Cette machine est installée sous Fedora 20. Vous n’avez besoin pour faire ce TP que d’une console (un ssh à partir de votre système) et d’un editeur (vi par exemple).

Utilisation directe LDAP et Krb

Identification (LDAP)

Les prérequis

Vérifiez que vous avez bien nss-ldap et pam-ldap installés sur la machine (désormais fourni par le même projet):

[root@localhost ~]# rpm -q nss-pam-ldapd
nss-pam-ldapd-0.8.13-4.fc20.x86_64

si ce paquet n’est pas présent installez-le:

yum install nss-pam-ldapd

Configuration de NSLCD

Maintenant nous allons configurer nslcd, le démon de cache désormais livré avec pam-ldap. Editez le /etc/nslcd.conf afin qu’il contienne les informations essentielles:

uri ldap://gate.vbox.tp/
base dc=vbox,dc=tp

(Nous sommes dans un cas simple, ouf !)

NSLCD est un démon, il faut donc le démarrer:

[root@localhost ~]# systemctl start nslcd
[root@localhost ~]# ps ax |grep nslcd
 3410 ?        Ssl    0:00 /usr/sbin/nslcd
 3425 pts/0    S+     0:00 grep --color=auto nslcd

Penser à le mettre au démarrage du système:

[root@localhost ~]# systemctl enable nslcd
ln -s '/usr/lib/systemd/system/nslcd.service' '/etc/systemd/system/multi-user.target.wants/nslcd.service'

Configuration de NSS et test

Editez le fichier /etc/nsswitch afin d’ajouter le module ldap aux sections passwd, shadow, et group:

passwd:     files ldap
shadow:     files ldap
group:      files ldap

Désormais nous pouvons tester la partie NSS:

[root@localhost ~]# getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[...]
dcoudur:x:1038:300:Drole de.Coudur:/home/dcoudur:/bin/bash
mzethofr:x:1039:300:Melanie.Zethofrais:/home/mzethofr:/bin/bash

[root@localhost ~]# getent passwd tpicador
tpicador:x:1033:300:Torero.Picador:/home/tpicador:/bin/bash

Même chose avec shadow:

[root@localhost ~]# getent shadow          
root:$6$cOXwoG15tYxzRdt5$k8n6kL87aS1GQdgU5ZFHZo8RDBzFd1Xi1VXr91UvpHtgE6F6dEkLKkwxX00ytsWwwObZvQyVIFmW1odWZEMrZ0::0:99999:7:::
bin:*:15921:0:99999:7:::
daemon:*:15921:0:99999:7:::
[...]
mtilleul:*:::::::0
dcoudur:*:::::::0
mzethofr:*:::::::0

Vous devez voir les entrées apportées par l’annuaire LDAP.

NB: Les mots de passe ne sortent pas du LDAP ! Des modules tels que pam-tcb seront donc inopérents pour valider l’authentification.

Authentification (Kerberos)

Prérequis

Vérifiez que pam-krb5 est installé:

[root@localhost ~]# rpm -q pam_krb5
pam_krb5-2.4.8-1.fc20.x86_64

S’il ne l’est pas installez-le:

yum install pam_krb5

Configuration de Kerberos

PAM kerberos s’appuie sur les librairies standard de kerberos, il faut donc configurer kerberos.

Editez le /etc/krb5.conf pour ajouter le domaine kerberos:

[realms]
  VBOX.TP = {
    kdc = kdc.vbox.tp
    admin_server = kdc.vbox.tp
  }

puis mettons notre domaine par défaut:

[libdefaults]
    default_realm = VBOX.TP

Configuration de PAM

Les distributions s’arrangent pour que la configuration soit identique pour toutes les applications en rapport direct avec le système (login, su, sudo, …).

Cette configuration générale se trouve sous Fedora dans le /etc/pam.d/system-auth, c’est donc ce fichier que nous allons modifier:

system-auth

Test d’authentification

Pour tester l’authentification il nous faut un compte valide. Nous allons en créer un dans l’annuaire kerberos directement sur le serveur:

root@kdc:~# kadmin.local -q "addprinc -pw anf2014 mguide@VBOX.TP"
Authenticating as principal root/admin@VBOX.TP with password.
WARNING: no policy specified for mguide@VBOX.TP; defaulting to no policy
add_principal: Principal or policy already exists while creating
"mguide@VBOX.TP".

Maintenant nous allons tester l’authentification.

Attention: root n’a pas besoin de mot de passe pour nombre d’outils, nous allons donc d’abord devenir simple utilisateur.

[root@localhost ~]# su mguide
bash-4.2$

Vérifions d’abord que l’authentification jette bien si un mauvais mot de passe est saisi:

bash-4.2$ su mguide
Mot de passe : 
Mot de passe :
su: Échec d'authentification

Maintenant vérifions avec un mot de passe correcte (ici anf2014):

bash-4.2$ su mguide
Mot de passe : 
bash-4.2$

A ce stade pam-kerberos a dû nous offrir un ticket:

bash-4.2$ klist
Ticket cache: KEYRING:persistent:1019:krb_ccache_Frt4brh
Default principal: mguide@VBOX.TP

Valid starting       Expires              Service principal
18/09/2014 13:45:58  18/09/2014 23:45:58  krbtgt/VBOX.TP@VBOX.TP
        renew until 25/09/2014 13:45:58

Création de la home utilisateur

Nos utilisateurs LDAP n’ont pas de répertoire d’accueil mais il est possible de le créer au login en utiliant pam-mkhomedir.

A la fin du fichier /etc/pam.d/system-auth ajouter:

session    required    pam_mkhomedir.so skel=/etc/skel/ umask=0022

Testons:

[root@localhost ~]# su - mguide
Dernière connexion : jeudi 18 septembre 2014 à 13:37:06 CEST sur pts/0
[mguide@localhost ~]$

NB: attention pam-mkhomedir doit avoir les droits root sur le système de fichiers, ce qui n’est généralement pas le cas en NFS.

Utilisation de SSSD

SSquoi ?

SSS (System Security Services) est un outil regroupant les fonctionnalités clef d’authentification:

  • support nss et pam
  • support ldap et kerberos (remplace les module pam respectifs)
  • un seul outil à configurer
  • cache local sur la machine (comprennant un cache pour authentification déconnecté)

Nous allons remplacer notre configuration ldap/kerberos par une utilisation unique de sss.

Installation de SSS

On vérifie que sss est déjà installé (le démon s’appelle sssd)

[root@localhost ~]# rpm -q sssd
sssd-1.11.6-2.fc20.x86_64

Sinon installez le:

yum install sssd

Configuration de SSSD

LA configuration du démon d’authentification est centralisée dans /etc/sssd/sssd.conf.

sssd.conf

ATTENTION: ce fichier doit appartenir à root et avoir des permissions en 0600:

[root@localhost ~]# chmod 0600 /etc/sssd/sssd.conf
[root@localhost ~]# chown root.root /etc/sssd/sssd.conf

SSSD est un démon qu’il faut lancer:

[root@localhost ~]# systemctl start sssd
[root@localhost ~]# ps ax |grep sssd
 4506 ?        Ss     0:00 /usr/sbin/sssd -D -f
 4507 ?        S      0:00 /usr/libexec/sssd/sssd_be --domain VBOX --debug-to-files
 4508 ?        S      0:00 /usr/libexec/sssd/sssd_nss --debug-to-files
 4509 ?        S      0:00 /usr/libexec/sssd/sssd_pam --debug-to-files
 4511 pts/0    S+     0:00 grep --color=auto sssd

Il faut dire au système de le lancer au démarrage de la machine:

[root@localhost ~]# systemctl enable sssd
ln -s '/usr/lib/systemd/system/sssd.service'
'/etc/systemd/system/multi-user.target.wants/sssd.service'

Configuration NSS et PAM

NSS:

Editez le /etc/nsswitch.conf pour utiliser le module sss:

passwd:     files sss
shadow:     files sss
group:      files sss

PAM:

Editez le /etc/pam.d/system-auth pour utiliser sss:

system-auth

Tests:

Faisons les mêmes tests qu’avec le couple ldap/kerberos:

[root@localhost ~]# getent passwd |grep mguide
mguide:*:1019:300:Moy.Guide:/home/mguide:/bin/bash
[root@localhost ~]# getent passwd mguide
mguide:*:1019:300:Moy.Guide:/home/mguide:/bin/bash
[root@localhost ~]# su mguide
[mguide@localhost root]$ su mguide
Mot de passe : 
su: Échec d'authentification
[mguide@localhost root]$ su mguide
Mot de passe : 
[mguide@localhost root]$ klist
Ticket cache: KEYRING:persistent:1019:krb_ccache_Frt4brh
Default principal: mguide@VBOX.TP

Valid starting       Expires              Service principal
18/09/2014 15:32:46  19/09/2014 01:32:46  krbtgt/VBOX.TP@VBOX.TP
        renew until 25/09/2014 15:32:46

Le paramètre enumerate

Le paramètre permet de limiter les ressources utilisées en n’honorant plus les requêtes getent complètes.

Editez /etc/sssd/sssd.conf et placez le paramètre enumerate à false.

Redémarrez le service sssd:

systemctl restart sssd

Observez les sorties de getent passwd et getent passwd mguide

[root@localhost ~]# getent passwd |grep mguide
[root@localhost ~]# getent passwd mguide
mguide:*:1019:300:Moy.Guide:/home/mguide:/bin/bash

Et sous Debian ?

La machine virtuelle clinux est installée sous Debian. Vous pouvez tout à fait refaire l’intégralité du TP sur cette machine et très facilement en plus.

A savoir que sous Debian vous bénificierez d’un système de configuration intégré et de fichiers de configuration qu’il n’y a plus qu’à remplir qui vous faciliteront énormément la tâche.

Les paquets à installer sont:

libpam-ldap
libnss-sss
libpam-sss

La configuration pam-ldap se trouve dans le fichier /etc/pam_ldap.conf et ce module pam n’utilise lui même pas de démon tel nslcd.

Pour configurer PAM vous aurez à modifier les fichiers suivants:

/etc/pam.d/common-account
/etc/pam.d/common-auth
/etc/pam.d/common-password
/etc/pam.d/common-session