Installation de freeIPA sur une fedora 44 server

Partager
Installation de freeIPA sur une fedora 44 server
Photo by Maksym Kaharlytskyi / Unsplash

FreeIPA vise à fournir un système d'identité, de politique et d'audit (IPA) géré de manière centralisée. C'est la version open-source (libre et gratuite) du système de gestion des identités développé par Red Hat.
Pour faire simple, c'est un annuaire de tout ce qui est présent sur le domaine. Utilisateurs, groupes, ordinateurs, services, et même des objets comme les imprimantes ou les clés SSH ... sont gérés de manière centralisée en implémentant, en plus, une couche de sécurité pour contrôler qui se connecte et ce à quoi il a accès (authentification et autorisation).
Pour découvrir cet outil, nous allons commencer par installer un serveur sous fedora 44 server lien qui aura presque tous les outils nécessaires.

installation de fedora 44 server

Pour cette installation, nous partirons sur une VM sur Oracle VirtualBox avec les paramètres par défaut. Pour ce test, je préfère que la machine reste isolée et ne vienne pas perturbé le reste du réseau local, on reste donc en mode NAT et on fera une redirection de port pour pouvoir atteindre la VM.

Mode graphique après le boot

Écran d'accueil de l'installeur
Accès aux réglages spécifiques de l'installation
  • On laisse le compte root désactivé et on crée un utilisateur avec les droits administrateur.
Configuration d'un utilisateur
  • Configuration du stockage
On laisse les réglages de base pour cette découverte
  • On règle la configuration réseau sur Methode : manuel (ip statique en renseignant la passerelle et le dns du réseau). Ici nous sommes dans une machine virtuelle en mode NAT complètement isolée du réseau local.
    Configuration du réseau
Résultat de la configuration réseau
  • On termine l'installation

Redemarrage du serveur

On va commencer par les réglages de base comme vérifier que l'adresse IP du serveur est bien en statique ou le réglage du nom d'hôte qui doit être pleinement qualifié pour convenir a freeIPA.

Déjà, voici les prérequis pour freeIPA:

  • Au moins 2 GB RAM (4 GB recommandé).
  • Un nom de domaine pleinement qualifié pour le serveur (FQDN).
  • Une adresse IP statique.
  • Un DNS qui resout le nom de domaine (FQDN) en son adresse IP.

Pour les besoins de la découverte, on va donc utiliser :

  • FQDN du serveur : ipa.famico.test
  • Royaume : FAMICO.TEST
  • Domaine : famico.test

Configuration du Hostname

 #Définir le nom d'hôte du serveur sur son nom de domaine complet (FQDN)
 sudo hostnamectl set-hostname ipa.famico.test
 #On vérifie
 hostname -f

DNS

On ajoute l'adresse IP du serveur à /etc/hosts afin qu'il soit résolu localement avant la configuration du DNS.

sudo nano /etc/hosts
#Resolution de l'adresse IP du serveur
<IP_SERVEUR>    ipa.famico.test ipa

Installation de freeIPA

Mise à jour et installation des paquets

Mettez à jour votre système et installez le serveur FreeIPA ainsi que le service DNS intégré :

sudo dnf update -y
sudo dnf install -y freeipa-server freeipa-server-dns

Lancement de l'installation

Exécutez la commande d'installation. Vous pouvez choisir le mode interactif ou passer les arguments directement. Pour une configuration standard avec DNS intégré :

sudo ipa-server-install --setup-dns --no-forwarders --mkhomedir

Note : L'option --no-forwarders configure le DNS pour ne pas transférer les requêtes externes, idéal pour un laboratoire isolé.

La configuration interactive

Suivez les invites de l'installateur :

  • Entrez le nom de domaine (ex: votre-domaine.local).
  • Confirmez le Royaume Kerberos (généralement le domaine en majuscules).
  • Définissez le mot de passe de l'administrateur de l'annuaire (Directory Manager).
  • Définissez le mot de passe de l'administrateur IPA (admin).
  • Acceptez la configuration de la zone DNS inverse si proposée.
  • Validez la configuration finale par yes.

Vérification des services

Une fois l'installation terminée (cela peut prendre plusieurs minutes), vérifiez que tous les services sont actifs :

sudo ipactl status

Ouverture des ports requis du firewall

