Ricerca nel sito web

Installa e configura il server FreeIPA su Rocky Linux 8


La guida di oggi riguarderà l'installazione e la configurazione di FreeIPA Server sul sistema Rocky Linux 8. FreeIPA è una soluzione open source che fornisce un modo unificato e centralizzato per gestire l'autenticazione, le policy, gli archivi di identità e le policy di autorizzazione in un dominio basato su Linux. La soluzione è creata per ridurre l'overhead per gli amministratori Linux nella gestione di diversi sistemi e servizi individualmente nell'infrastruttura. Con la soluzione FreeIPA Identity Management, gli amministratori di sistema possono impostare diversi livelli di accesso per gli utenti utilizzando il controllo degli accessi basato sull'host, la delega e altre regole.


FreeIPA è una delle poche soluzioni software centralizzate di libero utilizzo con policy, identità e autorizzazione adatte all'uso aziendale. Questa soluzione software dispone di alcune funzionalità avanzate e supporto per:

  • Grandi gruppi di macchine Linux
  • Integrazione nativa con Windows Active Directory
  • Funzionalità avanzate degli ambienti del sistema operativo Linux
  • Replica completa multimaster per maggiore ridondanza e scalabilità
  • Fornitura di interfacce di gestione estensibili (interfaccia utente Web, CLI, API XMLRPC e JSONRPC) e SDK Python


In questo breve articolo eseguiremo l'installazione e la configurazione di FreeIPA su Rocky Linux 8. Eseguiremo questa configurazione su un server Rocky Linux 8 appena installato. Poiché le porte dei servizi IPA potrebbero entrare in conflitto con altri servizi Linux, si consiglia di eseguire l'installazione su un nuovo sistema.

Principali vantaggi dell'utilizzo di FreeIPA

  • Gestione centrale dell'autenticazione : gestione centralizzata di utenti, macchine e servizi all'interno di grandi ambienti aziendali Linux/Unix.
  • Controllo degli accessi capillare: fornisce un metodo chiaro per definire le policy di controllo degli accessi per governare le identità degli utenti e la delega delle attività amministrative.
  • One Time Password (OTP): fornisce un metodo popolare per ottenere l'autenticazione a due fattori (2FA).
  • Connessione diretta ad Active Directory: puoi recuperare informazioni da Active Directory (AD) e unirti a un dominio o realm in modo standard.
  • Trust tra realm di Active Directory: in qualità di amministratore di sistema, puoi stabilire trust Kerberos tra foreste con Microsoft Active Directory. Ciò consente agli utenti esterni di Active Directory (AD) di accedere comodamente alle risorse nel dominio di gestione delle identità.
  • Servizio PKI (Integrated Public Key Infrastructure): fornisce servizi PKI che firmano e pubblicano certificati per host e servizi, elenco di revoche di certificati (CRL) e servizi OCSP per il software che convalida il certificato pubblicato e un'API per richiedere, mostrare e trovare certificati.

Passaggio 1: imposta nome host, fuso orario, sistema di aggiornamento

Cominciamo con la corretta configurazione del nome host del sistema.

sudo hostnamectl set-hostname idm.example.com

Il nome host deve essere un nome di dominio completo, ad esempio idm.example.com.

Una volta configurato il nome host, imposta il fuso orario del sistema in modo che corrisponda alla tua regione:

sudo timedatectl set-timezone Africa/Nairobi
sudo timedatectl set-local-rtc 0

Conferma le tue impostazioni:

