Configuration d’un serveur NFS avec une authentification basée sur Kerberos pour les clients Linux - Partie 7
Dans le dernier article de cette série, nous avons vu comment configurer un partage Samba sur un réseau qui peut être composé de plusieurs types de systèmes d’exploitation. Maintenant, si vous devez configurer le partage de fichiers pour un groupe de clients de type Unix, vous penserez automatiquement au système de fichiers réseau, ou NFS en abrégé.
Dans cet article, nous allons vous guider tout au long du processus d’utilisation de l’authentification basée sur Kerberos pour les partages NFS. Il est supposé que vous avez déjà configuré un serveur NFS et un client. Si ce n’est pas le cas, reportez-vous à la section installer et configurer le serveur NFS - qui répertoriera les packages nécessaires à installer et expliquera comment effectuer les configurations initiales sur le serveur avant de continuer.
En outre, vous voudrez configurer à la fois SELinux et firewalld pour permettre le partage de fichiers via NFS.
L’exemple suivant suppose que votre partage NFS se trouve dans /nfs dans box2 :
# semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
restorecon -R /nfs
setsebool -P nfs_export_all_rw on
setsebool -P nfs_export_all_ro on
(où l’indicateur -P indique la persistance entre les redémarrages).
Enfin, n’oubliez pas de :
Création d’un groupe NFS et configuration du répertoire de partage NFS
1. Créez un groupe appelé nfs et ajoutez-y l’utilisateur nfsnobody puis changez les permissions du répertoire /nfs en 0770 et son propriétaire de groupe en nfs. Ainsi, nfsnobody (qui est mappé aux requêtes du client) aura des droits d’écriture sur le partage) et vous n’aurez pas besoin d’utiliser no_root_squash dans le fichier /etc/exports.
# groupadd nfs
usermod -a -G nfs nfsnobody
chmod 0770 /nfs
chgrp nfs /nfs
2. Modifiez le fichier d’exportation (/etc/exports) comme suit pour n’autoriser l’accès qu’à partir de box1 en utilisant la sécurité Kerberos (sec=krb5).
Remarque : que la valeur de anongid a été définie sur le GID du groupe nfs que nous avons créé précédemment :
/nfs box1(rw,sec=krb5,anongid=1004)
3. Réexportez (-r) tous les (-a) partages NFS. L’ajout de verbosité à la sortie (-v) est une bonne idée, car cela fournira des informations utiles pour dépanner le serveur en cas de problème :
# exportfs -arv
4. Redémarrez et activez le serveur NFS et les services associés. Notez que vous n’avez pas besoin d’activer nfs-lock et nfs-idmapd car ils seront automatiquement démarrés par les autres services au démarrage :
# systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
systemctl enable rpcbind nfs-server
Environnement de test et autres conditions préalables
Dans ce guide, nous utiliserons l’environnement de test suivant :
- Ordinateur client [boîte1 : 192.168.0.18]
- Serveur NFS/Kerberos [box2 : 192.168.0.20] (également connu sous le nom de Key Distribution Center, ou KDC en abrégé).
Remarque : ce service Kerberos est crucial pour le schéma d’authentification.
Comme vous pouvez le voir, le serveur NFS et le KDC sont hébergés sur la même machine pour plus de simplicité, bien que vous puissiez les configurer sur des machines distinctes si vous en avez plus disponibles. Les deux machines sont membres du domaine mydomain.com.
Enfin, Kerberos nécessite au moins un schéma de base de résolution de noms et la présence du service Network Time Protocol à la fois dans le client et le serveur, car la sécurité de l’authentification Kerberos repose en partie sur l’horodatage des tickets.
Pour configurer la résolution de noms, nous utiliserons le fichier /etc/hosts à la fois dans le client et le serveur :
192.168.0.18 box1.mydomain.com box1
192.168.0.20 box2.mydomain.com box2
Dans RHEL 7, chrony est le logiciel par défaut utilisé pour la synchronisation NTP :
# yum install chrony
systemctl start chronyd
systemctl enable chronyd
Pour vous assurer que chrony synchronise réellement l’heure de votre système avec les serveurs de temps, vous pouvez lancer la commande suivante deux ou trois fois et vous assurer que le décalage se rapproche de zéro :
# chronyc tracking
Installation et configuration de Kerberos
Pour configurer le KDC, installez les packages suivants sur le serveur et le client (omettez le package serveur dans le client) :
# yum update && yum install krb5-server krb5-workstation pam_krb5
Une fois installé, éditez les fichiers de configuration (/etc/krb5.conf et /var/kerberos/krb5kdc/kadm5.acl) et remplacez toutes les instances de example.com (minuscules et majuscules) par des mydomain.com comme suit.
Créez maintenant la base de données Kerberos (veuillez noter que cela peut prendre un certain temps car cela nécessite un certain niveau d’entropie dans votre système. Pour accélérer les choses, j’ai ouvert un autre terminal et j’ai lancé ping -f localhost pendant 30 à 45 secondes :
# kdb5_util create -s
Ensuite, activez Kerberos via le pare-feu et démarrez/activez les services associés.
Important : nfs-secure doit également être démarré et activé sur le client :
# firewall-cmd --permanent --add-service=kerberos
systemctl start krb5kdc kadmin nfs-secure
systemctl enable krb5kdc kadmin nfs-secure
Ensuite, à l’aide de l’outil kadmin.local, créez un principal admin pour root :
# kadmin.local
addprinc root/admin
Et ajoutez le serveur Kerberos à la base de données :
# addprinc -randkey host/box2.mydomain.com
Idem pour le service NFS pour le client (box1) et le serveur (box2). Veuillez noter que dans la capture d’écran ci-dessous, j’ai oublié de le faire pour la boîte 1 avant de quitter :
# addprinc -randkey nfs/box2.mydomain.com
addprinc -randkey nfs/box1.mydomain.com
Et quittez en tapant quit et en appuyant sur Entrée :
Ensuite, obtenez et mettez en cache le ticket d’octroi de ticket Kerberos pour root/admin :
# kinit root/admin
klist
La dernière étape avant d’utiliser Kerberos consiste à stocker dans un fichier keytab (dans le serveur) les principaux autorisés à utiliser l’authentification Kerberos :
# kadmin.local
ktadd host/box2.mydomain.com
ktadd nfs/box2.mydomain.com
ktadd nfs/box1.mydomain.com
Enfin, montez le partage et effectuez un test d’écriture :
# mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
echo "Hello from linux-console.net" > /mnt/greeting.txt
Démontons maintenant le partage, renommons le fichier keytab dans le client (pour simuler qu’il n’est pas présent) et essayons de monter à nouveau le partage :
# umount /mnt
mv /etc/krb5.keytab /etc/krb5.keytab.orig
Vous pouvez désormais utiliser le partage NFS avec l’authentification basée sur Kerberos.
Résumé
Dans cet article, nous avons expliqué comment configurer NFS avec l’authentification Kerberos. Comme il y a beaucoup plus sur le sujet que ce que nous pouvons couvrir dans un seul guide, n’hésitez pas à consulter la documentation Kerberos en ligne et comme Kerberos est un peu délicat, c’est le moins qu’on puisse dire, n’hésitez pas à nous envoyer un message en utilisant le formulaire ci-dessous si vous rencontrez un problème ou avez besoin d’aide pour vos tests ou votre mise en œuvre.






