Logo freeIPA

Dans cette 3ème partie nous allons aborder la haute-disponibilité ainsi que la fonctionnalité de montage automatique de système de fichiers (automount) de FreeIPA.

Si vous ne les avez pas encore lus, les premiers articles sont accessibles ici : Partie 1 / Partie 2.

1. Haute-disponibilité avec DNS Round Robin

Par défaut, FreeIPA propose un mécanisme de haute-disponibilité par Round Robin DNS. L’intégralité des serveurs FreeIPA du domaine sont enregistrés comme pouvant délivrer les différents services (Kerberos, LDAP, autorité de certification) :

Interface administrateur freeipainterface administrateur freeipainterface administrateur freeipa

Il est possible de valider ce comportement en éteignant les services sur l’un des serveurs par le biais de la commande :

~# ipactl stop

Nous pourrons constater que les clients du domaine sont capables de découvrir automatiquement par les enregistrements DNS SRV (Service) quel autre serveur FreeIPA est disponible pour fournir les informations. Une fois les tests finis, il est possible de redémarrer les services par :

~# ipactl start

Par défaut, les serveurs FreeIPA ont une synchronisation complète de leur configuration via une réplication LDAP et chacun de ces serveurs n’est pas juste un réplicat de sauvegarde mais doit être considéré au même titre que le premier de la liste. Ils sont tous masters et il est donc possible de configurer le domaine par le biais de n’importe lequel.

La notion d’auto découverte (AutoDiscovery) des services se base exclusivement sur les informations que portent les enregistrement DNS.

Un mécanisme de localisation DNS est disponible depuis la version 4.4 de FreeIPA : https://www.freeipa.org/page/V4/DNS_Location_Mechanism. Celui-ci permet de créer des préférences d’accès aux différents services vers un serveur FreeIPA (ou un ensemble) géographiquement proche, en gardant la possibilité de consulter ceux d’une autre localisation en cas de perte complète de ceux de la zone.

2. Automount

Automount dans FreeIPA est une façon de gérer, d’organiser, et d’accéder à des répertoires partagés sur un ou plusieurs systèmes. Automount permet de créer automatiquement un point de montage et de monter la ressource réseau quand cela lui est demandé. Automount fournit une structure cohérente pour organiser vos partages. Chaque dossier ou point de montage est appelé une key, plusieurs clés groupées ensemble forment une map, les cartes sont associées à des locations.

Cela permet par exemple de mettre les dossiers “home” de vos utilisateurs sur un serveur NFS, ce qui leur permet de retrouver leur documents et réglages sur les différentes hôtes de l’entreprise, c’est ce que nous allons faire dans cette partie.

Pour que l’Automount fonctionne correctement, il est nécessaire que le serveur NFS soit client FreeIPA. Dans notre exemple nous allons installer le nécessaire sur fedora1 et tester l’automount sur fedora2, en pratique un serveur NFS dédié est recommandé. Dans le cas où vous utilisez une solution du marché, la plupart de ces serveurs sont capables d’utiliser une keytab pour accéder au service. Pour se faire, il sera juste demandé de réaliser l’enregistrement directement sur l’interface de FreeIPA de l’hôte, de lui attribuer le service NFS et de télécharger la keytab correspondante.

2.1 Préparation de la VM fedora1 comme serveur NFS

Se connecter en SSH sur un des serveurs FreeIPA et récupérer un ticket kerberos :

[root@freeipa0 ~]# kinit admin
Password for admin@IDM.DEMO.LOCAL:

Nous allons enregistrer sur le serveur FreeIPA le service NFS de notre machine virtuelle :

[root@freeipa0 ~]# ipa service-add nfs/fedora1.idm.demo.local
-----------------------------------------------
Added service "nfs/fedora1.idm.demo.local@IDM.DEMO.LOCAL"
-----------------------------------------------
Principal name: nfs/fedora1.idm.demo.local@IDM.DEMO.LOCAL
Principal alias: nfs/fedora1.idm.demo.local@IDM.DEMO.LOCAL
Managed by: fedora1.idm.demo.local

À présent, sur la VM fedora1, nous allons mettre à jour notre keytab local pour prendre en compte l’ajout du rôle NFS dans le domaine. Une fois cela réalisé, nous aurons correctement kerberisé notre serveur NFS.

[root@fedora1 ~]# kinit admin
Password for admin@IDM.DEMO.LOCAL:
[root@fedora1 ~]# ipa-getkeytab -s freeipa0.idm.demo.local -p nfs/fedora1.idm.demo.local -k /etc/krb5.keytab
Keytab successfully retrieved and stored in: /etc/krb5.keytab

Nous allons créer notre partage NFS, directement à la racine de notre machine :

[root@fedora1 /]# mkdir -p /nfs/IDM.DEMO.LOCAL/testuser2
[root@fedora1 /]# chown -R testuser2@idm.demo.local:testuser2@idm.demo.local /nfs/IDM.DEMO.LOCAL/testuser2/
[root@fedora1 /]# ls -la /nfs/IDM.DEMO.LOCAL/testuser2/
total 8
drwxr-xr-x. 2 testuser2 testuser2 4096 Apr 4 14:21 .
drwxr-xr-x. 3 root root 4096 Apr 4 14:21 ..

Ouvrir le firewall pour le service NFS :

[root@fedora1 /]# firewall-cmd --add-service=nfs --permanent
success
[root@fedora1 /]# firewall-cmd --reload
success

Démarrer le service (nous allons utiliser les commandes pour CentOS 6, mais les commandes pour CentOS 7 sont écrites en Note ou Redirecting to) :

