Ricerca nel sito web

Installa FreeIPA Server su Rocky Linux 9/AlmaLinux 9


In questo articolo trattiamo in dettaglio l'installazione e la configurazione di FreeIPA Server sul sistema Rocky Linux 9/AlmaLinux 9. FreeIPA è una soluzione di gestione delle identità popolare e ampiamente utilizzata, utile nella gestione dell'autenticazione degli utenti, nella creazione e nell'applicazione di policy, archivi di identità e policy di autorizzazione in un dominio Linux. FreeIPA mira a eliminare il sovraccarico per gli amministratori Linux che lavorano in infrastrutture basate su Linux di medie e grandi dimensioni.

Alcune delle funzionalità avanzate di FreeIPA sono;

  • Supporto per grandi gruppi di macchine Linux
  • Ha un'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

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.

Installa FreeIPA Server su Rocky Linux 9/AlmaLinux 9

Assicurarsi che questa installazione venga eseguita su un sistema Rocky Linux 9/AlmaLinux 9 appena installato poiché le porte dei servizi IPA potrebbero entrare in conflitto con altri servizi Linux.

Passaggio 1: aggiorna il sistema, imposta il nome host, il fuso orario

Aggiorna il tuo server Rocky Linux/AlmaLinux 8:

sudo yum -y update
sudo reboot

Una volta riavviato, imposta il nome host del sistema corretto.

sudo hostnamectl set-hostname ipa.example.com

Il nome host deve essere un nome di dominio completo, ad esempio ipa.example.com. Una volta impostato, configura anche il fuso orario del sistema in modo che corrisponda alla tua regione:

sudo timedatectl set-timezone Africa/Nairobi

Conferma le impostazioni del fuso orario:

$ timedatectl
               Local time: Wed 2022-07-27 21:44:27 EAT
           Universal time: Wed 2022-07-27 18:44:27 UTC
                 RTC time: Wed 2022-07-27 18:44:27
                Time zone: Africa/Nairobi (EAT, +0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Passaggio 2: controlla i prerequisiti di installazione del server FreeIPA

I componenti chiave del server FreeIPA sono:

  • 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.
  • Server DNS ISC Bind : Bind è il servizio di risoluzione dei nomi di dominio predefinito in FreeIPA.
  • Sistema di certificazione dogtag : questo componente fornisce CA e RA utilizzate per le funzioni di gestione dei certificati.
  • Server NTP: per la sincronizzazione dell'ora tra la flotta di nodi uniti al dominio
  • 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.

Requisiti hardware minimi per l'installazione di FreeIPA Server su Rocky Linux 9/AlmaLinux 9:

  • 4 GB RAM
  • 2 vCPU
  • FQDN – Deve essere risolvibile dal server DNS configurato nel sistema
  • Disponibilità di spazio su disco minimo di 10 GB

Utilizza i comandi condivisi di seguito per controllare CPU, memoria e spazio su disco sulla tua istanza Rocky Linux 9/AlmaLinux 9.

# CPU Cores
$ grep -c ^processor /proc/cpuinfo
4

# Memory check
$ free -h

# Disk space
$ lsblk  -fp

Aggiungi l'indirizzo IP del server FreeIPA e il suo nome DNS all'interno del file /etc/hosts:

$ sudo vi /etc/hosts
 172.20.30.252 ipa.example.com

Convalida le tue impostazioni IP:

$ hostname --ip-address
172.20.30.252

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

$ dig +short -x <ServerIPAddress>

Passaggio 3: installa e configura il server FreeIPA

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

Installa tutti i pacchetti server e client FreeIPA con i seguenti comandi:

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

Esegui il programma di installazione del server FreeIPA

Le configurazioni del server FreeIPA vengono eseguite utilizzando lo strumento da riga di comando 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=30.20.172.in-addr.arpa. \
    --no-forwarders \
    --no-ntp \
    --setup-dns \
    --ds-password StrongDMPassw0rd \
    --admin-password StrongDMPassw0rd \
    --unattended

Installazione interattiva del server FreeIPA

Vedi di seguito per le istruzioni complete che riceverai durante l'installazione e le risposte previste:

$ 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.8

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 SID generation
  * 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]: yes

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 [ipa.example.com]: ipa.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:       ipa.example.com
IP address(es): 172.20.30.252
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
.....

Se l'installazione del tuo server FreeIPA su Rocky Linux 9/AlmaLinux 9 ha avuto successo, aspettati un output simile a questo:

......
Sudoers I/O plugin version 1.8.29
Client hostname: ipa.example.com
Realm: EXAMPLE.COM
DNS Domain: example.com
IPA Server: ipa.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

Apri le porte del servizio FreeIPA sul firewall

Un elenco delle porte del servizio FreeIPA è riportato nella tabella seguente:

Apriamo le porte sul firewall utilizzando firewall-cmd:

sudo firewall-cmd --add-service={dns,ntp,freeipa-ldap,freeipa-ldaps} --permanent

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

sudo firewall-cmd --reload

Elenca i servizi consentiti sul firewall:

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens18
  sources:
  services: cockpit dhcpv6-client dns freeipa-ldap freeipa-ldaps ntp ssh
  ....

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://ipa.example.com

Ignora l'avviso SSL facendo clic su "Avanzate " > "Procedi su ipa.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 FreeIPA con Let's Encrypt SSL

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: gestisci FreeIPA utilizzando l'interfaccia CLI

Il comando ipa può essere utilizzato per eseguire tutte le operazioni del server FreeIPA. Ma prima, ottieni il ticket Kerberos dell'utente amministratore:

$ kinit admin
Password for [email :

La validità temporale del biglietto assegnato può essere verificata utilizzando klist:

$ klist
Ticket cache: KCM:0
Default principal: [email 

Valid starting               Expires                               Service principal
07/27/2022 17:42:38  07/28/2022 21:49:26          krbtgt/[email 

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

$ 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:

$ 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:

$ 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 password>
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.

Altre guide FreeIPA:

  • Configurare l'autenticazione utente oVirt/RHEV utilizzando FreeIPA LDAP
  • Esegui il server FreeIPA nei contenitori Docker/Podman
  • Gestisci utenti e gruppi in FreeIPA utilizzando la CLI

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: