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:
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.
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:
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