--- title: "Cómo instalar FreeIPA en Rocky Linux 9 con clientes Ubuntu" description: "Instala un servidor FreeIPA en Rocky Linux 9, une clientes Ubuntu 24.04 al dominio y gestiona usuarios, grupos y el acceso SSH con reglas HBAC." category: "Gestión de Identidad y Acceso" language: es source: https://cubepath.com/es/docs/gestión-de-identidad-y-acceso/instalacion-de-freeipa-gestion-de-identidad updated: 2026-09-25 --- # Cómo instalar FreeIPA en Rocky Linux 9 con clientes Ubuntu FreeIPA es una solución de gestión de identidades para Linux que integra en un solo producto un directorio LDAP (389 Directory Server), Kerberos para la autenticación, una autoridad de certificación y una interfaz web. Frente a un OpenLDAP a secas, añade políticas de acceso por host (HBAC), políticas de contraseña y la inscripción automática de clientes con SSSD. En este tutorial instalarás el servidor FreeIPA en Rocky Linux 9, unirás un cliente Ubuntu 24.04 al dominio y controlarás qué usuarios pueden entrar por SSH en cada máquina. ## Requisitos previos FreeIPA se desarrolla y prueba sobre la familia Red Hat. Ubuntu 24.04 ya no incluye el paquete del servidor, pero sí el del cliente, así que la arquitectura de esta guía es: - Un servidor con Rocky Linux 9 (o AlmaLinux 9) dedicado a FreeIPA, por ejemplo un VPS de CubePath, con al menos 2 GB de RAM (4 GB recomendados) y 10 GB libres en disco. No instales otros servicios web o LDAP en él. - Uno o más clientes con Ubuntu 24.04 LTS. - Un usuario con privilegios `sudo` en todas las máquinas. - Un dominio DNS que controles. Es buena práctica dedicar a FreeIPA un subdominio propio; en esta guía se usan el dominio `idm.example.com`, el realm Kerberos `IDM.EXAMPLE.COM` (el dominio en mayúsculas) y el servidor `ipa01.idm.example.com`. - Registros A en tu DNS para el servidor y los clientes, o bien entradas en `/etc/hosts` de todas las máquinas. > Importante: el nombre del servidor y el realm no se pueden cambiar después de la instalación. Elígelos con cuidado. ## Paso 1: Preparar el nombre de host del servidor FreeIPA exige que el servidor tenga un nombre completo (FQDN) estable que resuelva a su IP real, no a `127.0.0.1`. En el servidor Rocky Linux, fija el nombre de host: ```bash sudo hostnamectl set-hostname ipa01.idm.example.com ``` Añade una entrada en `/etc/hosts` con la IP del servidor (sustituye `your_server_ip`): ```bash sudo nano /etc/hosts ``` ```text your_server_ip ipa01.idm.example.com ipa01 ``` Comprueba que el nombre completo resuelve a esa IP: ```bash hostname -f getent hosts ipa01.idm.example.com ``` ```output ipa01.idm.example.com your_server_ip ipa01.idm.example.com ipa01 ``` El instalador también necesita que IPv6 esté habilitado al menos en la interfaz de loopback, aunque no uses IPv6 en la red. Compruébalo: ```bash ip -6 addr show lo ``` Debe aparecer la dirección `::1/128`. Si no aparece, revisa si has desactivado IPv6 con `sysctl` o con el parámetro de arranque `ipv6.disable=1` y vuelve a activarlo. ## Paso 2: Instalar los paquetes y abrir el cortafuegos Actualiza el sistema e instala el servidor: ```bash sudo dnf update -y sudo dnf install -y ipa-server ``` firewalld incluye un servicio predefinido, `freeipa-4`, que abre todos los puertos que usan los clientes: HTTP/HTTPS, LDAP/LDAPS, Kerberos y kpasswd. Añádelo de forma permanente y recarga: ```bash sudo firewall-cmd --permanent --add-service=freeipa-4 sudo firewall-cmd --reload ``` Verifica que el servicio está activo: ```bash sudo firewall-cmd --list-services ``` ```output cockpit dhcpv6-client freeipa-4 ssh ``` ## Paso 3: Ejecutar el instalador de FreeIPA En esta guía FreeIPA no gestiona el DNS: sigues usando tu proveedor DNS habitual y los clientes se configuran indicando el servidor de forma explícita. Es la opción más sencilla cuando el servidor está en la nube. Lanza el instalador interactivo: ```bash sudo ipa-server-install ``` Responde a las preguntas así: - **Do you want to configure integrated DNS (BIND)?** `no` - **Server host name:** `ipa01.idm.example.com` (pulsa Intro para aceptar el valor detectado) - **Please confirm the domain name:** `idm.example.com` - **Please provide a realm name:** `IDM.EXAMPLE.COM` - **Directory Manager password:** una contraseña robusta para la cuenta de administración de bajo nivel del directorio. Guárdala en un lugar seguro; solo se usa en recuperaciones. - **IPA admin password:** la contraseña del usuario `admin`, que usarás a diario. - **Continue to configure the system with these values?** `yes` La instalación tarda entre 5 y 15 minutos. Al terminar verás un resumen parecido a este: ```output The ipa-server-install command was successful ``` Comprueba que todos los componentes están en marcha: ```bash sudo ipactl status ``` ```output 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 ``` ## Paso 4: Autenticarte y acceder a la interfaz web Las herramientas de FreeIPA usan tickets Kerberos. Obtén uno como `admin`: ```bash kinit admin ``` Comprueba que tienes un ticket válido: ```bash klist ``` ```output Ticket cache: KCM:1000 Default principal: admin@IDM.EXAMPLE.COM Valid starting Expires Service principal 09/25/2026 10:02:11 09/26/2026 09:36:55 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM ``` La interfaz web está en `https://ipa01.idm.example.com/ipa/ui/`. Debes entrar por el nombre completo, no por la IP, porque el servidor redirige al FQDN. Si tu equipo no resuelve ese nombre, añade la entrada correspondiente a su archivo hosts. El navegador mostrará un aviso de certificado porque lo firma la CA interna de FreeIPA; puedes descargar esa CA desde `https://ipa01.idm.example.com/ipa/config/ca.crt` e importarla en tu equipo para eliminar el aviso. ## Paso 5: Crear usuarios, grupos y políticas de contraseña Todo lo que haces en la interfaz web se puede hacer con el comando `ipa`. Crea un grupo para los administradores de sistemas: ```bash ipa group-add sysadmins --desc="Administradores de sistemas" ``` Crea un usuario. La opción `--password` pide una contraseña inicial: ```bash ipa user-add jgarcia --first=Juan --last=Garcia --email=jgarcia@example.com --shell=/bin/bash --password ``` Añade el usuario al grupo y comprueba el resultado: ```bash ipa group-add-member sysadmins --users=jgarcia ipa group-show sysadmins ``` ```output Group name: sysadmins Description: Administradores de sistemas GID: 1234500004 Member users: jgarcia ``` FreeIPA asigna automáticamente los UID y GID de un rango propio, así que no tienes que gestionarlos a mano. La contraseña que fija un administrador se marca como caducada: el usuario tendrá que cambiarla en su primer inicio de sesión. Es el comportamiento esperado. Para endurecer la política global de contraseñas (longitud mínima, bloqueo tras intentos fallidos durante 5 minutos e historial de contraseñas): ```bash ipa pwpolicy-mod --minlength=12 --maxfail=5 --lockouttime=300 --history=5 ``` Revisa la política aplicada: ```bash ipa pwpolicy-show ``` ## Paso 6: Unir un cliente Ubuntu 24.04 al dominio Los pasos de esta sección se ejecutan en el **cliente**. Primero dale un nombre completo dentro del dominio: ```bash sudo hostnamectl set-hostname client01.idm.example.com ``` Asegúrate de que el cliente resuelve el nombre del servidor. Si no usas DNS, añade la entrada a `/etc/hosts`: ```text your_server_ip ipa01.idm.example.com ipa01 ``` Instala el paquete del cliente. Durante la instalación puede aparecer un asistente de configuración de Kerberos; deja los campos vacíos o con los valores propuestos, porque el instalador de FreeIPA los sobrescribe: ```bash sudo apt update sudo apt install freeipa-client ``` Inscribe la máquina en el dominio. `--mkhomedir` crea el directorio personal de cada usuario en su primer inicio de sesión: ```bash sudo ipa-client-install --server=ipa01.idm.example.com --domain=idm.example.com --realm=IDM.EXAMPLE.COM --mkhomedir ``` Como no hay registros SRV de descubrimiento, el instalador pregunta si quieres continuar con esos valores fijos; responde `yes`. Después pide un usuario autorizado para inscribir equipos: introduce `admin` y su contraseña. Al final verás: ```output Client configuration complete. The ipa-client-install command was successful ``` Comprueba que el cliente ve los usuarios del dominio: ```bash id jgarcia ``` ```output uid=1234500005(jgarcia) gid=1234500005(jgarcia) groups=1234500005(jgarcia),1234500004(sysadmins) ``` Inicia sesión por SSH en el cliente con la cuenta del dominio. Como la contraseña está caducada, el sistema te pedirá la actual y una nueva: ```bash ssh jgarcia@client01.idm.example.com ``` En el servidor, el nuevo equipo aparece en la lista de hosts: ```bash ipa host-find ``` ## Paso 7: Controlar el acceso con reglas HBAC Por defecto existe la regla `allow_all`, que permite a cualquier usuario del dominio entrar en cualquier máquina inscrita. En producción conviene sustituirla por reglas explícitas. Estos comandos se ejecutan en el servidor con un ticket de `admin` válido. Crea una regla que permita a los grupos `sysadmins` y `admins` (el grupo del usuario `admin`) entrar por SSH en todos los hosts: ```bash ipa hbacrule-add allow_sysadmins_ssh --hostcat=all --desc="SSH para administradores" ipa hbacrule-add-user allow_sysadmins_ssh --groups=sysadmins --groups=admins ipa hbacrule-add-service allow_sysadmins_ssh --hbacsvcs=sshd ``` Antes de desactivar `allow_all`, comprueba con `hbactest` que la regla nueva da acceso a quien debe. La opción `--rules` evalúa solo esa regla: ```bash ipa hbactest --user=jgarcia --host=client01.idm.example.com --service=sshd --rules=allow_sysadmins_ssh ``` ```output -------------------- Access granted: True -------------------- Matched rules: allow_sysadmins_ssh ``` Cuando el resultado sea el esperado, desactiva la regla general: ```bash ipa hbacrule-disable allow_all ``` A partir de ahora, un usuario que no esté en `sysadmins` ni en `admins` recibirá `Access granted: False` en `hbactest` y no podrá iniciar sesión en los clientes. Los cambios pueden tardar unos minutos en aplicarse por la caché de SSSD; en el cliente puedes forzarlos con `sudo sss_cache -E`. ## Solución de problemas **El instalador del servidor falla al comprobar el nombre de host.** El FQDN resuelve a `127.0.0.1` o a otra IP. Revisa `/etc/hosts` y que `hostname -f` devuelve el nombre completo. **`ipa-client-install` no conecta con el servidor.** Comprueba desde el cliente que resuelve `ipa01.idm.example.com` y que los puertos están abiertos, por ejemplo con `curl -k https://ipa01.idm.example.com/ipa/config/ca.crt`. Si falla, revisa `sudo firewall-cmd --list-services` en el servidor. **Un usuario del dominio no puede iniciar sesión en el cliente.** Consulta `sudo journalctl -u sssd -n 50` en el cliente y prueba la regla con `ipa hbactest` en el servidor. Un fallo de HBAC aparece en los logs como `Access denied by HBAC rules`. **Los comandos `ipa` devuelven un error de Kerberos.** El ticket ha caducado (duran 24 horas por defecto). Obtén uno nuevo con `kinit admin`. **Los servicios no arrancan tras reiniciar el servidor.** Arráncalos con `sudo ipactl start` y revisa cuál falla con `sudo ipactl status`. El Directory Server suele ser el primero en fallar cuando el disco está lleno. ## Conclusión Ya tienes un servidor FreeIPA en Rocky Linux 9 con usuarios y grupos centralizados, una política de contraseñas común, un cliente Ubuntu 24.04 inscrito y reglas HBAC que limitan quién entra en cada máquina. Como siguientes pasos, puedes añadir un servidor réplica con `ipa-replica-install` para tener alta disponibilidad, definir reglas de sudo centralizadas con `ipa sudorule-add` y emitir certificados para tus servicios internos con la CA integrada.