Installer un serveur FreeIPA sur Rocky Linux 9, puis intégrer des clients Rocky 9/10, Debian et Ubuntu

Qu’est-ce que FreeIPA
FreeIPA (Free Identity, Policy, Audit) est une solution libre de gestion d’identités développée dans l’écosystème Red Hat. Il s’agit du projet amont (upstream) de Red Hat Identity Management (IdM). Son rôle est de centraliser l’authentification, l’autorisation et l’audit dans des parcs Linux, un peu à la manière de ce que propose Active Directory dans le monde Windows.
Pour y parvenir, FreeIPA orchestre plusieurs briques open source éprouvées :
- 389 Directory Server : annuaire LDAP v3 avec réplication multi-maître. C’est le stockage principal des utilisateurs, groupes, machines et configurations.
- MIT Kerberos (KDC) : gestion de l’authentification. Kerberos délivre des tickets temporaires qui permettent le SSO (Single Sign-On) entre services compatibles.
- ISC BIND : serveur DNS intégré (optionnel mais fortement recommandé). Il gère automatiquement les enregistrements SRV nécessaires à la découverte des services par les clients.
- Dogtag Certificate System : autorité de certification (CA) interne pour la gestion des certificats X.509 (TLS, authentification par certificat).
- Chrony/NTP : synchronisation horaire, indispensable au bon fonctionnement de Kerberos (qui tolère un écart maximal de 5 minutes par défaut).
- SSSD (System Security Services Daemon) : côté client, il assure le cache des identités et la communication avec le serveur IPA.
L’intérêt de FreeIPA par rapport à une configuration manuelle de ces composants individuels est considérable : l’outil ipa-server-install configure, sécurise et intègre l’ensemble en quelques minutes. Par la suite, l’interface Web et la commande ipa permettent d’administrer les identités, les politiques d’accès (HBAC), les règles sudo et les certificats depuis un point unique.
1. Architecture et prérequis
1.1 Schéma de l’architecture cible
Voici la topologie utilisée pour ce guide : un serveur FreeIPA central sur Rocky Linux 9, avec quatre types de clients hétérogènes.