Fedora inclut des définitions de services spécifiques pour freeIPA qui regroupent automatiquement tous les ports nécessaires. C'est la méthode la plus simple et la moins sujette aux erreurs.

#Ajoute les services FreeIPA et DNS de manière permanente
sudo firewall-cmd --permanent --add-service={freeipa-4,dns}
# Recharge le pare-feu pour appliquer les changements immédiatement
sudo firewall-cmd --reload   

Le service freeipa-4 couvre automatiquement les ports TCP (80, 443, 389, 636, 88, 464) et UDP (88, 464), tandis que le service dns gère le port 53 (TCP/UDP). Si vous utilisez également la synchronisation horaire locale, ajoutez le service ntp :

#Ajoute le service ntp de manière permanente
sudo firewall-cmd --permanent --add-service=ntp 
sudo firewall-cmd --reload

Accès et première connexion

  • Obtenez un ticket Kerberos pour l'admin : 
kinit admin
  • Accédez à l'interface web via https://<VOTRE_FQDN> depuis votre navigateur hôte. Dans notre cas de machine virtuelle totalement isolée, nous allons devoir passé par une redirection de ports.
  • Ignorez l'avertissement de certificat (auto-signé) et connectez-vous avec l'utilisateur admin.

Depuis cette interface ou la nouvelle, on peut gérer l'ajout d'utilisateurs, les groupes, les équipements et les permissions associées a chacun.

Connexion au domaine

Tout cela est très sympa, mais l'intérêt c'est quand même de gérer la connexion des utilisateurs autorisés à leur session de travail. on va donc se servir d'une autre machine virtuelle, cette fois sur debian avec un environnement gnome. évidemment, ce serait mieux en version graphique.

Commençons par créer un utilisateur

Installation du client freeIPA

  • On installe les paquets sur le poste sous debian :
sudo apt install freeipa-client -y
  • On va commencer par récupérer le nom de notre connexion
nmcli connection show
  • On met le dns du serveur freeIPA sur notre client :
nmcli connection modify <Wired\ Connection\ 1> ipv4.dns 192.168.21.50
nmcli connection down <Wired\ Connection\ 1>; nmcli connection up <Wired\ Connection\ 1>
  • On configure le client avec la commande :
sudo ipa-client-install --mkhomedir --enable-dns-updates
l'option --mkhomedir permet de créer le dossier /home de l'utilisateur lors de sa première connexion au poste

Règles HBAC (Host-Based Access Control)

Par défaut, freeIPA bloque les connexions graphiques si le service correspondant n'est pas autorisé dans les règles HBAC. 

  • Identifier votre gestionnaire d'affichage :
    • GNOME (Debian défaut) : utilise gdm ou gdm-password.
    • KDE Plasma : utilise sddm.
    • XFCE / Light : utilise souvent lightdm
  • Ajouter le service dans freeIPA :
    Dans notre cas nous utilisons gdm. On va donc créer le service, soit via l'interface web, soit en CLI :
ipa hbacsvc-add gdm --desc="Gnome Display Manager"
Si le service gdm existe déjà, la commande retournera une erreur
  • Associer le service à une règle HBAC
# Créer la règle
ipa hbacrule-add rule_gdm --desc="Autoriser connexion graphique GDM"
# Ajouter le service
ipa hbacrule-add-service rule_gdm --hbacsvcs=gdm
# Ajouter les utilisateurs ou groupes concernés
ipa hbacrule-add-user rule_gdm --users=nico
# Ajouter les hôtes (ou --hostcategory=all pour tous les clients)
ipa hbacrule-add-host rule_gdm --hosts=debian.famico.test
# Activer la règle
ipa hbacrule-enable rule_gdm 

En version graphique :

Vérification

Vérifiez que la règle est bien active et contient le service :

ipa hbacrule-show rule_gdm
Assurez-vous que gdm apparaît dans la liste des services HBAC.

Connexion sur le poste de travail

une fois que l'on est sur le bureau on peut ouvrir un terminal pour vérifier que nous sommes bien connecté a partir du domaine.

on peut demander le nom d'hôte de la machine :

hostname -f

puis de nous donner des infos sur un utilisateur du domaine.

id nico

De l'intérêt d'une fedora server

l'intérêt de passer par un serveur fedora c'est aussi que, de base, vous avez un service web qui s'appelle cockpit qui permet d'administrer le serveur a distance. Un peu plus agréable, non ?