Nota
- Questa esercitazione è disponibile in un ambiente di esercitazione pratica gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Quando completi il tuo laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Installare il server FreeIPA su Oracle Linux
Introduzione
FreeIPA è un sistema di gestione dell'identità e dell'autenticazione open source per gli ambienti di rete Linux. Il server include il server delle directory 389 come data store centrale, fornendo funzionalità LDAPv3 multi-master complete.
Oltre all'ambito di questa esercitazione, FreeIPA fornisce anche MIT Kerberos per l'autenticazione Single-Sign-on, l'autorità di certificazione Dogtag e la gestione facoltativa dei nomi di dominio tramite un server ISC Bind.
Questa esercitazione mostra come installare FreeIPA e configurare la directory LDAP inclusa.
Obiettivi
In questo tutorial, imparerai come:
- Installare il server FreeIPA
- Disabilita associazioni anonime
- Aggiungi utenti e gruppi
Prerequisiti
-
Minimo di un singolo sistema Oracle Linux
-
Ogni sistema deve avere Oracle Linux installato e configurato con:
- Account utente non root con accesso sudo
- Accesso a Internet
- Un FQDN (Fully Qualified Domain Name) che punta all'indirizzo IP del server
Per ulteriori informazioni sui requisiti di FreeIPA, vedere la Guida rapida a monte.
Implementa Oracle Linux
Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs
GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di laboratorio.
-
Aprire un terminale sul Luna Desktop.
-
Duplicare il progetto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Passare alla directory di lavoro.
cd linux-virt-labs/ol
-
Installare le raccolte richieste.
ansible-galaxy collection install -r requirements.yml
-
Aggiornare la configurazione dell'istanza di Oracle Linux.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "freeipa" type: "server" EOF
-
Implementare l'ambiente di laboratorio.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
L'ambiente di esercitazione pratica gratuito richiede l'aggiunta della variabile
local_python_interpreter
, che impostaansible_python_interpreter
per le riproduzioni eseguite su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9, aggiungere
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando di distribuzione.Importante: attendere che il playbook venga eseguito correttamente e raggiungere il task di sospensione. In questa fase del playbook, l'installazione di Oracle Linux è completa e le istanze sono pronte. Prendi nota del gioco precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.
Conferma configurazione DNS server
Il server FreeIPA richiede un'impostazione DNS funzionante. I client registrati utilizzando lo strumento della riga di comando ipa
cercano il server in base ai parametri xmlrpc_url
e domain
definiti nel file /etc/ipa/default.conf
.
-
Aprire un terminale e connettersi tramite SSH all'istanza freeipa.
ssh oracle@<ip_address_of_instance>
-
Verificare il nome host del server.
sudo hostname
L'output non deve restituire
localhost
olocalhost6
.
Confermare il nome dominio completo (FQDN)
FreeIPA ha una limitazione di 64 caratteri per il nome FQDN che convalida durante l'installazione. Se il nome FQDN supera i 64 caratteri, utilizzare sudo hostnamectl set-hostname NAME
, dove NAME
è il nome FQDN, per abbreviarlo.
-
Verificare il nome FQDN. e la relativa lunghezza.
hostname -f
-
Recupera la durata del FQDN
echo $(hostname -f) | wc -m
Conferma risoluzione nome.
-
Richiama l'indirizzo IP del server.
ip -4 -o addr show ens3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
dove
ens3
è il nome dell'interfaccia di rete del sistema. -
Verificare la configurazione DNS di inoltro.
host $(hostname -f)
Un altro modo per verificare la configurazione DNS in avanti è quello di utilizzare
dig +short $(hostname -f) A
. Siahost
chedig
fanno parte del pacchettobind-utils
, che fornisce diverse utility per eseguire query sui name server DNS. -
Verificare la configurazione DNS inversa (record PTR).
host $(hostname -i)
Un'alternativa è usare
dig +short -x $(hostname -i)
.
Apertura delle porte del firewall richieste
FreeIPA richiede che diverse porte siano aperte e disponibili per comunicare con i propri servizi.
Servizio | Porte | Protocollo |
---|---|---|
HTTP/HTTPS | 80.443 | TCP |
LDAP/LDAP | 389.636 | TCP |
Kerberos | 88.464 | TCP e UDP |
DNS | 53 | TCP e UDP |
NTP | 123 | UDP |
Oracle Linux fornisce il servizio freeipa-4
per aprire queste porte necessarie. Per ulteriori informazioni, vedere /usr/lib/firewalld/services/freeipa-4.xml
. Il servizio freeipa-4
sostituisce i servizi freeipa-ldap
e freeipa-ldaps
non più validi.
-
Aggiungere il servizio
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
-
Ricaricare il servizio firewalld in modo che le modifiche diventino effettive.
sudo firewall-cmd --reload
Installazione dei pacchetti richiesti
-
Abilitare il flusso e il profilo del modulo FreeIPA.
Oracle Linux 8:
sudo dnf module enable -y idm:DL1
Oracle Linux 9 e Oracle Linux 10:
Non è necessario eseguire alcuna operazione su Oracle Linux 9 poiché i pacchetti FreeIPA fanno parte del repository AppStream.
-
Installare i pacchetti per un server FreeIPA senza i servizi DNS integrati.
sudo dnf install -y ipa-server
Nota: i servizi DNS integrati non vengono utilizzati in questa esercitazione. Se necessario, aggiungere il pacchetto
ipa-server-dns
all'elenco di installazione.
Installare e configurare il server FreeIPA
-
Eseguire la utility di installazione.
sudo ipa-server-install
Lo script inizia fornendo la posizione del file di log di installazione e un riepilogo degli elementi inclusi nel server FreeIPA.
Output di esempio:
[oracle@freeipa ~]$ 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 ...
Lo script utilizza quindi diversi prompt per impostare la configurazione del server. Il terminale mostra la risposta predefinita al prompt tra parentesi e premendo
Enter
si accetta la risposta predefinita. -
Accettare la risposta predefinita di
no
per configurare il servizio DNS integrato.Do you want to configure integrated DNS (BIND)? [no]:
-
Accettare i nomi di host, dominio e realm predefiniti.
Questi sono i valori verificati all'inizio di questo laboratorio. La configurazione consigliata prevede che il nome del realm corrisponda al nome di dominio DNS primario con tutte le lettere maiuscole.
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 [freeipa.lv.vcn.oraclevcn.com]: The domain name has been determined based on the host name. Please confirm the domain name [lv.vcn.oraclevcn.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 [LV.VCN.ORACLEVCN.COM]:
-
Immettere e confermare le password per il superutente del server directory e per l'utente FreeIPA
admin
.Il superutente del server delle directory esegue il mapping a
cn=Directory Manager
all'interno della directory.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): 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):
-
Accettare le impostazioni predefinite per impostare il nome di dominio NETBIOS e
no
per configurare la cronologia.NetBIOS domain name [LV]: Do you want to configure chrony with NTP server or pool address? [no]:
-
Lo script presenta un riepilogo della configurazione del server.
-
Immettere
yes
per accettare la configurazione del server.Continue to configure the system with these values? [no]: yes
-
Lo script procede alla configurazione del server.
Il completamento di questa operazione può richiedere alcuni minuti.
... Client configuration complete. The ipa-client-install command was successful Please add records in this file to your DNS system: /tmp/ipa.system.records.mv9i0ec2.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
Al termine, lo script fornisce:
- Un riassunto.
- Elenco di record da aggiungere al sistema DNS.
- Suggerimento per il backup dei certificati CA generati.
Le porte di rete necessarie sono già aperte utilizzando il servizio
freeipa-4
firewalld
.
Test del server FreeIPA
L'installazione FreeIPA include un client dalla riga di comando e un file WebUI per l'interazione con il server. L'utilizzo di WebUI non rientra nell'ambito di questa esercitazione.
Accedere all'interfaccia CLI (Command Line Interface)
-
Autenticare l'utente
admin
nel realm Kerberos.kinit admin
Quando richiesto, immettere la password per l'utente
admin
creato durante i passi di installazione e configurazione. Il comandokinit
genera quindi un ticket Kerberos. -
Elenca le informazioni del ticket
klist
Output di esempio:
[oracle@freeipa ~]$ sudo klist Ticket cache: KCM:0 Default principal: admin@LV.VCN.ORACLEVCN.COM Valid starting Expires Service principal 09/28/2022 14:05:46 09/29/2022 13:05:53 krbtgt/LV.VCN.ORACLEVCN.COM@LV.VCN.ORACLEVCN.COM
-
Ottenere una lista di tutti gli utenti esistenti sul server FreeIPA.
ipa user-find
I risultati restituiscono l'utente
admin
, che è l'unico utente attualmente esistente.Output di esempio:
[oracle@freeipa ~]$ sudo ipa user-find -------------- 1 user matched -------------- User login: admin Last name: Administrator Home directory: /home/admin Login shell: /bin/bash Principal alias: admin@LV.VCN.ORACLEVCN.COM, root@LV.VCN.ORACLEVCN.COM UID: 872200000 GID: 872200000 Account disabled: False ---------------------------- Number of entries returned 1 ----------------------------
Impostazioni e protezione avanzata di sicurezza
Di seguito sono riportati alcuni modi per utilizzare il server FreeIPA in modo sicuro.
Disabilita associazioni anonime
Il server LDAP FreeIPA abilita le associazioni anonime come impostazione predefinita, esponendo così impostazioni di configurazione e valori di directory specifici.
L'attributo nsslapd-allow-anonymous-access
controlla questo funzionamento. I valori accettabili includono:
on
: consente tutte le associazioni anonime (impostazione predefinita)rootdse
: consente le associazioni anonime solo per le informazioni DSE radiceoff
: non consente alcuna associazione anonima
Si consiglia di utilizzare rootdse
anziché off
quando non si consentono le associazioni anonime, poiché l'uso di off
impedisce anche ai client esterni di controllare la configurazione del server. I client non di dominio come LDAP e i client Web si connettono in modo anonimo leggendo il file DSE root per ottenere i dettagli di connessione.
-
Controllare se le associazioni anonime sono abilitate.
ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
-x
imposta l'autenticazione semplice o anonima.-h
imposta l'host del server LDAP.-b
imposta il DN base per la ricerca.
Le impostazioni della chiave, incluso il DN base per il server FreeIPA, vengono memorizzate nel file
/etc/ipa/default.conf
.Output di esempio:
... # Default SMB Group, groups, accounts, lv.vcn.oraclevcn.com dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=lv,dc=vcn,dc=oraclevc n,dc=com cn: Default SMB Group description: Fallback group for primary group RID, do not add users to this gr oup objectClass: top objectClass: ipaobject objectClass: posixgroup objectClass: ipantgroupattrs ipaUniqueID: 0c9cf178-4324-11ed-bf0b-02001704fe22 gidNumber: 921600001 ipaNTSecurityIdentifier: S-1-5-21-2697967063-3375457457-2974965896-1001 # search result search: 2 result: 0 Success # numResponses: 110 # numEntries: 109
I risultati della ricerca restituiscono l'intera struttura per la directory LDAP.
-
Modificare la configurazione e disabilitare le associazioni anonime.
Il comando
ldapmodify
accetta un file LDIF con le modifiche da apportare o legge le operazioni dall'input standard.-
Creare il file LDIF.
cat << 'EOF' | tee ~/disable_anon_bind.ldif > /dev/null dn: cn=config changetype: modify replace: nsslapd-allow-anonymous-access nsslapd-allow-anonymous-access: rootdse EOF
La modifica di più attributi è possibile separandoli con un trattino
-
su una riga da solo. Ogni modifica aggiuntiva inizia con il tipo di modifica dell'attributo e fornisce gli attributi richiesti. -
Applica le modifiche LDIF.
ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
-x
imposta l'autenticazione semplice o anonima.-D
imposta il DN di autenticazione.-W
richiede la passwordadmin
LDAP.-H
utilizza l'URI (Uniform Resource Identifier) LDAP per connettersi anziché l'host del server LDAP.-ZZ
avvia una richiesta TLS e forza una risposta riuscita.
Nota: per l'uso dei certificati autofirmati è necessario disporre di
-ZZ
.Output di esempio:
[oracle@freeipa ~]$ ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif Enter LDAP Password: modifying entry "cn=config"
-
Riavviare il server FreeIPA.
sudo systemctl restart ipa.service
-
-
Verificare la modifica eseguendo una query anonima sulla directory.
ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
Osservare la risposta
Anonymous access is not allowed
.Output di esempio:
[oracle@freeipa ~]$ ldapsearch -x -h freeipa.lv.vcn.oraclevcn.com -b dc=lv,dc=vcn,dc=oraclevcn,dc=com # extended LDIF # # LDAPv3 # base <dc=lv,dc=vcn,dc=oraclevcn,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 48 Inappropriate authentication text: Anonymous access is not allowed. # numResponses: 1
-
Verificare che la query sulla directory funzioni utilizzando l'autenticazione.
ldapsearch -D uid=admin,cn=users,cn=accounts,dc=lv,dc=vcn,dc=oraclevcn,dc=com -W -H ldap://
Output di esempio:
... # freeipa.lv.vcn.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, lv.vcn.oraclevcn.com dn: dnaHostname=freeipa.lv.vcn.oraclevcn.com+dnaPortNum=389,cn=subord inate-ids,cn=dna,cn=ipa,cn=etc,dc=lv,dc=vcn,dc=oraclevcn,dc=com objectClass: dnaSharedConfig objectClass: top dnaHostname: freeipa.lv.vcn.oraclevcn.com dnaPortNum: 389 dnaSecurePortNum: 636 dnaRemainingValues: 32766 # search result search: 2 result: 0 Success # numResponses: 475 # numEntries: 474
Verifica TLS abilitata
A partire da Oracle Linux 8, FreeIPA utilizza il criterio di crittografia a livello di sistema. Per maggiori dettagli, vedere la pagina man crypto-policies(7)
.
-
Elencare il criterio di crittografia corrente a livello di sistema.
cat /etc/crypto-policies/config
-
Elencare i dettagli dei criteri crittografici.
cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
Output di esempio:
[oracle@freeipa ~]$ cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt library= name=Policy NSS=flags=policyOnly,moduleDB config="disallow=ALL allow=HMAC-SHA256:HMAC-SHA1:HMAC-SHA384:HMAC-SHA512:CURVE25519:SECP256R1:SECP384R1:SECP521R1:aes256-gcm:chacha20-poly1305:aes256-cbc:aes128-gcm:aes128-cb > c:SHA256:SHA384:SHA512:SHA224:ECDHE-RSA:ECDHE-ECDSA:RSA:DHE-RSA:ECDSA:RSA-PSS:RSA-PKCS:tls-version-min=tls1.2:dtls-version-min=dtls1.2:DH-MIN=2048:DSA-MIN=2048:RSA-MIN=2048"
Notare che il criterio
DEFAULT
utilizza almenoTLS 1.2
.
Controllare lo stato del server FreeIPA
Il server FreeIPA include la utility ipactl
per visualizzare lo stato dei servizi configurati. La stessa utility può anche avviare, arrestare e riavviare l'intero server FreeIPA. Se è necessario utilizzare start
, stop
o restart
singoli componenti, utilizzare systemctl COMMAND name.service
.
-
Mostra lo stato di tutti i servizi.
sudo ipactl status
Output di esempio:
[oracle@freeipa ~]$ sudo ipactl status Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING httpd Service: RUNNING ipa-custodia Service: RUNNING pki-tomcatd Service: RUNNING ipa-otpd Service: RUNNING ipa: INFO: The ipactl command was successful
Usare
sudo ipactl --help
per visualizzare le opzioni di comando aggiuntive.
Crea utenti e gruppi
Con l'installazione e la configurazione di base del server FreeIPA completate, il passo successivo è la gestione delle identità, che consiste nella creazione di utenti e gruppi. Prima di eseguire questa operazione, generare un token Kerberos.
-
Generare un token per l'utente
admin
.kinit admin
-
Ottiene una lista di token esistenti.
klist
I token Kerberos sono validi per 24 ore per impostazione predefinita. A causa dell'esecuzione precedente di questi comandi nel passo intitolato "Access the Command-Line Interface (CLI)", l'elenco visualizza il token originale piuttosto che crearne uno nuovo.
-
Aggiunge un nuovo gruppo utenti.
FreeIPA definisce un gruppo di utenti come un set di utenti con criteri, privilegi e altre caratteristiche standard delle password.
Un gruppo di utenti può includere quanto segue:
- utenti
- altri gruppi di utenti
- utenti esterni esistenti al di fuori di FreeIPA
ipa group-add foo
Output di esempio:
[oracle@freeipa ~]$ ipa group-add foo ----------------- Added group "foo" ----------------- Group name: foo GID: 1326400003
Il server FreeIPA supporta i tre tipi di gruppo indicati di seguito.
- POSIX (predefinito)
- Non POSIX
- Esterno
Il gruppo foo
è un gruppo di utenti POSIX. Per specificare un tipo di gruppo diverso, utilizzare una delle opzioni riportate di seguito.
--nonposix
per creare un gruppo non POSIX--external
per creare un gruppo esterno
-
Recupera una lista di tutti i gruppi di utenti esistenti.
ipa group-find
Output di esempio:
[oracle@freeipa ~]$ ipa group-find ---------------- 5 groups matched ---------------- Group name: admins Description: Account administrators group GID: 1326400000 Group name: editors Description: Limited admins who can edit other users GID: 1326400002 Group name: foo GID: 1326400003 Group name: ipausers Description: Default group for all users Group name: trust admins Description: Trusts administrators group ---------------------------- Number of entries returned 5 ----------------------------
Il server FreeIPA crea i seguenti gruppi di utenti durante l'installazione.
admins
ipausers
trust admins
Avvertenza: non eliminare il gruppo
admin
poiché contiene l'utenteadmin
predefinito. Il server FreeIPA richiede il corretto funzionamento del gruppoadmin
. -
Aggiungere un nuovo account utente.
ipa user-add
Il comando esegue uno script interattivo in cui viene richiesto il set minimo di dati richiesto da FreeIPA per creare un account utente.
Output di esempio:
[oracle@freeipa ~]$ ipa user-add First name: Oracle Last name: User User login [ouser]: oracle ------------------- Added user "oracle" ------------------- User login: oracle First name: Oracle Last name: User Full name: Oracle User Display name: Oracle User Initials: OU Home directory: /home/oracle GECOS: Oracle User Login shell: /bin/sh Principal name: oracle@LV.VCN.ORACLEVCN.COM Principal alias: oracle@LV.VCN.ORACLEVCN.COM Email address: oracle@lv.vcn.oraclevcn.com UID: 1326400004 GID: 1326400004 Password: False Member of groups: ipausers Kerberos keys available: False
In alternativa, l'esecuzione del comando con diverse opzioni consente di creare un account utente in modalità non interattiva. Per ottenere un elenco delle opzioni disponibili, eseguire
ipa user-add --help
. -
Aggiungere il nuovo utente al nuovo gruppo di utenti.
ipa group-add-member foo --users=oracle
Output di esempio:
[oracle@freeipa ~]$ ipa group-add-member foo --users=oracle Group name: foo GID: 1326400003 Member users: oracle ------------------------- Number of members added 1 -------------------------
Il comando ipa
dispone di più funzionalità di quelle visualizzate. Per ulteriori comandi, eseguire ipa help commands
per un elenco completo.
Passi successivi
Ciò conclude questo laboratorio, che introduce le basi per l'installazione e l'utilizzo del server FreeIPA. Esplora ulteriormente utilizzando i link qui sotto o leggendo le pagine del manuale del prodotto, poiché FreeIPA ha molte funzionalità aggiuntive oltre a ciò che è coperto qui.
Collegamenti correlati
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.