Note :

Installer le serveur FreeIPA sur Oracle Linux

Présentation

FreeIPA est un système de gestion des identités et de l'authentification à code source libre pour les environnements en réseau Linux. Le serveur comprend le 389 Directory Server en tant que magasin de données central, offrant une fonctionnalité LDAPv3 multi-maître complète.

Au-delà de la portée de ce tutoriel, FreeIPA fournit également le MIT Kerberos pour l'authentification à connexion unique, l'autorité de certification Dogtag et la gestion facultative des noms de domaine au moyen d'un serveur de liaison ISC.

Ce tutoriel explique comment installer FreeIPA et configurer le répertoire LDAP inclus.

Objectifs

Ce tutoriel explique comment :

Préalables

Pour plus d'informations sur les exigences pour FreeIPA, voir le guide de démarrage rapide en amont.

Déployer Oracle Linux

Note : Si vous exécutez votre propre location, lisez les préalables du projet linux-virt-labs GitHub README.md et remplissez les conditions requises avant de déployer l'environnement de laboratoire.

  1. Ouvrez un terminal sur le Luna Desktop.

  2. Clonez le projet linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Accédez au répertoire de travail.

    cd linux-virt-labs/ol
    
  4. Installez les collections requises.

    ansible-galaxy collection install -r requirements.yml
    
  5. Mettez à jour la configuration de l'instance Oracle Linux.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "freeipa"
        type: "server"
    EOF
    
  6. Déployez l'environnement de l'exercice.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml" 
    

    L'environnement de laboratoire gratuit nécessite la variable supplémentaire local_python_interpreter, qui définit ansible_python_interpreter pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe l'ensemble RPM pour la trousse SDK Oracle Cloud Infrastructure pour Python, située sous les modules python3.6.

    La forme de déploiement par défaut utilise le processeur AMD et Oracle Linux 8. Pour utiliser une unité centrale Intel ou Oracle Linux 9, ajoutez -e instance_shape="VM.Standard3.Flex" ou -e os_version="9" à la commande de déploiement.

    Important : Attendez que le livre de jeu s'exécute avec succès et atteignez la tâche Mettre en pause. À ce stade du livre de jeu, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui imprime les adresses IP publiques et privées des noeuds qu'il déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.

Confirmer la configuration DNS du serveur

Le serveur FreeIPA nécessite une configuration DNS fonctionnelle. Les clients inscrits à l'aide de l'outil de ligne de commande ipa consultent le serveur par les paramètres xmlrpc_url et domain définis dans le fichier /etc/ipa/default.conf.

  1. Ouvrez un terminal et connectez-vous via SSH à l'instance freeipa.

    ssh oracle@<ip_address_of_instance>
    
  2. Vérifiez le nom d'hôte du serveur.

    sudo hostname
    

    La sortie ne doit pas retourner localhost ou localhost6.

Confirmez le nom de domaine complet.

FreeIPA comporte une limite de 64 caractères pour le nom de domaine complet qu'il valide lors de l'installation. Si le nom de domaine complet dépasse 64 caractères, utilisez sudo hostnamectl set-hostname NAME, où NAME est le nom de domaine complet, pour le raccourcir.

  1. Vérifiez le nom de domaine complet et sa longueur.

    hostname -f
    
  2. Obtenir la longueur du nom de domaine complet

    echo $(hostname -f) | wc -m
    

Confirmer la résolution du nom.

  1. Obtenez l'adresse IP du serveur.

    ip -4 -o addr show ens3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
    

    ens3 est le nom de l'interface réseau sur le système.

  2. Vérifiez la configuration DNS de transfert.

    host $(hostname -f)
    

    Une autre façon de vérifier la configuration DNS de transfert est d'utiliser dig +short $(hostname -f) A. host et dig font tous deux partie de l'ensemble bind-utils, qui fournit différents utilitaires pour interroger les serveurs de noms DNS.

  3. Vérifiez la configuration DNS inverse (enregistrements PTR).

    host $(hostname -i)
    

    Une alternative est d'utiliser dig +short -x $(hostname -i).