1.2 Prérequis matériels et logiciels
Pour le serveur FreeIPA, les ressources minimales recommandées sont les suivantes :
- Processeur : 2 vCPU minimum
- Mémoire vive : 4 Go de RAM (en dessous, l’installeur peut échouer)
- Stockage : 10 Go d’espace disque disponible
- Système : Rocky Linux 9.x avec une installation minimale (ou serveur)
- Réseau : une adresse IP fixe et un FQDN résolvable (par exemple ipa.homelab.lan)
Pour les machines clientes, les exigences sont plus modestes : 1 Go de RAM suffit, avec un accès réseau vers le serveur IPA sur les ports mentionnés dans le schéma ci-dessus.
1.3 Conventions de nommage
Quelques règles à respecter impérativement pour éviter les problèmes lors de l’installation :
- Les FQDN doivent être des noms DNS valides : pas d’underscore, uniquement des lettres minuscules, des chiffres et des tirets.
- Le Realm Kerberos correspond au nom de domaine DNS en majuscules (exemple : HOMELAB.LAN pour le domaine homelab.lan).
- Le serveur IPA ne doit pas avoir le hostname ni un nom court sans domaine.
2. Installation du serveur FreeIPA sur Rocky Linux 9
2.1 Préparer le système (hostname, /etc/hosts, fuseau horaire)
Avant toute installation de paquets, il faut configurer le hostname du serveur de manière permanente et s’assurer que la résolution de noms fonctionne localement. Cette étape paraît anodine, mais elle est la cause numéro un des échecs d’installation.
# Définir le FQDN du serveur sudo hostnamectl set-hostname ipa.homelab.lan # Vérifier que le hostname est correctement appliqué hostname -f # Résultat attendu : ipa.homelab.lan# Ajouter une entrée dans /etc/hosts pour la résolution locale # Remplacez 192.168.10.10 par l'adresse IP réelle du serveur echo "192.168.10.10 ipa.homelab.lan ipa" | sudo tee -a /etc/hosts # Vérifier la résolution getent hosts ipa.homelab.lan # Résultat attendu : 192.168.10.10 ipa.homelab.lan ipa# Configurer le fuseau horaire sudo timedatectl set-timezone Europe/Paris # Confirmer la configuration timedatectl
2.2 Synchroniser l’horloge avec chrony
Kerberos refuse les authentifications lorsque le décalage horaire entre client et serveur dépasse 5 minutes (valeur par défaut du paramètre clockskew). En pratique, il vaut mieux maintenir ce décalage le plus proche possible de zéro. Chrony est le client NTP par défaut sur Rocky Linux 9.
# Installer chrony (généralement déjà présent) sudo dnf install -y chrony # Activer et démarrer le service sudo systemctl enable --now chronyd # Vérifier la synchronisation chronyc tracking # Le champ "System time" doit afficher un décalage# de l'ordre de quelques millisecondes
FreeIPA configure également chrony lors de l’installation du serveur, mais valider la synchronisation en amont permet d’éviter des erreurs difficiles à diagnostiquer par la suite.
2.3 Configurer le pare-feu
Rocky Linux 9 utilise firewalld par défaut. FreeIPA requiert l’ouverture de plusieurs ports pour ses différents services. La méthode la plus propre consiste à utiliser les services prédéfinis de firewalld.
# Ouvrir les services nécessaires au fonctionnement de FreeIPA sudo firewall-cmd --add-service={freeipa-ldap,freeipa-ldaps,dns,ntp,http,https,kerberos} --permanent # Appliquer les modifications sudo firewall-cmd --reload # Vérifier la liste des services autorisés sudo firewall-cmd --list-services
# Alternative avec le service unifié (firewalld récent)
sudo firewall-cmd --add-service=freeipa-4 --permanent
sudo firewall-cmd --reload
Pour référence, voici la correspondance entre les services et les ports TCP/UDP concernés :
| Service | Protocole | Port |
|---|---|---|
| HTTP | TCP | 80 |
| HTTPS | TCP | 443 |
| LDAP | TCP | 389 |
| LDAPS | TCP | 636 |
| Kerberos | TCP/UDP | 88 |
| Kpasswd | TCP/UDP | 464 |
| DNS | TCP/UDP | 53 |
| NTP | UDP | 123 |
2.4 Installer les paquets FreeIPA
Sur Rocky Linux 9, les paquets FreeIPA sont disponibles dans le dépôt AppStream. Deux méthodes d’installation existent selon la configuration des miroirs :
Méthode A : installation directe via dnf
Sur la plupart des installations récentes de Rocky Linux 9, les paquets sont directement accessibles sans activation de module spécifique :
# Mettre à jour le système avant l'installation sudo dnf update -y # Installer FreeIPA Server avec le support DNS intégré sudo dnf install -y freeipa-server freeipa-server-dns freeipa-client
Méthode B : activation du module IdM (si les paquets ne sont pas trouvés)
Certains environnements (notamment les miroirs alignés sur RHEL) nécessitent l’activation préalable du module idm:DL1. Si la méthode A renvoie une erreur indiquant que les paquets n’existent pas, on utilisera cette approche :
# Activer le module Identity Management sudo dnf module enable -y idm:DL1 # Synchroniser les métadonnées sudo dnf module install -y idm:DL1/server # Ou installer manuellement les paquets sudo dnf install -y ipa-server ipa-server-dns
La différence entre ces deux méthodes tient à l’organisation des dépôts. Le résultat final est identique : les mêmes composants sont installés.
2.5 Lancer l’installation interactive
L’installation s’effectue via la commande ipa-server-install. L’option --setup-dns active le DNS intégré, ce qui simplifie considérablement l’enrôlement des clients grâce aux enregistrements SRV créés automatiquement.
# Lancer l'installation interactive avec DNS intégré
sudo ipa-server-install --setup-dns
L’installeur pose une série de questions. Voici les principales étapes et les réponses à fournir :
# L'installeur affiche les informations suivantes : # # The log file for this installation can be found in # /var/log/ipaserver-install.log # ====================================================== # This program will set up the IPA Server. # This includes: # * Configure a stand-alone CA (dogtag) for certificate management # * Configure the NTP client (chronyd) # * Create and configure an instance of Directory Server # * Create and configure a Kerberos Key Distribution Center (KDC) # * Configure Apache (httpd) # * Configure DNS (bind) # * Configure SID generation # * Configure the KDC to enable PKINIT # Réponses attendues (exemple) : Server host name [ipa.homelab.lan]: <Entrée> Please confirm the domain name [homelab.lan]: <Entrée> Please provide a realm name [HOMELAB.LAN]: <Entrée> Directory Manager password: VotreMotDePasseRobuste1! IPA admin password: VotreMotDePasseAdmin2! Do you want to configure DNS forwarders? [yes]: yes Enter an IP address for a DNS forwarder: 8.8.8.8 Do you want to search for missing reverse zones? [yes]: yes
L’installation prend généralement entre 5 et 15 minutes selon les performances de la machine. Lorsqu’elle se termine avec succès, le message suivant s’affiche :
The ipa-server-install command was successful
2.6 Valider l’installation
Après l’installation, on effectue les vérifications suivantes pour confirmer que tous les services fonctionnent :
# Obtenir un ticket Kerberos pour le compte admin kinit admin # Saisir le mot de passe IPA admin défini lors de l'installation# Vérifier le ticket obtenu klist # Résultat attendu : Ticket cache: KCM:0 Default principal: [email protected] Valid starting Expires Service principal [date] [date+24h] krbtgt/[email protected] # Vérifier que tous les services IPA tournent sudo ipactl status # Tous les services doivent afficher "RUNNING" # Tester la résolution DNS des enregistrements SRV dig +short _ldap._tcp.example.lan SRV # Résultat attendu : 0 100 389 ipa.homelab.lan. dig +short _kerberos._tcp.example.lan SRV # Résultat attendu : 0 100 88 ipa.homelab.lan.
2.7 Accéder à l’interface Web
FreeIPA propose une interface d’administration Web accessible depuis un navigateur :
https://ipa.homelab.lan/ipa/ui/ouhttps://192.168.10.10/ipa/ui
Le certificat présenté est auto-signé par défaut. On se connectera avec le compte admin et le mot de passe défini lors de l’installation.
L’interface se divise en plusieurs sections :
- Identity : gestion des utilisateurs, groupes, machines et services
- Policy : règles HBAC (Host-Based Access Control), règles sudo, politiques de mots de passe, politiques Kerberos
- Authentication : certificats, tokens OTP, serveurs RADIUS
- Network Services : gestion DNS et AutoFS

