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 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=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