Nota:

Instalar el servidor FreeIPA en Oracle Linux

Introducción

FreeIPA es un sistema de gestión de identidad y autenticación 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 una funcionalidad LDAPv3 completa de varios maestros.

Más allá del alcance de este tutorial, FreeIPA también proporciona Kerberos de MIT para la autenticación de conexión única, la autoridad de certificación de Dogtag y la gestión opcional de nombres de dominio mediante un servidor de enlace de ISC.

En este tutorial se muestra cómo instalar FreeIPA y configurar el directorio LDAP incluido.

Objetivos

¿Qué se necesita?

Para obtener más información sobre los requisitos para FreeIPA, consulte la Guía de inicio rápido ascendente.

Configuración del entorno de prácticas

Nota: Al utilizar el entorno de prácticas gratuitas, consulte Conceptos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.

  1. Abra un terminal y conéctese mediante ssh a la instancia de freeipa-server si aún no está conectada.

    ssh oracle@<ip_address_of_instance>
    

Confirme el servidor HostName

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. Verifique el nombre de host del servidor.

    sudo hostname
    

    La salida no debe devolver localhost ni localhost6.

Confirme el nombre de dominio completo (FQDN).

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

  1. Verifique el FQDN y su longitud.

    hostname -f
    
    echo $(hostname -f) | wc -m
    

    Nota: El FQDN consta de freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com, donde <RND_SUBNET> es una cadena aleatoria de 4 caracteres con el prefijo de la letra o.

Confirme la resolución de nombres.

  1. Obtener la dirección IP del servidor.

    sudo ip addr show
    

    Resultado de ejemplo:

    [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
    

    La dirección IPv4 se muestra en la línea que empieza por inet.

  2. Verificar la configuración de DNS de reenvío.

    host $(hostname -f)
    

    Resultado de ejemplo:

    [oracle@freeipa ~]$ host $(hostname -f)
    freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
    

    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 servidores de nombres DNS.

  3. Verifique la configuración de DNS inverso (registros PTR).

    host $(hostname -i)
    

    Resultado de ejemplo:

    [oracle@freeipa ~]$ host $(hostname -i)
    150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
    

    Una alternativa es utilizar dig +short -x $(hostname -i).

Apertura de 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 los servicios freeipa-ldap y freeipa-ldaps en desuso.

  1. Agregue el servicio firewalld.

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
    sudo firewall-cmd --reload
    

Instalación de los paquetes requeridos

  1. Instale los paquetes para un servidor FreeIPA sin los servicios DNS integrados.

    sudo dnf install ipa-server -y
    

    Nota: Los servicios de DNS integrados no se utilizan 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.

    Resultado 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 predeterminada al indicador entre corchetes y al pulsar Enter se acepta la respuesta predeterminada.

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

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. Acepte el nombre de host, el nombre de dominio y el nombre de dominio por defecto.

    Estos son los valores verificados al principio de esta práctica. Se recomienda que el nombre de dominio coincida con el nombre de dominio de DNS principal, con todas las letras en mayúscula.

    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]:
    
  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 dentro del 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 por defecto para el nombre de dominio NETBIOS y configure la cronía.

    NetBIOS domain name [O6FB5]: 
    
    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, la secuencia de comandos proporciona:

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

Pruebe el servidor FreeIPA

La instalación de FreeIPA incluye un cliente de línea de comandos y 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. Autentique el usuario admin en el dominio Kerberos.

    kinit admin
    

    Cuando se le solicite, introduzca la contraseña para el usuario admin creada 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
    

    Resultado de ejemplo:

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

    Resultado 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@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.ORACLEVCN.COM
      UID: 872200000
      GID: 872200000
      Account disabled: False
    ----------------------------
    Number of entries returned 1
    ----------------------------
    

Ajustes de seguridad y endurecimiento

A continuación, se muestran algunas formas de utilizar el servidor FreeIPA de forma segura.

Desactivar enlaces anónimos

El servidor LDAP FreeIPA activa los enlaces anónimos como valores por defecto, lo que expone valores de directorio y valores de configuración específicos.

El atributo nsslapd-allow-anonymous-access controla este comportamiento. Los valores aceptables 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 mediante la lectura del 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=$RND_SUBNET,dc=linuxvirt,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.

    $RND_SUBNET es una variable de entorno definida en el entorno de prácticas libres que representa la cadena aleatoria de 4 caracteres en el FQDN.

    Resultado de ejemplo:

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

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

      Es posible cambiar varios atributos separándolos con un carácter de guión - en una línea por sí misma. 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 TLS y fuerza una respuesta correcta.

      Nota: -ZZ es necesario debido al uso de certificados autofirmados.

      Resultado 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=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    

    Observe la respuesta Anonymous access is not allowed.

    Resultado de ejemplo:

    [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
    
  4. Verifique que la consulta del directorio funciona mediante la autenticación.

    ldapsearch -D uid=admin,cn=users,cn=accounts,dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
    

    Resultado de ejemplo:

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

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 de cifrado actual del 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
    

    Resultado 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, parar y reiniciar todo el servidor FreeIPA. Si necesita start, stop o restart componentes individuales, utilice systemctl COMMAND name.service.

  1. Muestra el estado de todos los servicios.

    sudo ipactl status
    

    Resultado 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 la configuración básicas del servidor FreeIPA completas, el siguiente paso consiste en gestionar la gestión de identidades, que consiste en crear usuarios y grupos. Antes de hacerlo, genere un token de Kerberos.

  1. Genere un token para el usuario admin.

    kinit admin
    
  2. Obtener una lista de tokens existentes.

    klist
    

    Los tokens de Kerberos son válidos durante 24 horas por defecto. Debido a la ejecución anterior de estos comandos en el paso titulado "Access the Command-Line Interface (CLI)", la lista muestra el token original en lugar de crear uno nuevo.

  3. Agregue un nuevo grupo 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

Resultado de ejemplo:

[oracle@freeipa ~]$ ipa group-add foo
-----------------
Added group "foo"
-----------------
  Group name: foo
  GID: 1326400003

El servidor FreeIPA soporta 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:

   ipa group-find

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

Advertencia: No suprima el grupo admin porque contiene el usuario admin por defecto. El servidor FreeIPA requiere que el grupo admin funcione correctamente.

  1. Agregue una nueva cuenta de usuario.

    ipa user-add
    

    El comando ejecuta una secuencia de comandos interactiva que solicita el conjunto mínimo de datos que FreeIPA necesita para crear una cuenta de usuario.

    Resultado 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@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
    

    De manera 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.

  2. Agregue el nuevo usuario al nuevo grupo de usuarios.

    ipa group-add-member foo --users=oracle
    

    Resultado 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 funciones de las que se muestran. Para comandos adicionales, ejecute ipa help commands para obtener una lista completa.

Resumen

Concluye este laboratorio, que presenta los conceptos básicos de la instalación y el uso del servidor FreeIPA. Explore más a fondo utilizando los enlaces siguientes o leyendo las páginas del manual del producto, ya que FreeIPA tiene muchas funciones adicionales más allá de lo que se trata aquí.

Para obtener más información

Ver otros recursos 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.