Note:

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:

Requisitos

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.

  1. Abra un terminal en el escritorio de Luna.

  2. Clone el proyecto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Cambie al directorio de trabajo.

    cd linux-virt-labs/ol
    
  4. Instale las recopilaciones necesarias.

    ansible-galaxy collection install -r requirements.yml
    
  5. 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
    
  6. 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 define ansible_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.

  1. Abra un terminal y conéctese mediante SSH a la instancia de freeipa.

    ssh oracle@<ip_address_of_instance>
    
  2. Verifique el nombre de host del servidor.

    sudo hostname
    

    La salida no debe devolver localhost ni localhost6.

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.

  1. Verifique el FQDN y su longitud.

    hostname -f
    
  2. Obtener la longitud del FQDN

    echo $(hostname -f) | wc -m
    

Confirme la resolución del nombre.

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

  2. 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. Tanto host como dig forman parte del paquete bind-utils, que proporciona diferentes utilidades para consultar los servidores de nombres DNS.

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

  1. Agregue el servicio firewalld.

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
  2. Vuelva a cargar el servicio firewalld para que se apliquen los cambios.

    sudo firewall-cmd --reload
    

Instalación de los paquetes necesarios

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

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

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

  2. Acepte la respuesta por defecto de no para configurar el servicio de DNS integrado.

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. 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]:
    
  4. 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): 
    
  5. 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]:
    
  6. La secuencia de comandos presenta un resumen de la configuración del servidor.

  7. Introduzca yes para aceptar la configuración del servidor.

    Continue to configure the system with these values? [no]: yes
    
  8. 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)

  1. 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 comando kinit genera un ticket de Kerberos.

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

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.

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

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

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

    2. 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ña admin 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"
      
    3. Reinicie el servidor FreeIPA.

      sudo systemctl restart ipa.service
      
  3. 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
    
  4. 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.

  1. Muestre la política criptográfica actual de todo el sistema.

    cat /etc/crypto-policies/config
    
  2. 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 de TLS 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.

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

  1. Genere un token para el usuario admin.

    kinit admin
    
  2. 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.

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

El grupo foo es un grupo de usuarios POSIX. Para especificar un tipo de grupo diferente, utilice una de estas opciones:

  1. 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 usuario admin por defecto. El servidor FreeIPA requiere que el grupo admin funcione correctamente.

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

  3. 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í.

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.