Remarque :

Installer le serveur FreeIPA sur Oracle Linux

Introduction

FreeIPA est un système de gestion des identités et de l'authentification open source pour les environnements en réseau Linux. Le serveur inclut le serveur d'annuaire 389 en tant que magasin de données central, offrant ainsi 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 de liaison ISC.

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

Objectifs

De quoi avez-vous besoin ?

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

Configurer l'environnement des exercices

Remarque : lorsque vous utilisez l'environnement d'atelier gratuit, reportez-vous à Notions de base des laboratoires Oracle Linux pour obtenir des informations sur la connexion et d'autres instructions d'utilisation.

  1. Ouvrez un terminal et connectez-vous via SSH à l'instance freeipa-server si elle n'est pas déjà connectée.

    ssh oracle@<ip_address_of_instance>
    

Confirmez le serveur HostName

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

  1. Vérifiez le nom d'hôte du serveur.

    sudo hostname
    

    La sortie ne doit pas renvoyer localhost ou localhost6.

Confirmez le nom de domaine complet (FQDN).

FreeIPA est limité à 64 caractères pour le nom de domaine qualifié complet qu'il valide lors 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
    
    echo $(hostname -f) | wc -m
    

    Remarque : le nom de domaine qualifié complet se compose de freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com, où <RND_SUBNET> est une chaîne aléatoire de 4 caractères préfixée par la lettre o.

Confirmer la résolution de noms.

  1. Obtenez l'adresse IP du serveur.

    sudo ip addr show
    

    Exemple de sortie :

    [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'adresse IPv4 apparaît sur la ligne commençant par inet.

  2. Vérification de la configuration DNS avant.

    host $(hostname -f)
    

    Exemple de sortie :

    [oracle@freeipa ~]$ host $(hostname -f)
    freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
    

    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)
    

    Exemple de sortie :

    [oracle@freeipa ~]$ host $(hostname -i)
    150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
    

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

Ouvrir les ports de pare-feu requis

FreeIPA requiert 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
SANS PROVISION 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
    
    sudo firewall-cmd --reload
    

Installation des packages obligatoires

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

    sudo dnf install ipa-server -y
    

    Remarque : les services DNS intégrés ne sont pas utilisés dans le cadre de ce tutoriel. Si nécessaire, ajoutez le package ipa-server-dns à la liste d'installation.

Installation et configuration du serveur FreeIPA

  1. Lancez l'utilitaire d'installation.

    sudo ipa-server-install
    

    Le script commence par indiquer l'emplacement du fichier journal d'installation et un récapitulatif des éléments inclus dans 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 le serveur. Le terminal affiche la réponse par défaut à l'invite entre crochets et appuie sur Enter pour accepter 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 le nom d'hôte, le nom de domaine et le nom de domaine par défaut.

    Il s'agit des valeurs vérifiées au début de cet exercice. Il est recommandé que le nom de domaine corresponde 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.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. Entrez et confirmez les mots de passe du superutilisateur du serveur d'annuaire et de l'utilisateur FreeIPA admin.

    Le superutilisateur du serveur d'annuaire correspond à cn=Directory Manager dans l'annuaire.

    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 le nom de domaine NETBIOS et configurez chrony.

    NetBIOS domain name [O6FB5]: 
    
    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. 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 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 terminé, le script fournit :

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

Test du serveur FreeIPA

L'installation FreeIPA inclut un client de ligne de commande et un WebUI pour interagir avec le serveur. L'utilisation de WebUI n'est pas traitée dans ce tutoriel.

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

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

    kinit admin
    

    Lorsque vous y êtes invité, saisissez 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 sortie :

    [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. 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 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@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.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 comme valeur 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. Les valeurs autorisées sont les suivantes :

Il est recommandé d'utiliser rootdse plutôt que off pour interdire les liaisons anonymes, 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 anonymement 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=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    
    • -x définit l'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.

    $RND_SUBNET est une variable d'environnement définie dans l'environnement d'exercice gratuit qui représente la chaîne aléatoire à 4 caractères du nom de domaine qualifié complet.

    Exemple de sortie :

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

    Les résultats de la recherche renvoient l'arborescence complète 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
      

      Il est possible de modifier plusieurs attributs en les séparant par un tiret - sur une ligne. Chaque modification supplémentaire commence par le type de modification d'attribut et fournit 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 l'authentification simple ou anonyme.
      • -D définit le nom distinctif (DN) de liaison.
      • -W invite à saisir le mot de passe admin LDAP.
      • -H utilise l'URI (Uniform Resource Identifier) LDAP pour la connexion plutôt que l'hôte du serveur LDAP.
      • -ZZ démarre une demande TLS et force la réussite de la réponse.

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

    ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    

    Observez la réponse Anonymous access is not allowed.

    Exemple de sortie :

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

    ldapsearch -D uid=admin,cn=users,cn=accounts,dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
    

    Exemple de sortie :

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

Vérifier que TLS est activé

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

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

    La stratégie DEFAULT utilise au minimum TLS 1.2.

Vérifiez 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. Pour start, stop ou restart composants individuels, utilisez systemctl COMMAND name.service.

  1. Affichez l'état 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 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 cela, générez un jeton Kerberos.

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

    kinit admin
    
  2. Obtenez la 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 au lieu d'en créer un nouveau.

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

   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.

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

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

    Vous pouvez également exécuter la commande avec plusieurs options pour créer un compte utilisateur en mode non interactif. Pour obtenir la liste des options disponibles, exécutez ipa user-add --help.

  2. 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 davantage de fonctionnalités que celles illustrées. Pour obtenir des commandes supplémentaires, exécutez ipa help commands pour obtenir une liste complète.

Synthèse

Ceci conclut cet atelier, qui présente les bases de l'installation et de l'utilisation du serveur FreeIPA. Pour en savoir plus, cliquez sur les liens ci-dessous ou lisez les pages du manuel du produit. FreeIPA propose en outre de nombreuses autres fonctionnalités que celles présentées ici.

Pour plus d'informations

Voir d'autres ressources connexes :

Ressources de formation supplémentaires

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

Pour consulter la documentation du produit, visitez le site Oracle Help Center.