$ timedatectl
               Local time: Fri 2023-07-16 21:28:38 EAT
           Universal time: Fri 2023-07-16 18:28:38 UTC
                 RTC time: Fri 2023-07-16 18:28:38
                Time zone: Africa/Nairobi (EAT, +0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Passaggio 2: verifica i requisiti di installazione di FreeIPA

Il server FreeIPA comprende i seguenti componenti chiave come elementi costitutivi

  • MIT Kerberos KDC - Fornisce una soluzione di autenticazione Single-Sign-on
  • 389 Directory Server : archivio dati principale e fornisce un'infrastruttura di directory LDAPv3 multimaster completa.
  • Sistema di certificazione dogtag : questo componente fornisce CA e RA utilizzate per le funzioni di gestione dei certificati.
  • Server DNS ISC Bind : Bind è il servizio di risoluzione dei nomi di dominio predefinito in FreeIPA.
  • Interfaccia utente Web/interfaccia CLI: utilizzata per gestire centralmente il controllo degli accessi, la delega delle attività amministrative e altre attività di amministrazione della rete.
  • Server NTP: per la sincronizzazione dell'ora tra la flotta di nodi uniti al dominio

Ecco i requisiti hardware minimi per l'installazione di FreeIPA Server su Rocky Linux 8:

  • Memoria minima 4 GB
  • Minimo 2 vCPU
  • Un nome di dominio completo utilizzato come dominio idM: dovrebbe essere risolvibile dal server DNS configurato nel sistema
  • Disponibilità di spazio su disco minimo di 10 GB

È possibile verificare i requisiti hardware utilizzando i comandi seguenti:

# CPU Cores
$ lcpu

# Memory check
$ free -h

# Disk space
$ lsblk  -fp

Modifica il file /etc/hosts e aggiungi l'indirizzo IP del server e il nome host corrispondente:

$ sudo vi /etc/hosts
192.168.10.6 idm.example.com

Conferma che tutti i requisiti siano soddisfatti, quindi procedi con l'installazione di FreeIPA Server su Rocky Linux 8.

Confermare che il nome host non si risolve nell'indirizzo di loopback, ma solo nell'indirizzo IP pubblico del sistema.

dig +short server.idm.example.com A

Verifica che la configurazione DNS inversa (record PTR) sia impostata correttamente nel tuo server DNS utilizzando il comando dig:

$ dig +short -x <ServerIPAddress>

Di seguito l'elenco delle porte utilizzate da IPA IdM per comunicare con i servizi:

Inoltre, le porte 8080, 8443 e 749 devono essere libere poiché vengono utilizzate internamente.

Passaggio 3: installa FreeIPA Server su Rocky Linux 8

Successivamente eseguiamo l'installazione dei pacchetti FreeIPA sul server Rocky Linux 8. Non è richiesto alcun repository RPM aggiuntivo, tutti i pacchetti e le dipendenze sono disponibili nei repository predefiniti del sistema operativo.

Aggiorna e riavvia il sistema

sudo yum -y update
sudo reboot

Nei sistemi basati su EL8, i pacchetti necessari per l'installazione del server FreeIPA vengono forniti in un flusso di moduli chiamato flusso DL1. Dovrai abilitare lo stream prima di eseguire l'installazione dei pacchetti dallo stream.

È possibile utilizzare il comando seguente per elencare i moduli che contengono pacchetti IdM.

$ sudo yum module list idm
Rocky Linux 8 - AppStream                                                                                                          23 MB/s | 7.8 MB     00:00
Rocky Linux 8 - BaseOS                                                                                                            8.0 MB/s | 3.5 MB     00:00
Rocky Linux 8 - Extras                                                                                                             21 kB/s | 3.8 kB     00:00
Rocky Linux 8 - AppStream
Name            Stream                Profiles                                            Summary
idm             DL1                   adtrust, client, common [d], dns, server            The Red Hat Enterprise Linux Identity Management system module
idm             client [d]            common [d]                                          RHEL IdM long term support client module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Come si vede dall'output DL1 è il modulo di Identity Management del sistema. Maggiori informazioni sul modulo possono essere verificate utilizzando il comando:

sudo dnf module info idm:DL1

Abilita il flusso idm:DL1:

sudo yum module enable idm:DL1

Esempio di output:

Rocky Linux 8 - AppStream                                                                                                         8.6 MB/s | 8.0 MB     00:00
Rocky Linux 8 - BaseOS                                                                                                             15 MB/s | 4.5 MB     00:00
Rocky Linux 8 - Extras                                                                                                             18 kB/s | 3.8 kB     00:00
Dependencies resolved.
==================================================================================================================================================================
 Package                                Architecture                          Version                                Repository                              Size
==================================================================================================================================================================
Enabling module streams:
 389-ds                                                                       1.4
 httpd                                                                        2.4
 idm                                                                          DL1
 pki-core                                                                     10.6
 pki-deps                                                                     10.6

Transaction Summary
==================================================================================================================================================================

Is this ok [y/N]: y
Complete!

Passa agli RPM forniti tramite il flusso idm:DL1:

sudo yum distro-sync

Scegli una delle seguenti opzioni, a seconda dei tuoi requisiti IdM:

  • Installazione del server IdM senza DNS integrato:
sudo yum module install idm:DL1/server
  • Installazione del server FreeIPA con DNS integrato:
sudo yum module install idm:DL1/dns
  • Installazione del server FreeIPA che ha un accordo di fiducia con Active Directory:
sudo yum module install idm:DL1/adtrust
  • Per più profili, ad esempio DNS e profili adtrust:
sudo yum module install idm:DL1/{dns,adtrust}
  • Per il cliente FreeIPA
sudo yum module install idm:DL1/client

Esegui il programma di installazione del server FreeIPA

Ora possiamo eseguire l'utilità ipa-server-install. Lo script di installazione creerà un file di registro in /var/log/ipaserver-install.log:

sudo ipa-server-install

Lo script richiede diverse impostazioni richieste e offre i valori predefiniti consigliati tra parentesi.

  • Per accettare un valore predefinito, premi Invio.
  • Per fornire un valore personalizzato, inserisci il valore richiesto.

Per installazione non interattiva per IdM senza DNS:

sudo ipa-server-install --realm EXAMPLE.COM \
  --ds-password DM_password \
  --admin-password admin_password \
  --unattended

# OR
sudo ipa-server-install \
    --domain example.com \
    --realm EXAMPLE.COM \
    --ds-password DM_password \
    --admin-password admin_password

Le opzioni minime richieste per l'installazione non interattiva sono:

  • --realm per fornire il nome dell'ambito Kerberos
  • --ds-password per fornire la password per il Directory Manager (DM), il super utente del Directory Server
  • --admin-password per fornire la password per admin, l'amministratore IdM
  • --unattended per consentire al processo di installazione di selezionare le opzioni predefinite per il nome host e il nome di dominio

Installazione non interattiva per IdM con DNS integrato:

sudo ipa-server-install --domain example.com --realm EXAMPLE.COM \
    --reverse-zone=10.168.192.in-addr.arpa. \
    --no-forwarders \
    --no-ntp \
    --setup-dns \
    --ds-password DM_password \
    --admin-password admin_password \
    --unattended

Installazione interattiva

Ecco l'estrazione dalla mia installazione:

$ sudo ipa-server-install

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.9.2

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 the KDC to enable PKINIT

To accept the default shown in brackets, press the Enter key.

Do you want to configure integrated DNS (BIND)? [no]: no

Enter the fully qualified domain name of the computer
on which you're setting up server software. Using the form
<hostname>.<domainname>
Example: master.example.com.

Server host name [idm.example.com]: idm.example.com

The domain name has been determined based on the host name.

Please confirm the domain name [example.com]: example.com

The kerberos protocol requires a Realm name to be defined.
This is typically the domain name converted to uppercase.

Please provide a realm name [EXAMPLE.COM]: EXAMPLE.COM
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: <Directory-Manager-Password>
Password (confirm): <Confirm-Directory-Manager-Password>

The IPA server requires an administrative user, named 'admin'.
This user is a regular system account used for IPA server administration.

IPA admin password:
Password (confirm):

Do you want to configure chrony with NTP server or pool address? [no]: yes
Enter NTP source server addresses separated by comma, or press Enter to skip: 0.de.pool.ntp.org,1.de.pool.ntp.org
Enter a NTP source pool address, or press Enter to skip:

The IPA Master Server will be configured with:
Hostname:       idm.example.com
IP address(es): 192.168.10.6
Domain name:    example.com
Realm name:     EXAMPLE.COM

The CA will be configured with:
Subject DN:   CN=Certificate Authority,O=EXAMPLE.COM
Subject base: O=EXAMPLE.COM
Chaining:     self-signed

NTP server:	0.de.pool.ntp.org
NTP server:	1.de.pool.ntp.org
Continue to configure the system with these values? [no]: yes

The following operations may take some minutes to complete.
Please wait until the prompt is returned.

Disabled p11-kit-proxy
Synchronizing time
Configuration of chrony was changed by installer.
Attempting to sync time with chronyc.
Process chronyc waitsync failed to sync time!
Unable to sync time with chrony server, assuming the time is in sync. Please check that 123 UDP port is opened, and any time server is on network.
Warning: IPA was unable to sync time with chrony!
         Time synchronization is required for IPA to work correctly
Configuring directory server (dirsrv). Estimated time: 30 seconds
  [1/41]: creating directory server instance
  [2/41]: tune ldbm plugin
.....

Output del comando di installazione riuscita:

......
Sudoers I/O plugin version 1.8.29
Client hostname: idm.example.com
Realm: EXAMPLE.COM
DNS Domain: example.com
IPA Server: idm.example.com
BaseDN: dc=example,dc=com

Configured sudoers in /etc/authselect/user-nsswitch.conf
Configured /etc/sssd/sssd.conf
Systemwide CA database updated.
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Could not update DNS SSHFP records.
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring example.com as NIS domain.
Client configuration complete.
The ipa-client-install command was successful

Please add records in this file to your DNS system: /tmp/ipa.system.records.hh7e7u2h.db
==============================================================================
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
		UDP Ports:
		  * 88, 464: kerberos
		  * 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

Se hai un firewall in esecuzione, consenti i seguenti servizi e porte nella zona predefinita:

# Without integrated DNS
sudo firewall-cmd --permanent --add-service={ntp,freeipa-4}

# With DNS
sudo firewall-cmd --permanent --add-service={ntp,dns,freeipa-4}

Quindi ricarica la configurazione di firewalld affinché la modifica abbia effetto immediato:

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Passaggio 4: accedi alla dashboard di gestione di FreeIPA

Dopo l'installazione è possibile accedere alla console di amministrazione basata sul web di FreeIPA Server utilizzando il nome host del server su https:

https://idm.example.com

Ignora l'avviso SSL facendo clic su "Avanzate " > "Procedi su idm.example.com (non sicuro)"

Accedi con nome utente e password amministratore impostati durante l'installazione.

Dopo aver effettuato correttamente l'accesso ti viene presentata un'interfaccia che ha questo aspetto:

Passaggio 5: proteggi il server FreeIPA con il certificato SSL Let's Encrypt

Dopo l'installazione ti consigliamo di utilizzare SSL sicuro sul tuo server FreeIPA. Se in esecuzione su un'istanza pubblica, segui la nostra guida nel collegamento successivo:

  • Proteggi il server FreeIPA con il certificato SSL Let's Encrypt

Passaggio 6: utilizzo dell'interfaccia CLI per gestire il server FreeIPA

Il comando ipa può essere utilizzato per eseguire tutte le operazioni del server FreeIPA.

Ma prima, ottieni il ticket Kerberos dell'utente amministratore:

$ sudo kinit admin
Password for [email : 

Controlla le informazioni sulla scadenza del biglietto utilizzando klist.

$ sudo klist
Ticket cache: KCM:0
Default principal: admin@COMPUTINGFORGEEKS.COM

Valid starting       Expires              Service principal
08/02/2021 17:42:38  08/03/2021 17:42:31  krbtgt/COMPUTINGFORGEEKS.COM@COMPUTINGFORGEEKS.COM

Imposta la shell predefinita dell'utente su /bin/bash.

$ sudo ipa config-mod --defaultshell=/bin/bash 
   Maximum username length: 32
   Home directory base: /home
   Default shell: /bin/bash
   Default users group: ipausers
   Default e-mail domain: example.com
   Search time limit: 2
   Search size limit: 100
   User search fields: uid,givenname,sn,telephonenumber,ou,title
   Group search fields: cn,description
   Enable migration mode: FALSE
   Certificate Subject base: O=EXAMPLE.COM
   Password Expiration Notification (days): 4
   Password plugin features: AllowNThash, KDC:Disable Last Success
   SELinux user map order: guest_u:s0$xguest_u:s0$user_u:s0$staff_u:s0-s0:c0.c1023$unconfined_u:s0-s0:c0.c1023
   Default SELinux user: unconfined_u:s0-s0:c0.c1023
   Default PAC types: MS-PAC, nfs:NONE
   IPA masters: ipa.example.com
   IPA CA servers: ipa.example.com
   IPA CA renewal master: ipa.example.com
   IPA master capable of PKINIT: ipa.example.com

Prova aggiungendo un account utente ed elencando gli account presenti:

$ sudo ipa user-add test  --first=Test --last=User \
[email  --password

Password: 
Enter Password again to verify: 
-------------------
 Added user "test"
-------------------
   User login: test
   First name: Test
   Last name: User
   Full name: Test User
   Display name: Test User
   Initials: TU
   Home directory: /home/test
   GECOS: Test User
   Login shell: /bin/bash
   Principal name: [email 
   Principal alias: [email 
   User password expiration: 20210802153038Z
   Email address: [email 
   UID: 1201400001
   GID: 1201400001
   Password: True
   Member of groups: ipausers
   Kerberos keys available: True

Per elencare gli account utente aggiunti, esegui:

$ sudo ipa user-find
---------------
2 users matched
---------------
  User login: admin
  Last name: Administrator
  Home directory: /home/admin
  Login shell: /bin/bash
  Principal alias: [email 
  UID: 1201400000
  GID: 1201400000
  Account disabled: False

  User login: test
  First name: Test
  Last name: User
  Home directory: /home/test
  Login shell: /bin/bash
  Principal name: [email 
  Principal alias: [email 
  Email address: [email 
  UID: 1201400001
  GID: 1201400001
  Account disabled: False
----------------------------
Number of entries returned 2
----------------------------

Prova ad accedere come utente test. Al tuo primo accesso ti verrà chiesto di modificare la password:

$ ssh test@localhost
Password: 
Password expired. Change your password now.
Current Password: 
New password: <Set new passwoird
Retype new password: 
Activate the web console with: systemctl enable --now cockpit.socket
[test1@ipa ~]$ id
uid=1201400003(test1) gid=1201400003(test1) groups=1201400003(test1) cont

Se desideri modificare il periodo di scadenza della password utente fai riferimento alla seguente guida:

  • Modifica la durata massima della scadenza della password dell'utente FreeIPA > 90 giorni

Puoi giocare con l'interfaccia per comprendere il posizionamento delle varie funzioni di gestione di FreeIPA. Nelle guide che seguono tratteremo esempi di utilizzo: come il server FreeIPA può aiutare nella gestione di utenti, gruppi, host e policy a livello di infrastruttura. Rimani connesso per gli aggiornamenti.

Libri Linux consigliati da leggere:

  • I migliori libri su Linux per principianti ed esperti
  • I migliori libri sulla programmazione del kernel Linux
  • I migliori libri di scripting Bash per Linux
  • I migliori libri di studio sulla certificazione RHCSA/RHCE
  • I migliori libri di certificazione CompTIA A+ più votati
  • I migliori libri di studio sulla certificazione LPIC-1 e LPIC-2

Articoli correlati: