Note:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Instalar el servidor FreeIPA en Oracle Linux
Introducción
FreeIPA es un sistema de gestión de autenticación e identidad de código abierto para entornos de red de Linux. El servidor incluye el servidor de directorios 389 como almacén de datos central, lo que proporciona la funcionalidad completa LDAPv3 de varios maestros.
Más allá del ámbito de este tutorial, FreeIPA también proporciona MIT Kerberos para autenticación de inicio de sesión único, la autoridad de certificación Dogtag y la gestión opcional de nombres de dominio a través de un servidor de enlace ISC.
En este tutorial se muestra cómo instalar FreeIPA y configurar el directorio LDAP incluido.
Objetivos
En este tutorial, aprenderá a:
- Instalar el servidor FreeIPA
- Desactivar enlaces anónimos
- Agregar Usuarios y Grupos
Requisitos
-
Mínimo de un único sistema Oracle Linux
-
Cada sistema debe tener Oracle Linux instalado y configurado con:
- Una cuenta de usuario no raíz con acceso sudo
- Acceso a internet
- Un FQDN (nombre de dominio completo) que apunta a la dirección IP de su servidor
Para obtener más información sobre los requisitos de FreeIPA, consulte la Guía de inicio rápido ascendente.
Despliegue de Oracle Linux
Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs
GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.
-
Abra un terminal en el escritorio de Luna.
-
Clone el proyecto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Cambie al directorio de trabajo.
cd linux-virt-labs/ol
-
Instale las recopilaciones necesarias.
ansible-galaxy collection install -r requirements.yml
-
Actualizar la configuración de la instancia de Oracle Linux.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "freeipa" type: "server" EOF
-
Despliegue el entorno de prácticas.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
El entorno de prácticas libres necesita la variable adicional
local_python_interpreter
, que defineansible_python_interpreter
para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete RPM para el SDK para Python de Oracle Cloud Infrastructure, que se encuentra en los módulos python3.6.La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU Intel u Oracle Linux 9, agregue
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando de despliegue.Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación de Oracle Linux y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria al ejecutar el ejercicio práctico.
Confirmación de la configuración de DNS del servidor
El servidor FreeIPA requiere una configuración de DNS en funcionamiento. Los clientes inscritos mediante la herramienta de línea de comandos ipa
buscan el servidor mediante los parámetros xmlrpc_url
y domain
definidos en el archivo /etc/ipa/default.conf
.
-
Abra un terminal y conéctese mediante SSH a la instancia de freeipa.
ssh oracle@<ip_address_of_instance>
-
Verifique el nombre de host del servidor.
sudo hostname
La salida no debe devolver
localhost
nilocalhost6
.
Confirme el nombre de dominio (FQDN) completo.
FreeIPA tiene una limitación de 64 caracteres para el FQDN que valida durante la instalación. Si el FQDN supera los 64 caracteres, utilice sudo hostnamectl set-hostname NAME
, donde NAME
es el FQDN, para acortarlo.
-
Verifique el FQDN y su longitud.
hostname -f
-
Obtener la longitud del FQDN
echo $(hostname -f) | wc -m
Confirme la resolución del nombre.
-
Obtener la dirección IP del servidor.
ip -4 -o addr show ens3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
Donde
ens3
es el nombre de la interfaz de red en el sistema. -
Verifique la configuración de DNS de reenvío.
host $(hostname -f)
Otra forma de verificar la configuración de DNS de reenvío es utilizar
dig +short $(hostname -f) A
. Tantohost
comodig
forman parte del paquetebind-utils
, que proporciona diferentes utilidades para consultar los servidores de nombres DNS. -
Verifique la configuración de DNS inverso (registros PTR).
host $(hostname -i)
Una alternativa es utilizar
dig +short -x $(hostname -i)
.
Abrir los puertos de firewall necesarios
FreeIPA requiere que varios puertos estén abiertos y disponibles para comunicarse con sus servicios.
Servicio | Puertos | Protocolo |
---|---|---|
HTTP/HTTPS | 80.443 | TCP |
LDAP/LDAP | 389.636 | TCP |
Kerberos | 88.464 | TCP y UDP |
DNS | 53 | TCP y UDP |
NTP | 123 | UDP |
Oracle Linux proporciona el servicio freeipa-4
para abrir estos puertos necesarios. Para obtener más información, consulte /usr/lib/firewalld/services/freeipa-4.xml
. El servicio freeipa-4
sustituye a los servicios freeipa-ldap
y freeipa-ldaps
en desuso.
-
Agregue el servicio
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
-
Vuelva a cargar el servicio firewalld para que se apliquen los cambios.
sudo firewall-cmd --reload
Instalación de los paquetes necesarios
-
Active el flujo y el perfil del módulo FreeIPA.
Oracle Linux 8:
sudo dnf module enable -y idm:DL1
Oracle Linux 9 y Oracle Linux 10:
No hay nada que hacer en Oracle Linux 9, ya que los paquetes FreeIPA forman parte del repositorio AppStream.
-
Instale los paquetes para un servidor FreeIPA sin los servicios DNS integrados.
sudo dnf install -y ipa-server
Nota: No utilizamos los servicios de DNS integrados como parte de este tutorial. Si es necesario, agregue el paquete
ipa-server-dns
a la lista de instalación.
Instalar y configurar el servidor FreeIPA
-
Ejecute la utilidad de instalación.
sudo ipa-server-install
La secuencia de comandos comienza proporcionando la ubicación del archivo log de instalación y un resumen de lo que incluye el servidor FreeIPA.
Salida de ejemplo:
[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 ...
A continuación, la secuencia de comandos utiliza varias peticiones de datos para configurar la configuración del servidor. El terminal muestra la respuesta por defecto a la petición de datos entre corchetes y al pulsar
Enter
se acepta la respuesta por defecto. -
Acepte la respuesta por defecto de
no
para configurar el servicio de DNS integrado.Do you want to configure integrated DNS (BIND)? [no]:
-
Acepte los nombres de host, dominio y dominio por defecto.
Estos son los valores verificados al principio de esta práctica de laboratorio. La configuración recomendada es que el nombre de dominio coincida con el nombre de dominio DNS principal con todas las letras en mayúsculas.
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]:
-
Introduzca y confirme las contraseñas para el superusuario del servidor de directorios y el usuario FreeIPA
admin
.El superusuario del servidor de directorios se asigna a
cn=Directory Manager
en el directorio.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):
-
Acepte los valores predeterminados para configurar el nombre de dominio NETBIOS y
no
para configurar la cronia.NetBIOS domain name [LV]: Do you want to configure chrony with NTP server or pool address? [no]:
-
La secuencia de comandos presenta un resumen de la configuración del servidor.
-
Introduzca
yes
para aceptar la configuración del servidor.Continue to configure the system with these values? [no]: yes
-
La secuencia de comandos continúa para configurar el servidor.
Esta operación podría tardar unos minutos.
... 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
Al finalizar, el script proporciona:
- Un resumen.
- Lista de registros para agregar al sistema DNS.
- Recomendación para realizar una copia de seguridad de los certificados de CA generados.
Los puertos de red necesarios ya están abiertos mediante el servicio
freeipa-4
firewalld
.
Prueba del servidor FreeIPA
La instalación de FreeIPA incluye un cliente de línea de comandos y un WebUI para interactuar con el servidor. El uso de WebUI está fuera del ámbito de este tutorial.
Acceso a la interfaz de línea de comandos (CLI)
-
Autenticar el usuario
admin
en el dominio Kerberos.kinit admin
Cuando se le solicite, introduzca la contraseña del usuario
admin
creado durante los pasos de instalación y configuración. El comandokinit
genera un ticket de Kerberos. -
Enumerar la información del ticket
klist
Salida de ejemplo:
[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
-
Obtenga una lista de todos los usuarios existentes en el servidor FreeIPA.
ipa user-find
Los resultados devuelven el usuario
admin
, que es el único usuario que existe actualmente.Salida de ejemplo:
[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 ----------------------------
Configuración y endurecimiento de seguridad
A continuación, se muestran algunas formas de utilizar el servidor FreeIPA de forma segura.
Desactivar enlaces anónimos
El servidor LDAP FreeIPA activa enlaces anónimos como valor por defecto, exponiendo así valores de directorio y valores de configuración específicos.
El atributo nsslapd-allow-anonymous-access
controla este comportamiento. Entre los valores aceptables se incluyen:
on
: permite todos los enlaces anónimos (por defecto)rootdse
: permite enlaces anónimos solo para la información de DSE raízoff
: no permite ningún enlace anónimo
La recomendación es utilizar rootdse
en lugar de off
al no permitir enlaces anónimos, ya que el uso de off
también impide que los clientes externos comprueben la configuración del servidor. Los clientes que no son de dominio como LDAP y los clientes web se conectan de forma anónima leyendo el archivo DSE raíz para obtener los detalles de conexión.
-
Compruebe si están activados los enlaces anónimos.
ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
-x
define la autenticación simple o anónima.-h
define el host del servidor LDAP.-b
define el DN base para la búsqueda.
Los valores de clave, incluido el dn base para el servidor FreeIPA, se almacenan en el archivo
/etc/ipa/default.conf
.Salida de ejemplo:
... # 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
Los resultados de la búsqueda devuelven todo el árbol para el directorio LDAP.
-
Modifique la configuración y desactive los enlaces anónimos.
El comando
ldapmodify
acepta un archivo LDIF con los cambios que se deben realizar o lee las operaciones de la entrada estándar.-
Cree el archivo 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
El cambio de varios atributos es posible separándolos con un carácter de guion
-
en una línea por sí mismo. Cada cambio adicional comienza con el tipo de cambio de atributo y proporciona los atributos necesarios. -
Aplique los cambios de LDIF.
ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
-x
define la autenticación simple o anónima.-D
define el DN de enlace.-W
solicita la contraseñaadmin
de LDAP.-H
utiliza el identificador uniforme de recursos (URI) de LDAP para conectarse en lugar del host del servidor LDAP.-ZZ
inicia una solicitud de TLS y fuerza una respuesta correcta.
Nota:
-ZZ
es necesario debido al uso de certificados autofirmados.Salida de ejemplo:
[oracle@freeipa ~]$ ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif Enter LDAP Password: modifying entry "cn=config"
-
Reinicie el servidor FreeIPA.
sudo systemctl restart ipa.service
-
-
Verifique la modificación consultando el directorio de forma anónima.
ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
Observe la respuesta
Anonymous access is not allowed
.Salida de ejemplo:
[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
-
Verifique que la consulta del directorio funciona mediante autenticación.
ldapsearch -D uid=admin,cn=users,cn=accounts,dc=lv,dc=vcn,dc=oraclevcn,dc=com -W -H ldap://
Salida de ejemplo:
... # 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
Verificar que TLS está activado
A partir de Oracle Linux 8, FreeIPA utiliza la política de cifrado de todo el sistema. Consulte la página del comando man crypto-policies(7)
para obtener más información.
-
Muestre la política criptográfica actual de todo el sistema.
cat /etc/crypto-policies/config
-
Muestre los detalles de la política de cifrado.
cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
Salida de ejemplo:
[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"
Observe que la política
DEFAULT
utiliza un mínimo deTLS 1.2
.
Compruebe el estado del servidor FreeIPA
El servidor FreeIPA incluye la utilidad ipactl
para ver el estado de los servicios configurados. La misma utilidad también puede iniciar, detener y reiniciar todo el servidor FreeIPA. Si necesita start
, stop
o restart
componentes individuales, utilice systemctl COMMAND name.service
.
-
Mostrar el estado de todos los servicios.
sudo ipactl status
Salida de ejemplo:
[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
Utilice
sudo ipactl --help
para ver opciones de comandos adicionales.
Crear Usuarios y Grupos
Con la instalación y configuración básicas del servidor FreeIPA completadas, el siguiente paso es manejar la gestión de identidades, que consiste en crear usuarios y grupos. Antes de hacer esto, genere un token Kerberos.
-
Genere un token para el usuario
admin
.kinit admin
-
Obtener una lista de los tokens existentes.
klist
Los tokens Kerberos son válidos durante 24 horas de forma predeterminada. Debido a que anteriormente se ejecutaban estos comandos en el paso titulado "Acceso a la interfaz de línea de comandos (CLI)", el listado muestra el token original en lugar de crear uno nuevo.
-
Agregar un grupo nuevo de usuarios.
FreeIPA define un grupo de usuarios como un juego de usuarios con políticas de contraseñas estándar, privilegios y otras características.
Un grupo de usuarios puede incluir:
- usuarios
- otros grupos de usuarios
- usuarios externos que existen fuera de FreeIPA
ipa group-add foo
Salida de ejemplo:
[oracle@freeipa ~]$ ipa group-add foo ----------------- Added group "foo" ----------------- Group name: foo GID: 1326400003
El servidor FreeIPA admite tres tipos de grupo:
- POSIX (por defecto)
- No POSIX
- Externa
El grupo foo
es un grupo de usuarios POSIX. Para especificar un tipo de grupo diferente, utilice una de estas opciones:
--nonposix
para crear un grupo que no sea POSIX--external
para crear un grupo externo
-
Obtener una lista de todos los grupos de usuarios existentes.
ipa group-find
Salida de ejemplo:
[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 ----------------------------
El servidor FreeIPA crea los siguientes grupos de usuarios durante la instalación.
admins
ipausers
trust admins
Advertencia: no suprima el grupo
admin
, ya que contiene el usuarioadmin
por defecto. El servidor FreeIPA requiere que el grupoadmin
funcione correctamente. -
Agregue una nueva cuenta de usuario.
ipa user-add
El comando ejecuta un script interactivo que solicita el juego mínimo de datos que FreeIPA necesita para crear una cuenta de usuario.
Salida de ejemplo:
[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
Como alternativa, la ejecución del comando con varias opciones permite crear una cuenta de usuario en un modo no interactivo. Para obtener una lista de las opciones disponibles, ejecute
ipa user-add --help
. -
Agregue el nuevo usuario al nuevo grupo.
ipa group-add-member foo --users=oracle
Salida de ejemplo:
[oracle@freeipa ~]$ ipa group-add-member foo --users=oracle Group name: foo GID: 1326400003 Member users: oracle ------------------------- Number of members added 1 -------------------------
El comando ipa
tiene más funcionalidad de la que se muestra. Para obtener comandos adicionales, ejecute ipa help commands
para obtener una lista completa.
Pasos Siguientes
Esto concluye este laboratorio, que presenta los conceptos básicos de la instalación y el uso del servidor FreeIPA. Explora más a través de los enlaces a continuación o lee las páginas del manual del producto, ya que FreeIPA tiene muchas funciones adicionales más allá de lo que se cubre aquí.
Enlaces relacionados
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.