Con FreeIPA Server ya instalado y funcionando, el siguiente paso lógico es integrar las máquinas cliente al dominio de identidad. Esto te permite autenticarte centralmente, centralizar las políticas de sudo, gestionar certificados y olvidarte de crear usuarios locales en cada servidor.
Aquí configuraremos una máquina Linux para que se autentique contra el FreeIPA Server que montamos en la guía anterior.
Prerequisitos
Paquetes necesarios
Trabajaremos con distribuciones RPM (AlmaLinux, Rocky, Fedora, CentOS) y DEB (Ubuntu, Debian). En ambos casos necesitas el cliente:
# RPM
dnf install freeipa-client -y
# DEB
apt update && apt install freeipa-client -y
Configuración de red
Antes de unirte al dominio, asegúrate de tres cosas:
- Que la máquina tenga acceso de red al servidor FreeIPA (puertos 443, 88 y 464).
- Que el DNS de la máquina cliente apunte a un DNS capaz de resolver tanto el servidor como el propio cliente. Si FreeIPA gestiona el DNS interno, idealmente que apunte al propio FreeIPA.
- Que el hostname sea un FQDN válido.
Para apuntar el DNS al servidor FreeIPA (en este ejemplo, 192.168.1.100):
sudo nmcli con mod "Wired connection 1" ipv4.dns 192.168.1.100
sudo nmcli con up "Wired connection 1"
Es crítico que el cliente pueda resolver el dominio DNS de FreeIPA (altobits.com en esta guía). Sin esa resolución, el join al dominio va a fallar en el primer paso.
Verificación de la conectividad
Antes de lanzar el instalador, comprueba que la base funciona:
# Resolución DNS del dominio
dig +short SRV _ldap._tcp.altobits.com
# Resolución del servidor
dig +short ipa.altobits.com
# Kerberos con el admin
kinit -V admin@ALTOBITS.COM
Si los tres responden bien, puedes seguir.
Configurar el hostname
El hostname de la máquina cliente también tiene que ser un FQDN:
sudo hostnamectl set-hostname nas.altobits.com
Sustituye nas.altobits.com por el nombre que quieras darle a esta máquina dentro del dominio. Convención común: el rol + dominio (web1.altobits.com, db.altobits.com, etc.).
Unión al dominio FreeIPA
Tienes dos formas: interactiva o desatendida. La interactiva está bien para hacerlo a mano una vez; la desatendida es la que usarás en scripts o provisionamiento con Ansible.
Método 1: Instalación interactiva
Lanza el instalador:
sudo ipa-client-install
Te irá haciendo preguntas. Las respuestas correctas en este ejemplo serían:
- ¿Configurar con DHCP?:
no(asumimos IP estática). - Nombre del servidor:
ipa.altobits.com. - Dominio DNS:
altobits.com. - Realm Kerberos:
ALTOBITS.COM. - Usuario administrador:
admin. - Contraseña: la que configuraste al instalar el servidor.
Método 2: Instalación desatendida
Para automatizar el join, lanza el instalador con todos los flags de una:
sudo ipa-client-install \
--server=ipa.altobits.com \
--domain=altobits.com \
--realm=ALTOBITS.COM \
--principal=admin \
--password=Password123 \
--mkhomedir \
--no-ntp
Qué hace cada flag:
--server: nombre del servidor FreeIPA.--domain: dominio DNS de FreeIPA.--realm: realm Kerberos (en mayúsculas).--principal: usuario administrador.--password: contraseña del admin. Ojo: la contraseña queda visible en el historial de bash. En producción, mejor dejar quekinitte la pida.--mkhomedir: crea el home del usuario automáticamente al primer login.--no-ntp: no reconfigura NTP (asumimos que ya hay un servidor de tiempo en la red).
Verificar que todo funciona
Tras la instalación, comprueba los puntos clave.
Tickets Kerberos
kinit admin
klist
Deberías ver un ticket válido para admin@ALTOBITS.COM. Si no aparece, el join no se completó correctamente.
Autenticación con un usuario del dominio
kinit usuario@ALTOBITS.COM
klist
Resolución de usuarios vía SSSD
getent passwd admin@ALTOBITS.COM
Si te devuelve la línea con UID, GID y home, SSSD está resolviendo correctamente contra FreeIPA.
Acceso SSH con credenciales del dominio
ssh admin@ALTOBITS.COM@localhost
Creación automática de homes
Si activaste --mkhomedir, al primer login de un usuario nuevo debería aparecer su carpeta en /home/:
ls -la /home/
Verás algo como /home/admin@ALTOBITS.COM/.
Configuración adicional
Habilitar sudo a través de FreeIPA
Para que los usuarios del dominio puedan usar sudo con reglas centralizadas en FreeIPA, instala el paquete ipa-client-epn en RPM:
sudo dnf install ipa-client-epn
Y asegúrate de que authselect tiene la feature de mkhomedir:
sudo authselect enable-feature with-mkhomedir
sudo authselect select sssd
Tras esto, las reglas de sudo que definas en la web de FreeIPA funcionarán automáticamente al hacer login desde esta máquina.
Revisar la configuración de SSSD
El cliente FreeIPA usa SSSD (System Security Services Daemon) para comunicarse con el servidor. Su fichero de configuración está en /etc/sssd/sssd.conf:
sudo cat /etc/sssd/sssd.conf
Debería contener una sección como esta:
[domain/default]
id_provider = ipa
ipa_server = _srv_, ipa.altobits.com
ipa_domain = altobits.com
auth_provider = ipa
chpass_provider = ipa
ldap_uri = ldaps://ipa.altobits.com
Reiniciar SSSD
Tras cualquier cambio, reinicia SSSD para que recargue la configuración:
sudo systemctl restart sssd
Precaución: al reiniciar SSSD perderás la sesión Kerberos actual. Hazlo con una sesión alternativa abierta o acceso de consola por si algo va mal.
Resolución de problemas
”Unable to resolve server”
Problema de DNS. Comprueba dos cosas:
# Que /etc/resolv.conf apunte al servidor FreeIPA
cat /etc/resolv.conf
# Que el dominio resuelva
dig altobits.com
dig _ldap._tcp.altobits.com SRV
“Hostname is not in DNS”
El cliente no resuelve su propio FQDN. Verifícalo:
hostname -f
Si no devuelve un FQDN, edita /etc/hosts temporalmente hasta que el DNS autoritativo tenga el registro:
echo "192.168.1.x nas.altobits.com nas" | sudo tee -a /etc/hosts
Salir del dominio
Si necesitas revertir el join, el comando es limpio:
sudo ipa-client-install --uninstall
Esto revierte la configuración del cliente y elimina la máquina del dominio. Útil cuando una máquina se va a reutilizar para otra cosa.
Gestión de usuarios desde FreeIPA
Con la máquina ya unida al dominio, los usuarios pasan a gestionarse desde FreeIPA en lugar de crearse en local. Desde la web o la CLI:
# Listar usuarios
ipa user-find
# Crear un nuevo usuario
ipa user-add usuario1 --first=Usuario --last=Uno --password
A partir de aquí, el usuario puede hacer login en cualquier máquina unida al dominio, usar sudo según las reglas centralizadas, y acceder a los recursos compartidos que se definan en FreeIPA.