Utiliser Fedora et CentOS

CentOS 8 : Installer et configurer FreeIPA

Table des matières

freeipa-logo



Introduction



Dans cet article,nous allons voir comment paramétrer un serveur FreeIPA sous CentOS 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/

freeipa-1-console

freeipa-2-console



Et voilà, notre serveur FreeIPA est opérationnel ! :magic:
Cette page a été vue 418 fois