2.8 Créer un premier utilisateur de test
Avant d’enrôler les clients, nous créons au moins un utilisateur pour tester l’authentification :
# Modifier le shell par défaut des utilisateurs IPA ipa config-mod --defaultshell=/bin/bash # Créer un utilisateur ipa user-add zsecu --first=Zero --last=Secu --password # Saisir et confirmer un mot de passe temporaire# Vérifier la création ipa user-find zsecu # (Optionnel) Créer un groupe et y ajouter l'utilisateur ipa group-add sysadmins --desc="Administrateurs systèmes" ipa group-add-member sysadmins --users=zsecu
3. Préparer le DNS pour faciliter l’intégration des clients
Le DNS est le pilier de la découverte automatique dans FreeIPA. Lorsqu’un client exécute ipa-client-install sans paramètres explicites, il recherche dans le DNS des enregistrements SRV de type _ldap._tcp.DOMAINE et _kerberos._tcp.DOMAINE pour localiser le serveur IPA.
En activant le DNS intégré lors de l’installation du serveur (option --setup-dns), ces enregistrements sont créés automatiquement. Il reste néanmoins deux points à vérifier :
- 1). Les clients doivent utiliser le serveur IPA comme résolveur DNS (ou un résolveur qui transfert les requêtes vers la zone IPA).
- 2).Les enregistrements A/PTR des clients peuvent être créés à l’avance sur le serveur, ou ajoutés automatiquement lors de l’enrôlement grâce à l’option –enable-dns-updates.
# Ajouter un enregistrement DNS pour un futur client (depuis le serveur IPA) # Exemple : le client Rocky 9 avec l'IP 192.168.10.20 ipa dnsrecord-add homelab.lan rky9-web01 --a-rec=192.168.10.20 # Vérifier l'enregistrement dig +short rky9-web01.homelab.lan # Résultat attendu : 192.168.10.20 # Ajouter un enregistrement PTR (résolution inverse) # Il faut d'abord créer la zone inverse si elle n'existe pas ipa dnszone-add 10.168.192.in-addr.arpa. ipa dnsrecord-add 10.168.192.in-addr.arpa. 20 --ptr-rec=rky9-web01.homelab.lan.
La résolution inverse (PTR) n’est pas obligatoire pour l’enrôlement, mais elle est recommandée : Kerberos l’utilise pour valider l’identité des machines, et plusieurs outils de diagnostic s’appuient dessus.
4. Intégrer un client Rocky Linux 9
4.1 Préparation côté client
Sur chaque machine cliente, trois prérequis doivent être remplis avant de lancer l’enrôlement : le hostname, le DNS et la synchronisation horaire.
# Définir le FQDN du client sudo hostnamectl set-hostname rky9-web01.homelab.lan # Vérifier hostname -f # Résultat attendu : rky9-web01.homelab.lan # Configurer le DNS pour pointer vers le serveur IPA # Sur Rocky 9, NetworkManager gère /etc/resolv.conf # Méthode avec nmcli (remplacez "ens18" par votre interface réseau) : sudo nmcli connection modify ens18 ipv4.dns "192.168.10.10" sudo nmcli connection modify ens18 ipv4.dns-search "homelab.lan" sudo nmcli connection down ens18 && sudo nmcli connection up ens18 # Vérifier que le DNS résout le serveur IPA getent hosts ipa.homelab.lan # Résultat attendu : 192.168.10.10 ipa.homelab.lan # Vérifier la découverte DNS SRV dig +short _ldap._tcp.example.lan SRV # Résultat attendu : 0 100 389 ipa.homelab.lan. # Synchroniser l'horloge sudo dnf install -y chrony sudo systemctl enable --now chronyd chronyc tracking
4.2 Installer le client et rejoindre le domaine
# Installer le paquet client FreeIPA sudo dnf install -y freeipa-client mkhomedir # Joindre le domaine en mode interactif # L'option --mkhomedir crée automatiquement le répertoire # personnel de l'utilisateur lors de sa première connexion sudo ipa-client-install --mkhomedir
Si la découverte DNS fonctionne, l’installeur détecte automatiquement le serveur, le domaine et le realm. Il demande confirmation puis sollicite les identifiants d’un compte autorisé à enrôler des machines (généralement admin).
Pour activer la mise à jour DNS automatique (le client enregistre son adresse IP dans la zone DNS du serveur IPA), on ajoutera l’option --enable-dns-updates. Cette option fonctionne uniquement si le DNS intégré FreeIPA est actif, car la mise à jour utilise le mécanisme GSS-TSIG (authentification Kerberos des requêtes DNS dynamiques) :
# Variante avec mise à jour DNS automatique
sudo ipa-client-install --mkhomedir --enable-dns-updates
4.3 Mode non interactif (pour l’automatisation)
Lorsque la découverte DNS n’est pas disponible ou dans un contexte d’automatisation (Ansible, scripts de provisionnement), il est possible de fournir tous les paramètres en ligne de commande :
# Enrôlement non interactif avec paramètres explicites
sudo ipa-client-install \
--hostname=rky9-web01.homelab.lan \
--server=ipa.homelab.lan \
--domain=homelab.lan \
--realm=HOMELAB.LAN \
--principal=admin \
--password=VotreMotDePasseAdmin2! \
--mkhomedir \
--enable-dns-updates \
--unattended
5. Intégrer un client Rocky Linux 10
Rocky Linux 10 (basé sur RHEL 10) suit la même logique que Rocky 9 pour la partie cliente. Les paquets FreeIPA client sont disponibles dans les dépôts AppStream par défaut, et la commande ipa-client-install est identique.
# Préparer le hostname sudo hostnamectl set-hostname rky10-app01.homelab.lan # Configurer le DNS vers le serveur IPA sudo nmcli connection modify ens18 ipv4.dns "192.168.10.10" sudo nmcli connection modify ens18 ipv4.dns-search "homelab.lan" sudo nmcli connection down ens18 && sudo nmcli connection up ens18 # Vérifier la résolution getent hosts ipa.homelab.lan # Installer le client FreeIPA sudo dnf install -y freeipa-client mkhomedir # Joindre le domaine sudo ipa-client-install --mkhomedir # Ou avec mise à jour DNS automatique sudo ipa-client-install --mkhomedir --enable-dns-updates
Les commandes de jointure sont identiques à celles de Rocky 9. La documentation de Server World confirme que FreeIPA est officiellement supporté sur Rocky Linux 10, aussi bien côté serveur que côté client. Les mêmes options (--mkhomedir, --enable-dns-updates, --unattended) sont disponibles.
6. Intégrer un client Debian 12
Sur les distributions Debian, le paquet freeipa-client est disponible dans les dépôts officiels depuis Debian 10 (Buster). L’installation est simple, mais quelques différences méritent d’être signalées.
6.1 Installer les paquets nécessaires
# Mettre à jour les dépôts sudo apt update # Installer le client FreeIPA et ses dépendances sudo apt install -y freeipa-client sssd-tools mkhomedir
Lors de l’installation du paquet, le gestionnaire de paquets Debian pose des questions relatives à la configuration Kerberos (nom du realm, serveur Kerberos). On pourra laisser ces champs vides : la commande ipa-client-install reconfigurera ces paramètres automatiquement lors de l’enrôlement.
6.2 Configurer le DNS et la synchronisation horaire
# Configurer la résolution DNS vers le serveur IPA # Modifier /etc/resolv.conf (ou utiliser nmcli selon votre configuration) sudo tee /etc/resolv.conf <<EOF search homelab.lan nameserver 192.168.10.10 EOF # Vérifier la résolution getent hosts ipa.homelab.lan # Vérifier la découverte DNS SRV dig +short _ldap._tcp.homelab.lan SRV # Installer et activer chrony pour la synchronisation horaire sudo apt install -y chrony sudo systemctl enable --now chrony chronyc tracking
6.3 Joindre le domaine
# Enrôlement interactif (si la découverte DNS fonctionne) sudo ipa-client-install --mkhomedir # Si la découverte DNS échoue, fournir les paramètres explicitement sudo ipa-client-install \ --hostname=deb12-app01.homelab.lan \ --server=ipa01.homelab.lan \ --domain=homelab.lan \ --realm=HOMELAB.LAN \ --mkhomedir
Sur Debian, l’option --mkhomedir configure le module PAM oddjob-mkhomedir (ou pam_mkhomedir selon la version) pour créer le répertoire personnel de chaque utilisateur IPA lors de sa première connexion locale.
7. Intégrer un client Ubuntu (22.04 / 24.04)
7.1 Installer les paquets
# Mettre à jour les dépôts sudo apt update # Installer le client FreeIPA et les composants SSSD sudo apt install -y freeipa-client sssd-tools mkhomelab
Comme sur Debian, l’installeur Debian/Ubuntu pose des questions sur la configuration Kerberos. Laissez les champs vides si vous prévoyez d’utiliser la découverte automatique via DNS.
7.2 Configurer le DNS (gérer systemd-resolved)
C’est l’étape qui pose le plus fréquemment problème sur Ubuntu. Par défaut, systemd-resolved utilise ses propres serveurs DNS (souvent ceux du DHCP ou du fournisseur d’accès), et le fichier /etc/resolv.conf pointe vers le stub local 127.0.0.53. Il faut rediriger les requêtes DNS vers le serveur IPA.
# Vérifier la configuration DNS actuelle resolvectl status # Méthode 1 : via resolvectl (temporaire, utile pour tester) sudo resolvectl dns ens18 192.168.10.10 sudo resolvectl domain ens18 homelab.lan # Méthode 2 : via nmcli (permanent, recommandé) sudo nmcli connection modify "Connexion filaire 1" ipv4.dns "192.168.10.10" sudo nmcli connection modify "Connexion filaire 1" ipv4.dns-search "homelab.lan" sudo nmcli connection down "Connexion filaire 1" sudo nmcli connection up "Connexion filaire 1" # Vérifier que la résolution fonctionne resolvectl query ipa.homelab.lan dig +short _ldap._tcp.homelab.lan SRV
7.3 Joindre le domaine
# Enrôlement interactif sudo ipa-client-install --mkhomedir # Avec mise à jour DNS automatique (si DNS intégré FreeIPA) sudo ipa-client-install --mkhomedir --enable-dns-updates # Mode explicite (si la découverte DNS ne fonctionne pas) sudo ipa-client-install \ --hostname=ubu24-ci01.homelab.lan \ --server=ipa01.homelab.lan \ --domain=homelab.lan \ --realm=HOMELAB.LAN \ --mkhomedir
8. Vérifications post-enrôlement (tous clients)
Après l’enrôlement de chaque client, on effetue les vérifications suivantes pour confirmer que l’intégration est fonctionnelle.
8.1 Vérifier l’état de l’enrôlement et les services
# Confirmer que le client est enrôlé ipa-client-install --status # Résultat attendu : IPA client is configured on this system. # Vérifier que SSSD fonctionne sudo systemctl status sssd # Vérifier la configuration SSSD générée cat /etc/sssd/sssd.conf
8.2 Tester l’authentification Kerberos
# Obtenir un ticket Kerberos pour l'utilisateur admin kinit admin klist # Ou pour l'utilisateur de test créé plus tôt kinit zsecu klist
8.3 Résoudre un utilisateur IPA et tester la connexion
# Vérifier qu'un utilisateur IPA est résolu localement id zsecu # Résultat attendu : uid=XXXX(zsecu) gid=XXXX(zsecu) groups=XXXX(zsecu),XXXX(sysadmins) getent passwd zsecu # Résultat attendu : zsecu:*:XXXX:XXXX:Zero Secu:/home/zsecu:/bin/bash # Tester la connexion SSH (depuis un autre poste ou en local) ssh [email protected] # Vérifier que le répertoire personnel a été créé (grâce à --mkhomedir) su - zsecu pwd # Résultat attendu : /home/zsecu ls -la ~
8.4 Vérifier l’enrôlement depuis le serveur
# Sur le serveur IPA, lister les machines enrôlées kinit admin ipa host-find # Les clients doivent apparaître dans la liste# Voir les détails d'un client spécifique ipa host-show rky9-web01.homelab.lan
9. Aller plus loin : politiques HBAC et règles sudo
L’un des grands atouts de FreeIPA réside dans sa gestion centralisée des politiques d’accès. Deux fonctionnalités méritent une attention particulière : les règles HBAC (Host-Based Access Control) et les règles sudo centralisées.
9.1 HBAC : contrôler qui peut se connecter et où
Par défaut, FreeIPA est installé avec une règle HBAC nommée allow_all qui autorise tous les utilisateurs à se connecter sur toutes les machines via tous les services. Cette règle permissive est utile pour les tests initiaux, mais doit être désactivée en production et remplacée par des règles spécifiques.
# Lister les règles HBAC existantes ipa hbacrule-find # Créer un groupe de machines ipa hostgroup-add webservers --desc="Serveurs Web" ipa hostgroup-add-member webservers --hosts=rky9-web01.homelab.lan # Créer une règle HBAC : seuls les sysadmins peuvent accéder aux webservers ipa hbacrule-add sysadmin_webservers ipa hbacrule-add-user sysadmin_webservers --groups=sysadmins ipa hbacrule-add-host sysadmin_webservers --hostgroups=webservers ipa hbacrule-mod sysadmin_webservers --servicecat=all # Tester la règle avant de désactiver allow_all ipa hbactest --user=zsecu --host=rky9-web01.homelab.lan --service=sshd # Résultat attendu : Access granted: True # Une fois les règles spécifiques validées, désactiver allow_all ipa hbacrule-disable allow_all
9.2 Règles sudo centralisées
FreeIPA permet de gérer les règles sudo depuis le serveur, sans avoir à modifier /etc/sudoers sur chaque machine :
# Créer une commande sudo ipa sudocmd-add /usr/bin/systemctl # Créer une règle sudo ipa sudorule-add allow_sysadmin_systemctl ipa sudorule-add-user allow_sysadmin_systemctl --groups=sysadmins ipa sudorule-add-host allow_sysadmin_systemctl --hostgroups=webservers ipa sudorule-add-allow-command allow_sysadmin_systemctl --sudocmds=/usr/bin/systemctl # Vérifier la règle ipa sudorule-show allow_sysadmin_systemctl
Depuis FreeIPA 4.0, le client SSSD configure automatiquement la récupération des règles sudo depuis le serveur IPA. Sur des versions antérieures ou si vous avez utilisé l’option --no-sudo lors de l’enrôlement, une configuration manuelle est nécessaire.
10. Dépannage : les pannes les plus fréquentes
10.1 « Discovery was not successful » lors de l’enrôlement
Ce message signifie que le client n’a pas réussi à trouver le serveur IPA via les enregistrements DNS SRV. Les causes les plus courantes :
# 1) Vérifier que le client utilise le bon serveur DNS cat /etc/resolv.conf # Le nameserver doit pointer vers 192.168.10.10 (ou le DNS qui connait la zone IPA)# 2) Tester la résolution des enregistrements SRV dig +short _ldap._tcp.homelab.lan SRV dig +short _kerberos._tcp.homalab.lan SRV # Si aucun résultat, le DNS ne connait pas la zone IPA# 3) Vérifier le FQDN du client hostname -f # Doit retourner un FQDN complet, pas un nom court# 4) Vérifier la résolution du serveur IPA getent hosts ipa.homelab.lan # 5) Sur Ubuntu, vérifier que systemd-resolved utilise le bon DNS resolvectl status
Si la découverte échoue malgré un DNS correctement configuré, on utilisera les paramètres explicites : --server, --domain et --realm.
10.2 « Kerberos: Clock skew too great »
Cette erreur indique un décalage horaire trop important entre le client et le serveur.
# Sur le serveur ET le client, vérifier la synchronisation chronyc tracking timedatectl status # Si l'horloge est décalée, forcer une synchronisation sudo chronyc makestep # Vérifier que chrony est bien actif sudo systemctl status chronyd
10.3 L’enrôlement échoue avec « Joining realm failed »
# Vérifier les logs détaillés sudo journalctl -u sssd -n 50 sudo cat /var/log/ipaclient-install.log # Vérifier que le compte utilisé a les droits d'enrôlement # (par défaut, le compte admin peut enrôler des machines) kinit admin ipa host-find
10.4 La mise à jour DNS automatique ne fonctionne pas
L’option --enable-dns-updates nécessite que le DNS accèpte les mises à jour via GSS-TSIG. Ce mécanisme est natif avec le DNS intégré de FreeIPA. En utilisant un DNS externe, la mise à jour dynamique ne fonctionnera pas sans configuration supplémentaire.
# Vérifier que le DNS intégré est actif sur le serveur ipa dnszone-find # Doit afficher la zone homelab.lan avec "Dynamic update: TRUE" # Tester une mise à jour manuelle depuis le client # (après avoir obtenu un ticket Kerberos) nsupdate -g <<EOF server 192.168.10.10 zone homelab.lan update add test-record.homelab.lan 300 A 192.168.10.99 send EOF
10.5 Désinscrire un client (en cas de besoin)
# Sur le client : désinstaller le client IPA sudo ipa-client-install --uninstall # Nettoyer le cache SSSD sudo rm -rf /var/lib/sss/db/* sudo systemctl restart sssd # Sur le serveur : supprimer la machine de l'annuaire ipa host-del rky9-web01.homelab.lan --updatedns
11. Bonnes pratiques
Quelques recommandations pour un déploiement durable et fiable :
Réplication et haute disponibilité. Un serveur IPA unique constitue un point de défaillance critique. FreeIPA supporte la réplication multi-maître : il faudra au moins un réplica sur une seconde machine pour assurer la continuité de service.
# Sur le futur réplica (Rocky Linux 9) :
sudo dnf install -y freeipa-server freeipa-server-dns
sudo ipa-replica-install --setup-dns
Sauvegardes. on effectuera des sauvegardes régulières de l’annuaire LDAP, des keytabs Kerberos et de la PKI (Dogtag) avec la commande intégrée :
# Sauvegarde complète sudo ipa-backup # Les fichiers sont stockés dans /var/lib/ipa/backup/ ls /var/lib/ipa/backup/
Dans les cas de ce homelab, la solution ipa server est installée sur une VM, donc la sauvegarde pourra se faire via un snapshot ou un processus de backup périodique de la VM.
Certificats. Il faudra envisager de remplacer le certificat auto-signé du serveur Web par un certificat signé par une autorité reconnue, ou configurer les postes clients pour faire confiance à la CA interne FreeIPA.
Surveillance. On supervisera les services FreeIPA (389 DS, KDC, httpd, named) avec les outils de monitoring habituels. La commande ipactl status fournit un état rapide de tous les composants.
Tableau récapitulatif des commandes par distribution
| Distribution | Installation du client | Enrôlement |
|---|---|---|
| Rocky Linux 9 | sudo dnf install -y freeipa-client | sudo ipa-client-install –mkhomedir |
| Rocky Linux 10 | sudo dnf install -y freeipa-client | sudo ipa-client-install –mkhomedir |
| Debian 12 | sudo dnf install -y freeipa-client | sudo ipa-client-install –mkhomedir |
| Ubuntu 22.04/24 | sudo dnf install -y freeipa-client | sudo ipa-client-install –mkhomedir |
# Options courantes :
--enable-dns-updates : enregistrement automatique dans le DNS (DNS intégré FreeIPA requis)
--mkhomedir : création automatique du répertoire personnel au premier login
--server=FQDN : spécifier le serveur IPA si la découverte DNS échoue
--domain=DOMAINE : spécifier le domaine DNS
--realm=REALM : spécifier le realm Kerberos (en majuscules)
--unattended : mode non interactif (nécessite --principal et --password)C’était Zérosécu, et comme je dis toujours, la cybersécurité est moins cher que gratuit.
J’apporte la plus grande attention et le plus grand soin à chaque article, mais si toutefois, si vous repérez une erreur, faites-moi signe !
Note de les droits d’auteur (images): Les visuels intégrés peuvent provenir de la documentation officiels de FreeIPA et Rocky Linux, et sont utilisés à des fins d’illustration et d’analyse conformément au droit de citation.
Sources et références: FreeIPA.org : Quick Start Guide | FreeIPA.org : Documentation Client | HowtoForge : Install FreeIPA on Rocky Linux 9