Remarques :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
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 à :
- Installer le serveur FreeIPA
- Désactiver les liaisons anonymes
- Ajouter des utilisateurs et des groupes
Prérequis
-
Minimum d'un seul système Oracle Linux
-
Oracle Linux doit être installé et configuré sur chaque système avec :
- Compte utilisateur non root avec accès sudo
- Accès à Internet
- Nom de domaine complet (FQDN) pointant vers l'adresse IP de votre serveur
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.
-
Ouvrez un terminal sur le bureau Luna.
-
Clonez le projet
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Accédez au répertoire de travail.
cd linux-virt-labs/ol
-
Installez les ensembles requis.
ansible-galaxy collection install -r requirements.yml
-
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
-
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éfinitansible_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
.
-
Ouvrez un terminal et connectez-vous à l'instance freeipa via SSH.
ssh oracle@<ip_address_of_instance>
-
Vérifiez le nom d'hôte du serveur.
sudo hostname
La sortie ne doit pas renvoyer
localhost
oulocalhost6
.
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.
-
Vérifiez le nom de domaine qualifié complet et sa longueur.
hostname -f
-
Obtenir la durée du nom de domaine qualifié complet
echo $(hostname -f) | wc -m
Confirmez la résolution du nom.
-
Obtenez l'adresse IP du serveur.
ip -4 -o addr show ens3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
Où
ens3
est le nom de l'interface réseau sur le système. -
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
etdig
font partie du packagebind-utils
, qui fournit différents utilitaires pour interroger les serveurs de noms DNS. -
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.
-
Ajoutez le service
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
-
Rechargez le service firewalld pour que les modifications prennent effet.
sudo firewall-cmd --reload
Installation des packages requis
-
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.
-
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 ;
-
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. -
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]:
-
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]:
-
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):
-
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]:
-
Le script présente un récapitulatif de la configuration du serveur.
-
Saisissez
yes
pour accepter la configuration du serveur.Continue to configure the system with these values? [no]: yes
-
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)
-
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 commandekinit
génère ensuite un ticket Kerberos. -
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
-
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 :
on
: autorise toutes les liaisons anonymes (valeur par défaut)rootdse
: autorise les liaisons anonymes uniquement pour les informations DSE racineoff
: interdit toute liaison anonyme
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.
-
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.
-
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.-
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. -
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 LDAPadmin
.-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"
-
Redémarrez le serveur FreeIPA.
sudo systemctl restart ipa.service
-
-
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
-
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)
.
-
Répertoriez la stratégie cryptographique actuelle à l'échelle du système.
cat /etc/crypto-policies/config
-
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 deTLS 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
.
-
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.
-
Générer un jeton pour l'utilisateur
admin
.kinit admin
-
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.
-
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 :
- POSIX (par défaut)
- Non POSIX
- Externe
Le groupe foo
est un groupe d'utilisateurs POSIX. Pour spécifier un type de groupe différent, utilisez l'une des options suivantes :
--nonposix
pour créer un groupe non POSIX--external
pour créer un groupe externe
-
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'utilisateuradmin
par défaut. Le serveur FreeIPA nécessite que le groupeadmin
fonctionne correctement. -
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
. -
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.
Liens connexes
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.