Nota

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:

Prerequisiti

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.

  1. Aprire un terminale sul Luna Desktop.

  2. Duplicare il progetto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Passare alla directory di lavoro.

    cd linux-virt-labs/ol
    
  4. Installare le raccolte richieste.

    ansible-galaxy collection install -r requirements.yml
    
  5. Aggiornare la configurazione dell'istanza di Oracle Linux.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "freeipa"
        type: "server"
    EOF
    
  6. 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 imposta ansible_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.

  1. Aprire un terminale e connettersi tramite SSH all'istanza freeipa.

    ssh oracle@<ip_address_of_instance>
    
  2. Verificare il nome host del server.

    sudo hostname
    

    L'output non deve restituire localhost o localhost6.

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.

  1. Verificare il nome FQDN. e la relativa lunghezza.

    hostname -f
    
  2. Recupera la durata del FQDN

    echo $(hostname -f) | wc -m
    

Conferma risoluzione nome.

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

  2. 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. Sia host che dig fanno parte del pacchetto bind-utils, che fornisce diverse utility per eseguire query sui name server DNS.

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

  1. Aggiungere il servizio firewalld.

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
  2. Ricaricare il servizio firewalld in modo che le modifiche diventino effettive.

    sudo firewall-cmd --reload
    

Installazione dei pacchetti richiesti

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

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

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

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

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. 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]:
    
  4. 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): 
    
  5. 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]:
    
  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 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)

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

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.

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

  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
      

      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.

    2. 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 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: 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"
      
    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=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
    
  4. 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).

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

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

    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.

  1. Generare un token per l'utente admin.

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

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

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

  1. 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'utente admin predefinito. Il server FreeIPA richiede il corretto funzionamento del gruppo admin.

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

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

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.