[root@fedora1 ~]# chkconfig nfs on
Note: Forwarding request to 'systemctl enable nfs.service'.
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@fedora1 ~]# service rpcbind start
Redirecting to /bin/systemctl start rpcbind.service
[root@fedora1 ~]# service nfs start
Redirecting to /bin/systemctl start nfs.service
[root@fedora1 ~]#

Exporter le partage :

[root@fedora1 ~]# echo '/nfs           192.168.56.0/24(rw,sync,no_root_squash,no_subtree_check)' >> /etc/exports
[root@fedora1 ~]# exportfs -a

2.2 Création des partages Automount sur FreeIPA

Nous allons créer une nouvelle location “homeuser”, qui contiendra une map “auto.home” et les keys associées :

[root@freeipa0 ~]# kinit admin
Password for admin@IDM.DEMO.LOCAL:
[root@freeipa0 ~]# ipa automountlocation-add homeuser
-----------------------------------
Added automount location "homeuser"
-----------------------------------
Location: homeuser
[root@freeipa0 ~]# ipa automountmap-add homeuser auto.home
-------------------------------
Added automount map "auto.home"
-------------------------------
Map: auto.home
[root@freeipa0 ~]# ipa automountkey-add homeuser auto.master --key=/home --info=auto.home
---------------------------
Added automount key "/home"
---------------------------
Key: /home
Mount information: auto.home
[root@freeipa0 ~]# ipa automountkey-add homeuser auto.home --key='*' --info="-fstype=nfs fedora1.idm.demo.local:/nfs/IDM.DEMO.LOCAL/&"
-----------------------
Added automount key "*"
-----------------------
Key: *
Mount information: -fstype=nfs fedora1.idm.demo.local:/nfs/IDM.DEMO.LOCAL/&

2.3 Préparation de la VM Fedora2 pour activer autofs via freeipa et test

Note Importante : Lors de l’écriture de ce billet, nous sommes tombés sur le bug suivant : https://bugzilla.redhat.com/show_bug.cgi?id=1470916 ; Ce bug empêche certaines opérations de bien se passer quand le client pointe sur un réplicat, ce qui est typiquement le cas de notre machine fedora2 configurée en client sur freeipa1.idm.demo.local. Il faudra donc commencer par modifier le fichier /etc/ipa/default.conf et /etc/krb5.conf et remplacer les références à freeipa1 par freeipa0 et de redémarrer la machine. Le bug a été corrigé il y a quelques jours et sera bientôt disponible dans les paquets freeipa-client de Fedora.

Sur la machine freeipa0, ajouter le client NFS :

[root@freeipa0 ~]# ipa service-add nfs/fedora2.idm.demo.local
-----------------------------------------------
Added service "nfs/fedora2.idm.demo.local@IDM.DEMO.LOCAL"
-----------------------------------------------
Principal name: nfs/fedora2.idm.demo.local@IDM.DEMO.LOCAL
Principal alias: nfs/fedora2.idm.demo.local@IDM.DEMO.LOCAL
Managed by: fedora2.idm.demo.local

Se connecter en root sur la machine, charger la keytab du serveur nfs et activer l’automount :

[root@fedora2 ~]# kinit admin
Password for admin@IDM.DEMO.LOCAL:
[root@fedora2 ~]# ipa-getkeytab -s freeipa0.demo.idm.local -p nfs/fedora1.xps.local -k /etc/krb5.keytab
[root@fedora2 ~]# ipa-client-automount --location=homeuser --server=freeipa0.demo.idm.local
IPA server: freeipa0.demo.idm.local
Location: homeuser
Continue to configure the system with these values? [no]: yes
Configured /etc/sysconfig/nfs
Configured /etc/idmapd.conf
Started rpcidmapd
Started rpcgssd
Restarting sssd, waiting for it to become available.
Started autofs

Modifier le fichier /etc/nsswitch.conf, modifier la ligne “automount:” pour qu’elle ressemble à ceci :

automount:  files sss nisplus

Se connecter sur la machine fedora2 avec l’utilisateur du domaine testuser2 et faire la commande mount pour arriver à ce résultat :

paul@xps ~> ssh testuser2@192.168.56.14
Password:
Last login: Thu Apr 5 20:08:29 2018 from 192.168.56.1
[testuser2@fedora2 ~]$ mount
[...]
fedora1.idm.demo.local:/nfs/IDM.DEMO.LOCAL/testuser2 on /home/testuser2 type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.56.14,local_lock=none,addr=192.168.56.15)

C’est fonctionnel, le partage /nfs/IDM.DEMO.LOCAL/testuser2 a bien été monté sur /home/testuser2.

Il est possible de changer la correspondance sur les partages NFS, en retirant le domaine par exemple ou changer le chemin, mais dans le cas du multi-domaines, il est préférable de le garder par souci de simplicité d’administration.

Dans la partie 4 de notre article FreeIPA, nous aborderons le sujet de l’authentification 2 facteurs, avec un OTP (One Time Password) comme 2ème facteur.

Notre série sur FreeIPA

Si vous ne les avez pas encore lu, retrouvez notre série d’articles sur FreeIPA :

  1. FreeIPA Partie 1 : Installation du serveur et de son réplica
  2. FreeIPA Partie 2 : Clients, HBAC, Sudo, Mots de passe
  3. FreeIPA Partie 3 : Haute-disponibilité, Automount
  4. FreeIPA Partie 4 : Seconds facteurs d’authentification
  5. FreeIPA Partie 5 : Trusts Active Directory
  6. FreeIPA Partie 6 : Trusts Active Directory, mise en pratique