Remarques :

Installation du serveur FreeIPA sur Oracle Linux

Introduction

FreeIPA est un système open source de gestion des identités et de l'authentification pour les environnements en réseau Linux. Le serveur inclut le serveur d'annuaire 389 en tant que magasin de données central, fournissant une fonctionnalité LDAPv3 multimaître complète.

Au-delà de la portée de ce tutoriel, FreeIPA fournit également MIT Kerberos pour l'authentification SSO, l'autorité de certification Dogtag et la gestion facultative des noms de domaine via un serveur Bind ISC.

Ce tutoriel indique comment installer FreeIPA et configurer l'annuaire LDAP inclus.

Objectifs

Dans ce tutoriel, vous allez apprendre à :

Prérequis

Pour plus d'informations sur les conditions requises pour FreeIPA, reportez-vous au Guide de démarrage rapide en amont.

Déployer Oracle Linux

Remarque : si vous êtes en cours d'exécution dans votre propre location, lisez le projet linux-virt-labs GitHub README.md et complétez les prérequis avant de déployer l'environnement d'exercice.

  1. Ouvrez un terminal sur le bureau Luna.

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

    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 d'exercice.

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

    L'environnement d'exercice libre requiert 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 le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.

    La forme de déploiement par défaut utilise l'UC AMD et Oracle Linux 8. Pour utiliser une CPU 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 guide de lecture s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui affiche les adresses IP publiques et privées des noeuds qu'elle déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.

Confirmer la configuration du DNS du serveur

Le serveur FreeIPA requiert une configuration DNS fonctionnelle. Les clients inscrits à l'aide de l'outil de ligne de commande ipa recherchent le serveur en fonction des paramètres xmlrpc_url et domain définis dans le fichier /etc/ipa/default.conf.

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

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

    sudo hostname
    

    La sortie ne doit pas renvoyer localhost ou localhost6.

Vérifiez le nom de domaine complet (FQDN).

FreeIPA est limité à 64 caractères pour le nom de domaine qualifié complet qu'il valide au cours de l'installation. Si le nom de domaine qualifié complet dépasse 64 caractères, utilisez sudo hostnamectl set-hostname NAME, où NAME est le nom de domaine qualifié complet, pour le raccourcir.

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

    hostname -f
    
  2. Obtenir la durée du nom de domaine qualifié complet

    echo $(hostname -f) | wc -m
    

Confirmez 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 consiste à utiliser dig +short $(hostname -f) A. host et dig font partie du package 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)
    

    Vous pouvez également utiliser dig +short -x $(hostname -i).

Ouverture des ports de pare-feu requis

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

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

Oracle Linux fournit le service freeipa-4 pour ouvrir ces ports requis. Pour plus d'informations, reportez-vous à /usr/lib/firewalld/services/freeipa-4.xml. Le service freeipa-4 remplace les services freeipa-ldap et freeipa-ldaps en phase d'abandon.

  1. Ajoutez le service firewalld.

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

    sudo firewall-cmd --reload
    

Installation des 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 packages FreeIPA font partie du référentiel AppStream.

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

    sudo dnf install -y ipa-server
    

    Remarque : nous n'utilisons pas les services DNS intégrés dans le cadre de ce tutoriel. Si nécessaire, ajoutez le package 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 récapitulatif de ce que le serveur FreeIPA inclut.

    Exemple de résultat :

    [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 le serveur. Le terminal affiche la réponse par défaut à l'invite entre crochets, et l'appui 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 de domaine correspond au nom de 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 Directory Server est mis en correspondance avec 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écapitulatif de la configuration du serveur.

  7. Saisissez yes pour accepter la configuration du serveur.

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

    Cette opération peut prendre quelques 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 le script terminé, il fournit les éléments suivants :

    • Un résumé.
    • Liste des enregistrements à ajouter au système DNS.
    • Recommandation de sauvegarde des certificats CA 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 inclut un client de ligne de commande et un élément WebUI pour interagir avec le serveur. L'utilisation de WebUI ne fait pas partie de ce tutoriel.

Accès à l'interface de ligne de commandes (CLI)

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

    kinit admin
    

    Lorsque vous y êtes invité, entrez le mot de passe de l'utilisateur admin créé au cours des étapes d'installation et de configuration. La commande kinit génère ensuite un ticket Kerberos.

  2. Répertorier les informations du ticket

    klist
    

    Exemple de résultat :

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

    ipa user-find
    

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

    Exemple de résultat :

    [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 d'annuaire spécifiques.

L'attribut nsslapd-allow-anonymous-access contrôle ce comportement. Valeurs acceptables :

Il est recommandé d'utiliser rootdse plutôt que off lorsque les liaisons anonymes sont interdites, car l'utilisation de off empêche également les clients externes de vérifier la configuration du serveur. Les clients non-domaines tels que LDAP et les clients Web se connectent de manière anonyme en lisant le fichier DSE racine pour obtenir les détails de 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 résultat :

    ...
    # 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 entière de l'annuaire 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. 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 vous invite à saisir le mot de passe LDAP admin.
      • -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.

      Remarque : -ZZ est requis en raison de l'utilisation de certificats autosignés.

      Exemple de résultat :

      [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 le répertoire de manière anonyme.

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

    Vous remarquerez la réponse Anonymous access is not allowed.

    Exemple de résultat :

    [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 résultat :

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

A partir d'Oracle Linux 8, FreeIPA utilise la stratégie cryptographique à l'échelle du système. Pour plus de détails, reportez-vous à la page de manuel crypto-policies(7).

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

    cat /etc/crypto-policies/config
    
  2. Répertoriez les détails de la stratégie de cryptage.

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

    Exemple de résultat :

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

    La stratégie DEFAULT utilise un minimum de TLS 1.2.

Vérifier le statut du serveur FreeIPA

Le serveur FreeIPA inclut l'utilitaire ipactl pour afficher 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 devez utiliser des composants individuels start, stop ou restart, utilisez systemctl COMMAND name.service.

  1. Afficher l'état de tous les services.

    sudo ipactl status
    

    Exemple de résultat :

    [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 afficher 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 le faire, 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ès à l'interface de ligne de commande" (CLI), 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 ensemble d'utilisateurs avec des stratégies de mot de passe standard, des privilèges et d'autres caractéristiques.

    Un groupe d'utilisateurs peut inclure :

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

   ipa group-add foo

Exemple de résultat :

[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 type de groupe différent, utilisez l'une des options suivantes :

  1. Obtenir la liste de tous les groupes d'utilisateurs existants.

    ipa group-find
    

    Exemple de résultat :

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

    ipa user-add
    

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

    Exemple de résultat :

    [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
    

    L'exécution de la commande avec plusieurs options permet également 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 résultat :

    [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 a plus de fonctionnalités que ce qui est affiché. Pour obtenir des commandes supplémentaires, exécutez ipa help commands pour obtenir une liste complète.

Etapes suivantes

Cet atelier présente les notions de base de l'installation et de l'utilisation du serveur FreeIPA. Explorez davantage les liens ci-dessous ou lisez les pages du manuel du produit, car FreeIPA propose de nombreuses fonctionnalités supplémentaires au-delà de ce qui est couvert ici.

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

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