Instalación de FreeIPA para Gestión de Identidad Empresarial
FreeIPA es la solución de gestión de identidades empresarial de código abierto más completa para Linux, que combina LDAP (389 Directory Server), Kerberos para autenticación robusta, DNS integrado, PKI para certificados y una interfaz web completa. A diferencia de OpenLDAP puro, FreeIPA proporciona todo el stack de gestión de identidades en un único instalador, con herramientas para gestionar usuarios, grupos, políticas de acceso basadas en host (HBAC) y SSO entre todos los sistemas del dominio. Esta guía cubre la instalación del servidor, la inscripción de clientes y la gestión de identidades.
Requisitos Previos
- Servidor dedicado con al menos 2 GB de RAM (4 GB recomendado)
- CentOS Stream 9, Rocky Linux 9 o RHEL 9 (soporte nativo)
- Ubuntu 22.04 también soportado (con limitaciones)
- FQDN configurado y resoluble (p.ej.,
ipa.empresa.com) - Acceso root
- Al menos 10 GB de espacio libre
# Configurar el hostname del servidor (debe ser el FQDN definitivo)
sudo hostnamectl set-hostname ipa.empresa.com
# Verificar la resolución DNS del hostname
hostname -f
# Debe devolver: ipa.empresa.com
Instalación del Servidor FreeIPA
Rocky Linux / CentOS Stream
# Instalar los paquetes de FreeIPA
sudo dnf install -y freeipa-server freeipa-server-dns
# Configurar el firewall para los servicios de FreeIPA
sudo firewall-cmd --permanent --add-service=freeipa-ldap
sudo firewall-cmd --permanent --add-service=freeipa-ldaps
sudo firewall-cmd --permanent --add-service=freeipa-replication
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=kerberos
sudo firewall-cmd --reload
# Ejecutar el instalador de FreeIPA
sudo ipa-server-install \
--domain=empresa.com \
--realm=EMPRESA.COM \
--ds-password=clave-directorio-segura \
--admin-password=clave-admin-segura \
--setup-dns \
--auto-forwarders \
--unattended
Ubuntu 22.04
# Instalar FreeIPA en Ubuntu (usa el módulo snap o los repositorios nativos)
sudo apt-get update
sudo apt-get install -y freeipa-server freeipa-server-dns
# La instalación es idéntica
sudo ipa-server-install \
--domain=empresa.com \
--realm=EMPRESA.COM \
--ds-password=clave-directorio-segura \
--admin-password=clave-admin-segura \
--setup-dns \
--unattended
Instalación interactiva
Si prefieres responder las preguntas del instalador:
sudo ipa-server-install
# El instalador hará preguntas sobre:
# - Configurar servidor DNS integrado (recomendado: yes)
# - Nombre del dominio: empresa.com
# - Realm Kerberos: EMPRESA.COM
# - Servidor DNS forwarder
# - Contraseña del Directory Server
# - Contraseña del administrador IPA
Configuración Post-Instalación
# Autenticar como administrador de IPA
kinit admin
# Introducir la contraseña de admin configurada durante la instalación
# Verificar el estado del servidor
ipactl status
# Ver los servicios de FreeIPA en ejecución
sudo ipactl status
# Acceder a la interfaz web
# https://ipa.empresa.com/ipa/ui
Configurar los nameservers del dominio
# Ver los nameservers configurados
ipa dnszone-show empresa.com
# Añadir registros de recursos necesarios
ipa dnsrecord-add empresa.com @ --ns-rec=ipa.empresa.com.
Inscripción de Clientes Linux
Para que los servidores de la infraestructura usen FreeIPA para autenticación:
Rocky Linux / CentOS
# En cada servidor cliente, instalar el paquete de cliente
sudo dnf install -y freeipa-client
# Inscribir el cliente en el dominio IPA
sudo ipa-client-install \
--domain=empresa.com \
--server=ipa.empresa.com \
--realm=EMPRESA.COM \
--principal=admin \
--password=clave-admin \
--unattended
# Si el DNS de IPA no está configurado, usar --no-ntp
Ubuntu/Debian
# Instalar el cliente IPA
sudo apt-get install -y freeipa-client
# Inscribir en el dominio
sudo ipa-client-install \
--domain=empresa.com \
--server=ipa.empresa.com \
--realm=EMPRESA.COM \
--mkhomedir \
--unattended \
--principal=admin \
--password=clave-admin
Verificar la inscripción
# En el cliente, verificar que puede autenticar contra IPA
id admin
# Debe mostrar el UID y grupos del usuario admin de IPA
# Comprobar el ticket Kerberos
klist
# Verificar el estado del cliente
sudo ipactl status # No disponible en clientes, usar:
sudo systemctl status sssd
Gestión de Usuarios y Grupos
Mediante la CLI
# Autenticar primero
kinit admin
# Crear un usuario
ipa user-add jgarcia \
--first=Juan \
--last=García \
[email protected] \
--shell=/bin/bash \
--password
# Buscar usuarios
ipa user-find garcia
ipa user-find --all # Listar todos
# Ver los detalles de un usuario
ipa user-show jgarcia
# Modificar un usuario
ipa user-mod jgarcia --phone="+34612345678"
# Deshabilitar/habilitar un usuario
ipa user-disable jgarcia
ipa user-enable jgarcia
# Eliminar un usuario
ipa user-del jgarcia
Gestión de grupos
# Crear un grupo
ipa group-add sysadmins --desc="Administradores del sistema"
# Añadir usuarios al grupo
ipa group-add-member sysadmins --users=jgarcia
ipa group-add-member sysadmins --users=mlopez,rperez
# Ver los miembros del grupo
ipa group-show sysadmins
# Listar todos los grupos
ipa group-find
# Crear un grupo externo (para usuarios de AD)
ipa group-add external-admins --external
Políticas de contraseña
# Ver la política de contraseñas global
ipa pwpolicy-show
# Modificar la política global
ipa pwpolicy-mod \
--minlength=12 \
--maxfail=5 \
--lockouttime=300 \
--history=10
# Crear una política específica para un grupo
ipa pwpolicy-add sysadmins \
--priority=1 \
--minlength=16 \
--maxfail=3
Control de Acceso Basado en Host (HBAC)
HBAC (Host-Based Access Control) permite definir qué usuarios pueden acceder a qué servidores mediante qué servicios.
# Ver las reglas HBAC existentes
ipa hbacrule-find
# Por defecto existe 'allow_all' que permite todo acceso
# En producción, deshabilitarla y crear reglas específicas
# Deshabilitar la regla que permite todo (con precaución)
ipa hbacrule-disable allow_all
# Crear una regla para que solo los sysadmins accedan a todos los servidores
ipa hbacrule-add acceso-sysadmins \
--desc="Sysadmins pueden acceder a todos los servidores via SSH"
# Añadir el grupo al que se aplica la regla
ipa hbacrule-add-user acceso-sysadmins --groups=sysadmins
# Aplicar a todos los hosts
ipa hbacrule-add-host acceso-sysadmins --hostgroups=ipaservers
# O a un host específico
ipa hbacrule-add-host acceso-sysadmins --hosts=servidor1.empresa.com
# Especificar el servicio (sshd)
ipa hbacrule-add-service acceso-sysadmins --hbacsvcs=sshd
# Verificar la regla
ipa hbacrule-show acceso-sysadmins
# Probar si un usuario puede acceder
ipa hbactest \
--user=jgarcia \
--host=servidor1.empresa.com \
--service=sshd
Gestión de Certificados
FreeIPA incluye una CA (Dogtag) para gestionar certificados internos.
# Ver los certificados emitidos
ipa cert-find
# Solicitar un certificado para un servicio
ipa cert-request \
--principal=HTTP/webserver.empresa.com \
/tmp/webserver.csr
# Gestionar los certificados desde el servidor web
# https://ipa.empresa.com/ipa/ui/#/p/cert/
# Revocar un certificado
ipa cert-revoke NUMERO_SERIE --revocation-reason=0
Usar certificados de IPA en Nginx
# Obtener el certificado para el dominio web usando certmonger
sudo ipa-getcert request \
-k /etc/nginx/ssl/servidor.key \
-f /etc/nginx/ssl/servidor.crt \
-K HTTP/webserver.empresa.com \
-N CN=webserver.empresa.com \
--after-command="systemctl reload nginx"
# Ver los certificados gestionados por certmonger
sudo getcert list
Interfaz Web
La interfaz web de FreeIPA está disponible en https://ipa.empresa.com/ipa/ui y permite:
- Gestionar usuarios, grupos y políticas sin línea de comandos
- Ver y administrar reglas HBAC
- Gestionar la CA y los certificados
- Administrar zonas DNS
- Ver la topología de replicación
# Para acceder, el navegador debe confiar en el certificado de la CA de IPA
# Descargar el certificado de la CA:
curl http://ipa.empresa.com/ipa/config/ca.crt -o /tmp/ipa-ca.crt
# Importar en el sistema cliente (para que los comandos ipa funcionen)
sudo cp /tmp/ipa-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust # En RHEL/Rocky
sudo update-ca-certificates # En Ubuntu/Debian
Solución de Problemas
El instalador falla con error de DNS
# Verificar que el hostname es resoluble
host ipa.empresa.com
# Si no tiene DNS configurado, usar --no-ntp y añadir al /etc/hosts
echo "IP_SERVIDOR ipa.empresa.com ipa" | sudo tee -a /etc/hosts
Los clientes no pueden autenticarse
# Verificar el estado de SSSD en el cliente
sudo systemctl status sssd
sudo journalctl -u sssd -n 50
# Forzar la resincronización de SSSD
sudo sss_cache -E
sudo systemctl restart sssd
El ticket Kerberos ha expirado
# Renovar el ticket
kinit admin
# O renovar automáticamente si el ticket es renovable
kinit -R
El servicio FreeIPA no inicia tras un reinicio
# Iniciar todos los servicios de IPA manualmente
sudo ipactl start
# Ver el estado detallado
sudo ipactl status
Conclusión
FreeIPA proporciona una plataforma de gestión de identidades completa y de nivel empresarial que va mucho más allá de un directorio LDAP básico. La combinación de autenticación Kerberos, control de acceso HBAC, gestión centralizada de certificados y una interfaz web intuitiva lo convierte en la solución preferida para organizaciones que necesitan gestionar decenas o cientos de servidores Linux con políticas de seguridad coherentes y auditables.


