Remarque :
- 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. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
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
- Installer le serveur FreeIPA
- Désactiver les liaisons anonymes
- Ajouter des utilisateurs et des groupes
De quoi avez-vous besoin ?
- Un système avec au minimum 2 vCPUs, 2 Go de RAM et Oracle Linux installé
- Un nom de domaine qualifié complet 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.
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.
-
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
.
-
Vérifiez le nom d'hôte du serveur.
sudo hostname
La sortie ne doit pas renvoyer
localhost
oulocalhost6
.
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.
-
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 lettreo
.
Confirmer la résolution de noms.
-
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
. -
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
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)
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.
-
Ajoutez le service
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
sudo firewall-cmd --reload
Installation des packages obligatoires
-
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
-
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. -
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 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]:
-
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):
-
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]:
-
Le script présente un récapitulatif 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 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)
-
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 commandekinit
génère ensuite un ticket Kerberos. -
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
-
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 :
on
: autorise toutes les liaisons anonymes (par défaut)rootdse
: autorise les liaisons anonymes uniquement pour les informations DSE racineoff
: n'autorise aucune liaison anonyme
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.
-
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.
-
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
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. -
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 passeadmin
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"
-
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=$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
-
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.
-
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 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 minimumTLS 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
.
-
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.
-
Générez un jeton pour l'utilisateur
admin
.kinit admin
-
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.
-
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 :
- POSIX (par défaut)
- Non POSIX
- Externe
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 la 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 requiert que le groupeadmin
fonctionne correctement.
-
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
. -
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.
Install FreeIPA Server on Oracle Linux
F71514-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.