Nota:
- Questa esercitazione è disponibile in un ambiente di laboratorio gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del proprio ambiente cloud.
Installare il server FreeIPA su Oracle Linux
Introduzione
FreeIPA è un sistema di gestione delle identità e delle autenticazione open source per gli ambienti di rete Linux. Il server include 389 Directory Server come data store centrale, fornendo funzionalità LDAPv3 multimaster complete.
Oltre all'ambito di questa esercitazione, FreeIPA fornisce anche MIT Kerberos per l'autenticazione Single Sign-On, Dogtag Certificate Authority e la gestione facoltativa dei nomi di dominio tramite un server ISC Bind.
Questa esercitazione spiega come installare FreeIPA e configurare la directory LDAP inclusa.
Obiettivi
- Installa server FreeIPA
- Disabilita associazioni anonime
- Aggiunta di utenti e gruppi
Di cosa hai bisogno?
- Un sistema con un minimo di 2 vCPUs, 2 GB di RAM e Oracle Linux installato
- Un FQDN (Fully Qualified Domain Name) che punta all'indirizzo IP del server
Per ulteriori informazioni sui requisiti per FreeIPA, vedere la Guida rapida a monte.
Impostare l'ambiente di laboratorio
Nota: quando si utilizza l'ambiente di laboratorio gratuito, vedere Oracle Linux Lab Basics per informazioni sulla connessione e altre istruzioni sull'uso.
-
Aprire un terminale e connettersi tramite ssh all'istanza freeipa-server se non è già connesso.
ssh oracle@<ip_address_of_instance>
Confermare il server HostName
Il server FreeIPA richiede una configurazione 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
.
-
Verificare il nome host del server.
sudo hostname
L'output non deve restituire
localhost
olocalhost6
.
Confermare il nome dominio completamente qualificato (FQDN).
FreeIPA ha una limitazione di 64 caratteri per l'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 accorciarlo.
-
Verificare l'FQDN e la relativa lunghezza.
hostname -f
echo $(hostname -f) | wc -m
Nota: FQDN è costituito da
freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com
, dove<RND_SUBNET>
è una stringa casuale di 4 caratteri preceduta dalla letterao
.
Conferma risoluzione nome.
-
Ottiene l'indirizzo IP del server.
sudo ip addr show
Output di esempio:
[oracle@freeipa ~]$ sudo ip addr show ... 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:00:17:02:b3:9e brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens3 valid_lft 85923sec preferred_lft 85923sec inet6 fe80::200:17ff:fe02:b39e/64 scope link noprefixroute valid_lft forever preferred_lft forever
L'indirizzo IPv4 viene visualizzato sulla riga che inizia con
inet
. -
Verificare la configurazione DNS di inoltro.
host $(hostname -f)
Output di esempio:
[oracle@freeipa ~]$ host $(hostname -f) freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
Un altro modo per verificare la configurazione DNS di inoltro consiste nell'utilizzare
dig +short $(hostname -f) A
.host
edig
fanno parte del pacchettobind-utils
e forniscono utility diverse per eseguire query sui name server DNS. -
Verificare la configurazione DNS inversa (record PTR).
host $(hostname -i)
Output di esempio:
[oracle@freeipa ~]$ host $(hostname -i) 150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
In alternativa, utilizzare
dig +short -x $(hostname -i)
.
Apertura delle porte firewall necessarie
FreeIPA richiede che diverse porte siano aperte e disponibili per comunicare con i relativi 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
sudo firewall-cmd --reload
Installazione dei pacchetti richiesti
-
Installare i pacchetti per un server FreeIPA senza i servizi DNS integrati.
sudo dnf install ipa-server -y
Nota: i servizi DNS integrati non vengono utilizzati nell'ambito di questa esercitazione. Se necessario, aggiungere il pacchetto
ipa-server-dns
all'elenco di installazione.
Installazione e configurazione del server FreeIPA
-
Eseguire la utility di installazione.
sudo ipa-server-install
Lo script inizia fornendo la posizione del file di log dell'installazione e un riepilogo degli elementi inclusi dal 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 il nome host, il nome di dominio e il nome del realm predefiniti.
Questi sono i valori verificati all'inizio di questo laboratorio. Si consiglia di far corrispondere il nome del realm al nome del 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.o6fb5.linuxvirt.oraclevcn.com]: The domain name has been determined based on the host name. Please confirm the domain name [o6fb5.linuxvirt.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 [O6FB5.linuxvirt.ORACLEVCN.COM]:
-
Immettere e confermare le password per l'utente privilegiato del server delle directory e l'utente FreeIPA
admin
.L'utente privilegiato del server delle directory è mappato 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 il nome dominio NETBIOS e la configurazione di chrony.
NetBIOS domain name [O6FB5]: 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 sommario.
- Un elenco di record da aggiungere al sistema DNS.
- Si consiglia di eseguire il backup dei certificati CA generati.
Le porte di rete necessarie sono già aperte utilizzando il servizio
freeipa-4
firewalld
.
Eseguire il test del server FreeIPA
L'installazione FreeIPA include un client dalla riga di comando e un comando WebUI per l'interazione con il server. L'utilizzo di WebUI non rientra nell'ambito di questa esercitazione.
Accesso all'interfaccia della riga di comando
-
Autenticare l'utente
admin
nel realm Kerberos.kinit admin
Quando richiesto, immettere la password per l'utente
admin
creato durante l'installazione e la 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@O6FB5.LINUXVIRT.ORACLEVCN.COM Valid starting Expires Service principal 09/28/2022 14:05:46 09/29/2022 13:05:53 krbtgt/O6FB5.LINUXVIRT.ORACLEVCN.COM@O6FB5.LINUXVIRT.ORACLEVCN.COM
-
Ottieni un elenco di tutti gli utenti esistenti sul server FreeIPA.
ipa user-find
I risultati restituiscono l'utente
admin
, che è l'unico utente esistente al momento.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@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.ORACLEVCN.COM UID: 872200000 GID: 872200000 Account disabled: False ---------------------------- Number of entries returned 1 ----------------------------
Impostazioni di sicurezza e potenziamento
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. Di seguito sono riportati i valori consentiti.
on
: consente tutte le associazioni anonime (impostazione predefinita)rootdse
: consente le associazioni anonime solo per le informazioni DSE rootoff
: non consente associazioni anonime
Si consiglia di utilizzare rootdse
anziché off
quando non sono consentite le associazioni anonime, poiché l'utilizzo di off
impedisce anche ai client esterni di controllare la configurazione del server. I client non di dominio, come LDAP e Web Client, si connettono in forma anonima 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=$RND_SUBNET,dc=linuxvirt,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 delle chiavi, incluso il dn di base per il server FreeIPA, vengono memorizzate nel file
/etc/ipa/default.conf
.$RND_SUBNET
è una variabile di ambiente impostata nell'ambiente del laboratorio libero che rappresenta la stringa casuale da 4 caratteri nel nome FQDN.Output di esempio:
... # Default SMB Group, groups, accounts, o6fb5.linuxvirt.oraclevcn.com dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=o6fb5,dc=linuxvirt,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
È possibile modificare più attributi separandoli con un trattino
-
su una riga. Ogni modifica aggiuntiva inizia con il tipo di modifica dell'attributo e fornisce gli attributi richiesti. -
Applicare 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 bind.-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:
-ZZ
è obbligatorio a causa dell'utilizzo di certificati con firma automatica.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=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
Si noti la risposta
Anonymous access is not allowed
.Output di esempio:
[oracle@freeipa ~]$ ldapsearch -x -h freeipa.o6fb5.linuxvirt.oraclevcn.com -b dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com # extended LDIF # # LDAPv3 # base <dc=o6fb5,dc=linuxvirt,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=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
Output di esempio:
... # freeipa.o6fb5.linuxvirt.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, o6fb5.linuxvirt.oraclevcn.com dn: dnaHostname=freeipa.o6fb5.linuxvirt.oraclevcn.com+dnaPortNum=389,cn=subord inate-ids,cn=dna,cn=ipa,cn=etc,dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com objectClass: dnaSharedConfig objectClass: top dnaHostname: freeipa.o6fb5.linuxvirt.oraclevcn.com dnaPortNum: 389 dnaSecurePortNum: 636 dnaRemainingValues: 32766 # search result search: 2 result: 0 Success # numResponses: 475 # numEntries: 474
Verifica che TLS sia abilitato
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)
.
-
Visualizzare il criterio di crittografia a livello di sistema corrente.
cat /etc/crypto-policies/config
-
Elencare i dettagli dei criteri di crittografia.
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"
Si noti 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 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
Utilizzare
sudo ipactl --help
per visualizzare ulteriori opzioni di comando.
Crea utenti e gruppi
Con l'installazione e la configurazione di base del server FreeIPA completata, 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 la lista dei token esistenti.
klist
I token Kerberos sono validi per 24 ore per impostazione predefinita. A causa dell'esecuzione precedente di questi comandi nel passo "Access the Command-Line Interface (CLI)", l'elenco visualizza il token originale anziché crearne uno nuovo.
-
Aggiungere un nuovo gruppo di utenti.
FreeIPA definisce un gruppo di utenti come un set di utenti con criteri password standard, privilegi e altre caratteristiche.
Un gruppo di utenti può includere:
- 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 tre tipi di gruppo:
- POSIX (predefinito)
- Non POSIX
- esterna
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- Ottenere un elenco di tutti i gruppi 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 gruppi di utenti seguenti durante l'installazione.
admins
ipausers
trust admins
Avvertenza: non eliminare il gruppo
admin
perché contiene l'utenteadmin
predefinito. Il server FreeIPA richiede che il gruppoadmin
funzioni correttamente.
-
Aggiungere un nuovo account utente.
ipa user-add
Il comando esegue uno script interattivo che richiede il set minimo di dati di cui FreeIPA deve 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@OD1F5.LINUXVIRT.ORACLEVCN.COM Principal alias: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM Email address: oracle@od1f5.linuxvirt.oraclevcn.com UID: 1326400004 GID: 1326400004 Password: False Member of groups: ipausers Kerberos keys available: False
In alternativa, eseguire il comando con diverse opzioni consente di creare un account utente in modalità non interattiva. Per ottenere una lista di 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
offre più funzionalità di quelle mostrate. Per comandi aggiuntivi, eseguire ipa help commands
per un elenco completo.
Riepilogo
Questo conclude questo laboratorio, che introduce le nozioni di base per l'installazione e l'utilizzo del server FreeIPA. Esplora ulteriormente utilizzando i collegamenti riportati di seguito o leggendo le pagine del manuale del prodotto, poiché FreeIPA offre molte funzionalità aggiuntive oltre a quelle descritte qui.
Per ulteriori informazioni
Vedere altre risorse correlate:
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o visita altri contenuti di formazione gratuiti sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione sul prodotto, visitare Oracle Help Center.
Install FreeIPA Server on Oracle Linux
F71514-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.