Note :
- Ce tutoriel est disponible dans un environnement de laboratoire gratuit fourni par Oracle.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
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 :
- Installer le serveur FreeIPA
- Désactiver les liaisons anonymes
- Ajouter des utilisateurs et des groupes
Préalables
-
Minimum d'un seul système Oracle Linux
-
Oracle Linux doit être installé et configuré pour chaque système avec :
- Un compte utilisateur non racine avec accès sudo
- Accès à Internet
- Un nom de domaine complet (FQDN) pointant vers l'adresse IP de votre serveur
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.
-
Ouvrez un terminal sur le Luna Desktop.
-
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 collections requises.
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 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éfinitansible_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
.
-
Ouvrez un terminal et connectez-vous via SSH à l'instance freeipa.
ssh oracle@<ip_address_of_instance>
-
Vérifiez le nom d'hôte du serveur.
sudo hostname
La sortie ne doit pas retourner
localhost
oulocalhost6
.
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.
-
Vérifiez le nom de domaine complet et sa longueur.
hostname -f
-
Obtenir la longueur du nom de domaine complet
echo $(hostname -f) | wc -m
Confirmer 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 est d'utiliser
dig +short $(hostname -f) A
.host
etdig
font tous deux partie de l'ensemblebind-utils
, qui fournit différents utilitaires pour interroger les serveurs de noms DNS. -
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.
-
Ajoutez le service
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
-
Rechargez le service de pare-feu pour que les modifications prennent effet.
sudo firewall-cmd --reload
Installer les 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 ensembles FreeIPA font partie du référentiel AppStream.
-
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
-
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. -
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 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]:
-
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):
-
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ésumé de la configuration du serveur.
-
Entrez
yes
pour accepter la configuration du serveur.Continue to configure the system with these values? [no]: yes
-
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
-
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 commandekinit
génère ensuite un ticket Kerberos. -
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
-
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 :
on
: Autorise toutes les liaisons anonymes (par défaut)rootdse
: Autorise les liaisons anonymes uniquement pour les informations DSE racineoff
: Interdit toute liaison anonyme
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.
-
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.
-
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 par lui-même. 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
invite à entrer le mot de passeadmin
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"
-
Redémarrez le serveur FreeIPA.
sudo systemctl restart ipa.service
-
-
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
-
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.
-
Répertoriez la politique cryptographique actuelle à l'échelle du système.
cat /etc/crypto-policies/config
-
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 moinsTLS 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
.
-
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.
-
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éder à l'interface de ligne de commande", 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 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 :
- POSIX (par défaut)
- Non POSIX
- Externes
Le groupe foo
est un groupe d'utilisateurs POSIX. Pour spécifier un autre type de groupe, utilisez l'une des options suivantes :
--nonposix
pour créer un groupe non POSIX--external
pour créer un groupe externe
-
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'utilisateuradmin
par défaut. Le serveur FreeIPA nécessite que le groupeadmin
fonctionne correctement. -
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
. -
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.
Liens connexes
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.
Install FreeIPA Server on Oracle Linux
G45265-01