Red Hat 8, Alma Linux 8 : Installer et configurer FreeIPA
Table des matières
Dans cet article,nous allons voir comment paramétrer un serveur FreeIPA sous CentOS 8 mais cela s'applique à Red Hat 8 et Alma Linux 8.
FreeIPA vise à fournir un système d'identité, de politique et d'audit (IPA) géré de manière centralisée.
Il utilise plusieurs couches opensource, comme 389 Directory Server pour l'implémentation LDAP, Kerberos 5 pour l'authentification et le SSO, Apache pour la console Web.
Dans cet article, le serveur est c1.linuxtricks.lan avec l'IP 192.168.21.221
Le client sera c2.linuxtricks.lan avec l'IP 192.168.21.222
Nous allons dans un premier temps installer tous les paquets nécessaires via le module dnf idm :
On va ensuite initialiser la configuration de FreeIPA avec la fonction DNS.
On ajoute dans le /etc/hosts notre serveur (au cas où) :
On lance l'installation :
On confirmer le nom d'hôte du serveur :
On confirme le nom de domaine :
On confirme le realm (le "royaume") :
On définit le mot de passe du Directory Manager
On définit le mot de passe du compte admin :
Configuration des DNS Forwarders :
On a un récapitulatif, indiquer YES :
L'nstallation de déroule (prend quelques minutes) :
On va ouvrir les services correspondants dans le parefeu :
On récupère le ticket Kerberos
On liste les tickets Kerberos
On vérifie que les hôtes ont accès au NTP (notre serveur FreeIPA est aussi serveur de temps) :
On décommente et adapte :
On va ajouter un utilisateur LDAP, de manière interactive grâce à la commande suivante :
Et on définit son mot de passe :
Si on préfère le mode non interactif (pratique pour le scripting) :
-- Configurer un client FreeIPA ---
Sur le serveur FreeIPA, on ajoute une entrée DNS pour le client :
Sur le client, paramétrer le serveur NTP (Chrony) sur le Serveur FreeIPA :
On édite la ligne suivante :
On active le service et on le redémarre
On vérifie que c'est bien pris en compte :
On installe les paquets FreeIPA CLient (via le module de dnf) :
On met le DNS de la machine FreeIPA sur notre client :
On configure le client avec la commande ipa-client-install :
Pas de DNS discovery et on ne configure pas ntp :
On valide la configuration :
On s'identifie avec le compte admin pour l'adhésion du serveur :
On peut activer la création automatique du /home s'il n'existe pas via authselect :
Et on active comme demandé le service oddjobd :
Une fois tout cela fait, on peut tester une connexion avec un utilisateur créé précédemment.
Je me connecte avec le compte adrien précédemment créé, et le système me demande de changer le mot de passe de suite :
Ajouter un utilisateur :
Changer un mot de passe :
Désactiver un compte :
Réactiver un compte :
Chercher un compte :
Supprimer un compte :
Ajouter un groupe :
Ajouter un compte au groupe :
Chercher des groupes :
Supprimer un groupe :
C'est quand même mieux avec une interface web
On y accède en https avec le nom du serveur : https://c1.linuxtricks.lan/
Et voilà, notre serveur FreeIPA est opérationnel !
Introduction
Dans cet article,nous allons voir comment paramétrer un serveur FreeIPA sous CentOS 8 mais cela s'applique à Red Hat 8 et Alma Linux 8.
FreeIPA vise à fournir un système d'identité, de politique et d'audit (IPA) géré de manière centralisée.
Il utilise plusieurs couches opensource, comme 389 Directory Server pour l'implémentation LDAP, Kerberos 5 pour l'authentification et le SSO, Apache pour la console Web.
Dans cet article, le serveur est c1.linuxtricks.lan avec l'IP 192.168.21.221
Le client sera c2.linuxtricks.lan avec l'IP 192.168.21.222
Configurer le serveur FREEIPA
Installer FreeIPA
Nous allons dans un premier temps installer tous les paquets nécessaires via le module dnf idm :
Code BASH :
dnf module install idm:DL1/dns
On va ensuite initialiser la configuration de FreeIPA avec la fonction DNS.
On ajoute dans le /etc/hosts notre serveur (au cas où) :
Code BASH :
echo '192.168.21.221 c1.linuxtricks.lan c1' >> /etc/hosts
On lance l'installation :
Code BASH :
ipa-server-install --setup-dns
Code :
The log file for this installation can be found in /var/log/ipaserver-install.log
==============================================================================
This program will set up the IPA Server.
Version 4.8.4
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 the KDC to enable PKINIT
To accept the default shown in brackets, press the Enter key.
On confirmer le nom d'hôte du serveur :
Code :
Server host name [c1.linuxtricks.lan]:
On confirme le nom de domaine :
Code :
Please confirm the domain name [linuxtricks.lan]:
On confirme le realm (le "royaume") :
Code :
Please provide a realm name [LINUXTRICKS.LAN]:
On définit le mot de passe du Directory Manager
Code :
Certain directory server operations require an administrative user.
This user is referred to as the Directory Manager and has full access
to the Directory for system management tasks and will be added to the
instance of directory server created for IPA.
The password must be at least 8 characters long.
Directory Manager password:
Password (confirm):
On définit le mot de passe du compte admin :
Code :
IPA admin password:
Password (confirm):
Configuration des DNS Forwarders :
Code :
Checking DNS domain linuxtricks.lan., please wait ...
Do you want to configure DNS forwarders? [yes]:
Following DNS servers are configured in /etc/resolv.conf: 8.8.8.8
Do you want to configure these servers as DNS forwarders? [yes]:
All DNS servers from /etc/resolv.conf were added. You can enter additional addresses now:
Enter an IP address for a DNS forwarder, or press Enter to skip:
Checking DNS forwarders, please wait ...
Do you want to search for missing reverse zones? [yes]:
Checking DNS domain 21.168.192.in-addr.arpa., please wait ...
Do you want to create reverse zone for IP 192.168.21.221 [yes]:
Please specify the reverse zone name [21.168.192.in-addr.arpa.]:
Checking DNS domain 21.168.192.in-addr.arpa., please wait ...
Using reverse zone(s) 21.168.192.in-addr.arpa.
On a un récapitulatif, indiquer YES :
Code BASH :
The IPA Master Server will be configured with: Hostname: c1.linuxtricks.lan IP address(es): 192.168.21.221 Domain name: linuxtricks.lan Realm name: LINUXTRICKS.LAN The CA will be configured with: Subject DN: CN=Certificate Authority,O=LINUXTRICKS.LAN Subject base: O=LINUXTRICKS.LAN Chaining: self-signed BIND DNS server will be configured to serve IPA domain with: Forwarders: 8.8.8.8 Forward policy: only Reverse zone(s): 21.168.192.in-addr.arpa. Continue to configure the system with these values? [no]: yes
L'nstallation de déroule (prend quelques minutes) :
Code :
The following operations may take some minutes to complete.
Please wait until the prompt is returned.
Disabled p11-kit-proxy
Synchronizing time
No SRV records of NTP servers found and no NTP server or pool address was provided.
Using default chrony configuration.
Attempting to sync time with chronyc.
Time synchronization was successful.
Configuring directory server (dirsrv). Estimated time: 30 seconds
[1/44]: creating directory server instance
[2/44]: configure autobind for root
[3/44]: stopping directory server
[4/44]: updating configuration in dse.ldif
[5/44]: starting directory server
#####
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring linuxtricks.lan as NIS domain.
Client configuration complete.
The ipa-client-install command was successful
==============================================================================
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
The ipa-server-install command was successful
On va ouvrir les services correspondants dans le parefeu :
Code BASH :
firewall-cmd --add-service=freeipa-ldap --permanent firewall-cmd --add-service=freeipa-ldaps --permanent firewall-cmd --add-service=dns --permanent firewall-cmd --add-service=ntp --permanent firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
On récupère le ticket Kerberos
Code BASH :
kinit admin
Code :
Password for [email protected]:
On liste les tickets Kerberos
Code BASH :
klist
Code :
Ticket cache: KCM:0
Default principal: [email protected]
Valid starting Expires Service principal
13/07/2020 18:09:17 14/07/2020 18:09:11 krbtgt/[email protected]
On vérifie que les hôtes ont accès au NTP (notre serveur FreeIPA est aussi serveur de temps) :
Code BASH :
vi /etc/chrony.conf
On décommente et adapte :
Code BASH :
allow 192.168.0.0/16
Ajouter des utilisateurs
On va ajouter un utilisateur LDAP, de manière interactive grâce à la commande suivante :
Code BASH :
ipa user-add
Code :
-----------------------------
Utilisateur « adrien » ajouté
-----------------------------
Identifiant de connexion: adrien
Prénom: Adrien
Nom: D
Nom complet: Adrien D
Nom affiché: Adrien D
Initiales: AD
Répertoire personnel: /home/adrien
GECOS: Adrien D
Interpréteur de commande: /bin/sh
Nom principal: [email protected]
Principal alias: [email protected]
Adresse courriel: [email protected]
UID: 477600001
GID: 477600001
Mot de passe: False
Membre des groupes: ipausers
Clés Kerberos disponibles: False
Et on définit son mot de passe :
Code BASH :
ipa passwd adrien
Code :
Nouveau mot de passe:
Entrer à nouveau Nouveau mot de passe pour validation :
----------------------------------------------------
Mot de passe modifié pour « [email protected] »
----------------------------------------------------
Si on préfère le mode non interactif (pratique pour le scripting) :
Code BASH :
ipa user-add adrien --first=Adrien --last=D --password
-- Configurer un client FreeIPA ---
Sur le serveur FreeIPA, on ajoute une entrée DNS pour le client :
Code BASH :
ipa dnsrecord-add linuxtricks.lan c2 --a-rec 192.168.21.222
Sur le client, paramétrer le serveur NTP (Chrony) sur le Serveur FreeIPA :
Code BASH :
vi /etc/chrony.conf
On édite la ligne suivante :
Code BASH :
pool c1.linuxtricks.lan iburst
On active le service et on le redémarre
Code BASH :
systemctl enable chronyd
systemctl restart chronyd
On vérifie que c'est bien pris en compte :
Code BASH :
chronyc sources
Code :
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* c1.linuxtricks.lan 3 6 377 52 -11us[ -13us] +/- 30ms
On installe les paquets FreeIPA CLient (via le module de dnf) :
Code BASH :
dnf module -y install idm:DL1/client
On met le DNS de la machine FreeIPA sur notre client :
Code BASH :
nmcli connection modify ens18 ipv4.dns 192.168.21.221 nmcli connection down ens18; nmcli connection up ens18
On configure le client avec la commande ipa-client-install :
Code BASH :
ipa-client-install --server=c1.linuxtricks.lan --domain linuxtricks.lan
Pas de DNS discovery et on ne configure pas ntp :
Code :
Proceed with fixed values and no DNS discovery? [no]: yes
Do you want to configure chrony with NTP server or pool address? [no]: no
On valide la configuration :
Code :
Client hostname: c2.linuxtricks.lan
Realm: LINUXTRICKS.LAN
DNS Domain: linuxtricks.lan
IPA Server: c1.linuxtricks.lan
BaseDN: dc=linuxtricks,dc=lan
Continue to configure the system with these values? [no]: yes
On s'identifie avec le compte admin pour l'adhésion du serveur :
Code :
User authorized to enroll computers: admin
Password for [email protected]:
On peut activer la création automatique du /home s'il n'existe pas via authselect :
Code BASH :
authselect enable-feature with-mkhomedir
Et on active comme demandé le service oddjobd :
Code BASH :
systemctl enable --now oddjobd
Une fois tout cela fait, on peut tester une connexion avec un utilisateur créé précédemment.
Je me connecte avec le compte adrien précédemment créé, et le système me demande de changer le mot de passe de suite :
Code BASH :
ssh adrien@192.168.21.222
Code :
Password:
Password expired. Change your password now.
Current Password:
New password:
Retype new password:
Quelques opérations basiques en ligne de commande
Ajouter un utilisateur :
Code BASH :
ipa user-add identifiantducompte --first=Prenom --last=Nom --password
Changer un mot de passe :
Code BASH :
ipa passwd identifiantducompte
Désactiver un compte :
Code BASH :
ipa user-disable identifiantducompte
Réactiver un compte :
Code BASH :
ipa user-enable identifiantducompte
Chercher un compte :
Code BASH :
ipa user-find motifderecherche
Supprimer un compte :
Code BASH :
ipa user-del identifiantducompte
Ajouter un groupe :
Code BASH :
ipa group-add --desc='Responsables Informatique' respinfo
Ajouter un compte au groupe :
Code BASH :
ipa group-add-member --users=adrien respinfo
Chercher des groupes :
Code BASH :
ipa group-find motifderecherche
Supprimer un groupe :
Code BASH :
ipa group-del nomdugroupe
FreeIPA avec une console web
C'est quand même mieux avec une interface web
On y accède en https avec le nom du serveur : https://c1.linuxtricks.lan/
Et voilà, notre serveur FreeIPA est opérationnel !