Ouvrir les ports de pare-feu requis

FreeIPA exige que plusieurs ports soient ouverts et disponibles pour communiquer avec ses services.

Service Ports Protocole
HTTP/HTTP 80 443 TCP
LDAP/LDAP 389 636 TCP
Kerberos 88 464 TCP et UDP
DNS 53 TCP et UDP
PNB 123 UDP

Oracle Linux fournit le service freeipa-4 pour ouvrir ces ports requis. Pour plus de détails, voir /usr/lib/firewalld/services/freeipa-4.xml. Le service freeipa-4 remplace les services freeipa-ldap et freeipa-ldaps obsolètes.

  1. Ajoutez le service firewalld.

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
  2. Rechargez le service de pare-feu pour que les modifications prennent effet.

    sudo firewall-cmd --reload
    

Installer les packages requis

  1. Activez le flux et le profil du module FreeIPA.

    Oracle Linux 8 :

    sudo dnf module enable -y idm:DL1
    

    Oracle Linux 9 et Oracle Linux 10 :

    Il n'y a rien à faire sur Oracle Linux 9, car les ensembles FreeIPA font partie du référentiel AppStream.

  2. Installez les ensembles pour un serveur FreeIPA sans les services DNS intégrés.

    sudo dnf install -y ipa-server
    

    Note : Nous n'utilisons pas les services DNS intégrés dans le cadre de ce tutoriel. Si nécessaire, ajoutez l'ensemble ipa-server-dns à la liste d'installation.

Installer et configurer le serveur FreeIPA

  1. Exécutez l'utilitaire d'installation.

    sudo ipa-server-install
    

    Le script commence par fournir l'emplacement du fichier journal d'installation et un sommaire des éléments inclus par le serveur FreeIPA.

    Exemple de sortie :

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

    Le script utilise ensuite plusieurs invites pour configurer la configuration du serveur. Le terminal affiche la réponse par défaut à l'invite entre crochets, et appuyez sur Enter accepte la réponse par défaut.

  2. Acceptez la réponse par défaut de no pour configurer le service DNS intégré.

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. Acceptez les noms d'hôte, de domaine et de domaine par défaut.

    Il s'agit des valeurs vérifiées au début de cet exercice. La configuration recommandée est que le nom du domaine correspond au nom du domaine DNS principal avec toutes les lettres majuscules.

    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. Entrez et confirmez les mots de passe du superutilisateur Directory Server et de l'utilisateur FreeIPA admin.

    Le superutilisateur du serveur de répertoire est mappé à cn=Directory Manager dans le répertoire.

    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. Acceptez les valeurs par défaut pour définir le nom de domaine NETBIOS et no pour configurer l'ordre chronologique.

    NetBIOS domain name [LV]: 
       
    Do you want to configure chrony with NTP server or pool address? [no]:
    
  6. Le script présente un résumé de la configuration du serveur.

  7. Entrez yes pour accepter la configuration du serveur.

    Continue to configure the system with these values? [no]: yes
    
  8. Le script procède à la configuration du serveur.

    Cette opération peut prendre plusieurs minutes.

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

    Une fois terminé, le script fournit :

    • Un résumé.
    • Liste des enregistrements à ajouter au système DNS.
    • Recommandation de sauvegarde des certificats d'autorité de certification générés.

    Les ports réseau requis sont déjà ouverts à l'aide du service freeipa-4 firewalld.

Tester le serveur FreeIPA

L'installation FreeIPA comprend un client de ligne de commande et un WebUI pour interagir avec le serveur. L'utilisation de WebUI ne fait pas partie de la portée de ce tutoriel.

