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 peradmin
, 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