// ZERO-SECU · CYBERSECURITY

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

zero-secu 17 février 2026 22 min de lecture
#Homelab
Résumons: mise en place d’un serveur FreeIPA sur Rocky Linux 9, puis enrôlement des machines Linux hétérogènes (Rocky 9, Rocky 10, Debian 12, Ubuntu 22.04/24.04) au domaine via ipa-client-install. Le tout avec une approche exploitable en homenlab : DNS intégré, synchronisation NTP via chrony, pare-feu, gestion des utilisateurs.

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
Un point souvent négligé : le fichier /etc/hosts doit contenir l’adresse IP réelle du serveur (pas 127.0.0.1) associée au FQDN. Si le FQDN résout vers l’adresse de loopback, l’installation échouera.

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
Note : depuis avril 2019, firewalld propose un service unifié freeipa-4 qui regroupe l’ensemble des ports nécessaires. Il sera possible d’utiliser cette alternative :
# 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 :

ServiceProtocolePort
HTTPTCP80
HTTPSTCP443
LDAPTCP389
LDAPSTCP636
KerberosTCP/UDP88
KpasswdTCP/UDP464
DNSTCP/UDP53
NTPUDP123

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/ ou https://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.  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.  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
Attention : le mot de passe en clair dans la ligne de commande est visible dans l’historique du shell et dans la liste des processus.

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)

Ubuntu présente une particularité importante : le système utilise systemd-resolved pour la résolution DNS. Ce service agit comme un proxy DNS local et peut interférer avec la découverte automatique des enregistrements SRV de FreeIPA si le résolveur n’est pas configuré correctement.

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
Astuce : si nmcli n’est pas disponible (cas de certaines installations minimales), on pourra configurer le DNS via Netplan (fichier /etc/netplan/*.yaml) en ajoutant les champs nameservers et search.

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
Attention : si on désactive allow_all sans avoir créé de règle HBAC spécifique pour le service sudo cela empêchera l’utilisation de sudo sur les machines clientes. Nous devons donc inclure le service sudo dans les règles HBAC, ou on crée une règle dédiée.

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

DistributionInstallation du clientEnrô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