Accéder à l'interface de ligne de commande

  1. Authentifiez l'utilisateur admin par rapport au domaine Kerberos.

    kinit admin
    

    À l'invite, entrez le mot de passe de l'utilisateur admin créé lors des étapes d'installation et de configuration. La commande kinit génère ensuite un ticket Kerberos.

  2. Liste des informations du ticket

    klist
    

    Exemple de sortie :

    [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. Obtenez une liste de tous les utilisateurs existants sur le serveur FreeIPA.

    ipa user-find
    

    Les résultats retournent l'utilisateur admin, qui est le seul utilisateur existant actuellement.

    Exemple de sortie :

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

Paramètres de sécurité et renforcement

Voici quelques façons d'utiliser le serveur FreeIPA en toute sécurité.

Désactiver les liaisons anonymes

Le serveur LDAP FreeIPA active les liaisons anonymes par défaut, exposant ainsi des paramètres de configuration et des valeurs de répertoire spécifiques.

L'attribut nsslapd-allow-anonymous-access contrôle ce comportement. Les valeurs acceptables sont les suivantes :

La recommandation est d'utiliser rootdse plutôt que off lors de l'interdiction des liaisons anonymes, car l'utilisation de off empêche également les clients externes de vérifier la configuration du serveur. Les clients non-domaines comme LDAP et les clients Web se connectent anonymement en lisant le fichier DSE racine pour obtenir les détails de la connexion.

  1. Vérifiez si les liaisons anonymes sont activées.

    ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
    
    • -x définit une authentification simple ou anonyme.
    • -h définit l'hôte du serveur LDAP.
    • -b définit le nom distinctif de base pour la recherche.

    Les paramètres de clé, y compris le nom distinctif de base du serveur FreeIPA, sont stockés dans le fichier /etc/ipa/default.conf.

    Exemple de sortie :

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

    Les résultats de la recherche renvoient l'arborescence complète du répertoire LDAP.

  2. Modifiez la configuration et désactivez les liaisons anonymes.

    La commande ldapmodify accepte un fichier LDIF avec les modifications à effectuer ou lit les opérations à partir de l'entrée standard.

    1. Créez le fichier 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 modification de plusieurs attributs est possible en les séparant par un tiret - sur une ligne par lui-même. Chaque modification supplémentaire commence par le type de modification d'attribut et donne les attributs requis.

    2. Appliquez les modifications LDIF.

      ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
      
      • -x définit une authentification simple ou anonyme.
      • -D définit le nom distinctif de liaison.
      • -W invite à entrer le mot de passe admin LDAP.
      • -H utilise l'URI (Uniform Resource Identifier) LDAP pour se connecter plutôt que l'hôte du serveur LDAP.
      • -ZZ démarre une demande TLS et force une réponse réussie.

      Note : -ZZ est requis en raison de l'utilisation de certificats auto-signés.

      Exemple de sortie :

      [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. Redémarrez le serveur FreeIPA.

      sudo systemctl restart ipa.service
      
  3. Vérifiez la modification en interrogeant anonymement le répertoire.

    ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
    

    Notez la réponse Anonymous access is not allowed.

    Exemple de sortie :

    [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. Vérifiez que l'interrogation du répertoire fonctionne à l'aide de l'authentification.

    ldapsearch -D uid=admin,cn=users,cn=accounts,dc=lv,dc=vcn,dc=oraclevcn,dc=com -W -H ldap://
    

    Exemple de sortie :

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

Vérifier que TLS est activé

À partir d'Oracle Linux 8, FreeIPA utilise la politique de chiffrement à l'échelle du système. Voir la page de manuel crypto-policies(7) pour plus de détails.

  1. Répertoriez la politique cryptographique actuelle à l'échelle du système.

    cat /etc/crypto-policies/config
    
  2. Listez les détails de la politique cryptographique.

    cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
    

    Exemple de sortie :

    [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"
    

    Notez que la politique DEFAULT utilise au moins TLS 1.2.

Vérifiez le statut du serveur FreeIPA

Le serveur FreeIPA comprend l'utilitaire ipactl pour voir le statut des services configurés. Le même utilitaire peut également démarrer, arrêter et redémarrer l'ensemble du serveur FreeIPA. Si vous avez besoin de start, stop ou restart composants individuels, utilisez systemctl COMMAND name.service.

  1. Afficher le statut de tous les services.

    sudo ipactl status
    

    Exemple de sortie :

    [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
    

    Utilisez sudo ipactl --help pour voir des options de commande supplémentaires.

Créer des utilisateurs et des groupes

Une fois l'installation et la configuration de base du serveur FreeIPA terminées, l'étape suivante consiste à gérer la gestion des identités, qui consiste à créer des utilisateurs et des groupes. Avant de faire cela, générez un jeton Kerberos.

  1. Générer un jeton pour l'utilisateur admin.

    kinit admin
    
  2. Obtenir une liste des jetons existants.

    klist
    

    Les jetons Kerberos sont valides pendant 24 heures par défaut. En raison de l'exécution précédente de ces commandes à l'étape intitulée "Accéder à l'interface de ligne de commande", la liste affiche le jeton d'origine plutôt que d'en créer un nouveau.

  3. Ajouter un nouveau groupe d'utilisateurs.

    FreeIPA définit un groupe d'utilisateurs comme un jeu d'utilisateurs avec des politiques de mot de passe standard, des privilèges et d'autres caractéristiques.

    Un groupe d'utilisateurs peut inclure les éléments suivants :

    • utilisateurs
    • autres groupes d'utilisateurs
    • utilisateurs externes qui existent en dehors de FreeIPA

   ipa group-add foo

Exemple de sortie :

[oracle@freeipa ~]$ ipa group-add foo
-----------------
Added group "foo"
-----------------
  Group name: foo
  GID: 1326400003

Le serveur FreeIPA prend en charge trois types de groupe :

Le groupe foo est un groupe d'utilisateurs POSIX. Pour spécifier un autre type de groupe, utilisez l'une des options suivantes :

  1. Obtenez une liste de tous les groupes d'utilisateurs existants.

    ipa group-find
    

    Exemple de sortie :

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

    Le serveur FreeIPA crée les groupes d'utilisateurs suivants lors de l'installation.

    • admins
    • ipausers
    • trust admins

    Avertissement : Ne supprimez pas le groupe admin car il contient l'utilisateur admin par défaut. Le serveur FreeIPA nécessite que le groupe admin fonctionne correctement.

  2. Ajouter un nouveau compte d'utilisateur.

    ipa user-add
    

    La commande exécute un script interactif demandant le jeu minimal de données dont FreeIPA a besoin pour créer un compte d'utilisateur.

    Exemple de sortie :

    [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
    

    Alternativement, l'exécution de la commande avec plusieurs options permet de créer un compte utilisateur en mode non interactif. Pour obtenir la liste des options disponibles, exécutez ipa user-add --help.

  3. Ajoutez le nouvel utilisateur au nouveau groupe d'utilisateurs.

    ipa group-add-member foo --users=oracle
    

    Exemple de sortie :

    [oracle@freeipa ~]$ ipa group-add-member foo --users=oracle
      Group name: foo
      GID: 1326400003
      Member users: oracle
    -------------------------
    Number of members added 1
    -------------------------
    

La commande ipa offre plus de fonctionnalités que ce qui est affiché. Pour des commandes supplémentaires, exécutez ipa help commands pour obtenir une liste complète.

Étapes suivantes

Cela conclut cet exercice, qui présente les bases de l'installation et de l'utilisation du serveur FreeIPA. Explorez plus loin en utilisant les liens ci-dessous ou en lisant les pages du manuel du produit, car FreeIPA a de nombreuses fonctionnalités supplémentaires au-delà de ce qui est couvert ici.

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation sur le produit, visitez Oracle Help Center.