Dans le cadre du Hackathon nous avons souhaité tester l’utilisation de la solution FreeIPA afin d’authentifier un parc de postes clients libres.
FreeIPA est une solution intégrée de gestion d’information de sécurité comprenant :
- Un serveur LDAP 389 Directory Server ;
- Un serveur Kerberos MIT Kerberos ;
- Un serveur NTP ntpd ;
- Un serveur DNS BIND ;
- Un système de gestion de certificat Dogtag ;
- Des interfaces d’administrations : web et ligne de commandes.
Cette solution gère l’authentification, l’autorisation et le suivi des connexions d’environnements réseaux GNU/Linux et UNIX de façon centralisée.
Contexte de l’expérimentation
Notre expérimentation a été réalisée dans un environnement virtualisé OpenNebula.
Voici les informations de contexte que nous avons choisi afin de permettre à tous de la reproduire :
- Un nom de domaine Internet dédié sous le nom de premier niveau réservé aux exemples :
ipa.example
; - Un nom de royaume Kerberos identique au nom de domaine DNS ;
- Un plan d’adressage IP privé :
192.168.0.0/24
; - Un nom de serveur FreeIPA :
master.ipa.example
; - Une adresse IP du serveur FreeIPA :
192.168.0.102
; - Un serveur DNS récursif permettant de résoudre les noms en dehors de notre réseau :
192.168.232.2
.
Installer FreeIPA
La solution FreeIPA est empaquetée pour la plupart des distributions majeures, nous utiliserons une distribution CentOS dans notre exemple.
Pré-requis
La documentation en anglais de FreeIPA décrit très bien les pré-requis de l’installation de FreeIPA :
- Une configuration DNS correcte, étant donné que la procédure d’initialisation fera des vérifications poussées ;
- Un nom d’hôte statique, car si le nom d’hôte change l’authentification Kerberos ne peut plus fonctionner.
Installer les paquets logiciels
Sur la machine CentOS à jour, vous devez installer les paquets suivants :
ipa-server
: méta-paquet permettant d’installer la solution ;ipa-server-dns
: méta-paquet permettant à FreeIPA de gérer la zone DNS directement.
Procéder à l’installation en exécutant la commande suivante :
[root@master ~]# yum install ipa-server ipa-server-dns
Cela doit prendre environ 120Mo sur le disque, une fois terminé, le serveur est prêt à être initialisé.
Initialiser le domaine FreeIPA
L’initialisation d’un domaine FreeIPA s’effectue avec avec la commande ipa-server-install
, cette commande fonctionne soit de façon interactive, soit avec des options de ligne de commande.
Pour initialiser le serveur dans notre environnement, nous exécutons la commande suivante :
[root@master ~]# ipa-server-install \ --realm=IPA.EXAMPLE \ --domain=ipa.example \ --hostname=master.ipa.example \ --ssh-trust-dns \ --setup-dns \ --forwarder=192.168.232.2
Après avoir confirmé les informations et saisi les mots de passe de l’administrateur de l’annuaire et de l’administrateur du domaine, la commande se termine par les messages suivants :
============================================================================== Setup complete Next steps: 1. You must make sure these network ports are open: TCP Ports: * 80, 443: HTTP/HTTPS * 389, 636: LDAP/LDAPS * 88, 464: kerberos * 53: bind UDP Ports: * 88, 464: kerberos * 53: bind * 123: ntp 2. You can now obtain a kerberos ticket using the command: 'kinit admin' This ticket will allow you to use the IPA tools (e.g., ipa user-add) and the web user interface. Be sure to back up the CA certificates stored in /root/cacert.p12 These files are required to create replicas. The password for these files is the Directory Manager password
Administrer FreeIPA
L’administration du service peut s’effectuer de deux façon :
- en ligne de commande ;
- par une interface web.
Ligne de commande
L’utilisation de la ligne de commande nécessite l’obtention d’un ticket Kerberos pour l’utilisateur admin
créé pendant l’initialisation du serveur.
Pour obtenir un ticket Kerberos, il faut utiliser la commande kinit
:
[root@master ~]# kinit admin Password for admin@IPA.EXAMPLE: <SAISIE DU MOT DE PASSE ADMIN>
Vous pouvez vérifier les tickets en cours avec la commande klist
:
[root@master ~]# klist Ticket cache: KEYRING:persistent:0:0 Default principal: admin@IPA.EXAMPLE Valid starting Expires Service principal 15/01/2018 13:21:55 16/01/2018 13:21:49 krbtgt/IPA.EXAMPLE@IPA.EXAMPLE
Vous pouvez ensuite gérer votre serveur grâce à la commande ipa
, par exemple pour créer un utilisateur :
[root@master ~]# ipa user-add --first=Santenay --last=Sous-La-Roche santenay.sous-la-roche --------------------------------------------- Utilisateur « santenay.sous-la-roche » ajouté --------------------------------------------- Identifiant de connexion: santenay.sous-la-roche Prénom: Santenay Nom: Sous-La-Roche Nom complet: Santenay Sous-La-Roche Nom affiché: Santenay Sous-La-Roche Initiales: SS Répertoire personnel: /home/santenay.sous-la-roche GECOS: Santenay Sous-La-Roche Interpréteur de commande: /bin/sh Nom principal: santenay.sous-la-roche@IPA.EXAMPLE Principal alias: santenay.sous-la-roche@IPA.EXAMPLE Adresse courriel: santenay.sous-la-roche@ipa.example UID: 1403600005 GID: 1403600005 Mot de passe: False Membre des groupes: ipausers Clés Kerberos disponibles: False
Notre utilisateur est alors créé, sans mot de passe.
Interface web
Certaines opérations peuvent paraître plus confortables avec une interface graphique, FreeIPA fournit une interface web couvrant presque toutes les fonctionnalités de la ligne de commande.
La connexion s’effectue en HTTPS sur le serveur FreeIPA : https://master.ipa.example/
Par défaut, le certificat est celui généré par la PKI interne de FreeIPA :
Une fois connecté, l’interface s’ouvre sur la gestion des identités et affiche le seul utilisateur actif après l’installation admin
:
Nous pouvons ajouter un nouvel utilisateur et définir son mot de passe de première connexion, un mot de passe est par défaut défini comme expiré, nécessitant son changement à la première connexion :
Nous sommes maintenant prêt à configurer un poste GNU/Linux.
Intégrer un client lourd GNU/Linux
Les tests ont été effectués avec une distribution Debian GNU/Linux Sid utilisant le bureau GNOME 3.
- S’assurer de la configuration DNS : utiliser l’adresse IP du serveur FreeIPA comme serveur DNS récursif ;
- S’assurer que le client est à l’heure, pour les tests nous avons utilisé le fuseau horaire du Japon afin de vérifier que cela fonctionne avec un serveur d’un autre fuseau horaire.
Installer les paquets logiciels
Sur la distribution GNU/Linux le paquet à installer est nommé freeipa-client
:
pcadmin@debian-gnome:~$ sudo apt install freeipa-client
Intégrer le poste client
L’intégration du poste client se fait simplement avec la commande ipa-client-install
. Cette commande peut être exécutée de façon interactive ou en lui passant des options de la ligne de commande.
Nous procédons à l’intégration en exécutant la commande suivante :
pcadmin@debian-gnome:~$ sudo ipa-client-install \ --domain=ipa.example \ --mkhomedir \ --ntp-server=master.ipa.example \ --ssh-trust-dns
La commande demande les paramètres de connexion d’un compte utilisateur permettant d’intégrer la machine, le compte admin
dans notre cas.
Nous pouvons dorénavant afficher les utilisateurs du domaine à l’aide de la commande id
:
pcadmin@debian-gnome:~$ id admin uid=1403600000(admin) gid=1403600000(admins) groupes=1403600000(admins)
Connecter un utilisateur du domaine
Nous pouvons nous connecter avec un utilisateur du domaine :
Le mot de passe doit être changé à la première connexion d’un utilisateur, celui-ci étant défini comme expiré par défaut :
Le bureau GNOME 3 s’affiche et nous somme bien reconnus avec nos informations d’identité :
Utiliser FreeIPA avec LTSP
Afin de vérifier la pertinence de la solution, nous avons essayer de faire fonctionner l’authentification LTSP avec FreeIPA et cela a été un succès sans aucun effort supplémentaire.
Pour aller au plus simple, nous avons réutilisé le poste GNU/Linux lourd déjà installé et configuré afin de le transformer en serveur LTSP :
- Installer le paquet ltsp-server-standalone qui fourni tout ce qui est nécessaire au fonctionnement (DHCP et TFTP) ;
- Configurer les services comme décrit dans le Howto Debian ;
- Générer l’image du client léger.
Lorsqu’une machine démarre en PXE :
- Le serveur DHCP lui signale où télécharger le noyau à démarrer ;
- La machine télécharge par TFTP le noyau et l’initramfs et les utilise pour démarrer ;
- Le système démarre et affiche la mire d’authentification LTSP ;
- Un utilisateur déclaré dans FreeIPA peut alors se connecter avec ses identifiants.
Une fois le compte corton.charlemagne
déconnecté de la console physique de la machine Debian GNU/Linux, nous pouvons nous connecter avec ce compte sur LTSP :
Une fois connecté, nous avons accès au même bureau qu’en connexion locale, mais nous pouvons aussi exécuter des programmes embarqués dans l’image du client léger :
ATTENTION : La mire d’authentification LTSP ne supporte pas encore le changement de mot de passe lorsque celui-ci est expiré comme le fait GDM.