Nota:

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

Di cosa hai bisogno?

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.

  1. 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.

  1. Verificare il nome host del server.

    sudo hostname
    

    L'output non deve restituire localhost o localhost6.

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.

  1. 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 lettera o.

Conferma risoluzione nome.

  1. 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.

  2. 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 e dig fanno parte del pacchetto bind-utils e forniscono utility diverse per eseguire query sui name server DNS.

  3. 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.

  1. Aggiungere il servizio firewalld.

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
    sudo firewall-cmd --reload
    

Installazione dei pacchetti richiesti

  1. 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

  1. 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.

  2. Accettare la risposta predefinita di no per configurare il servizio DNS integrato.

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. 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]:
    
  4. 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): 
    
  5. 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]:
    
  6. Lo script presenta un riepilogo della configurazione del server.

  7. Immettere yes per accettare la configurazione del server.

    Continue to configure the system with these values? [no]: yes
    
  8. 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

  1. 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 comando kinit genera quindi un ticket Kerberos.

  2. 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
    
  3. 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.

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.

  1. 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.

  2. 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.

    1. 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.

    2. 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 password admin 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"
      
    3. Riavviare il server FreeIPA.

      sudo systemctl restart ipa.service
      
  3. 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
    
  4. 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).

  1. Visualizzare il criterio di crittografia a livello di sistema corrente.

    cat /etc/crypto-policies/config
    
  2. 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 almeno TLS 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.

  1. 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.

  1. Generare un token per l'utente admin.

    kinit admin
    
  2. 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.

  3. 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:

Il gruppo foo è un gruppo di utenti POSIX. Per specificare un tipo di gruppo diverso, utilizzare una delle opzioni riportate di seguito.

   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.

Avvertenza: non eliminare il gruppo admin perché contiene l'utente admin predefinito. Il server FreeIPA richiede che il gruppo admin funzioni correttamente.

  1. 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.

  2. 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.