305.2 FreeIPA Gestión de Entidades
Introducción
FreeIPA proporciona una gestión centralizada de identidades que incluye usuarios, grupos, hosts, reglas de control de acceso basado en host (HBAC), reglas sudo, políticas de contraseñas y más. Todas las operaciones se realizan con el comando ipa o a través de la interfaz web.
Gestión de usuarios
Crear usuarios
# Crear usuario básico
ipa user-add jgarcia --first=Juan --last=Garcia
# Crear usuario con opciones adicionales
ipa user-add jgarcia \
--first=Juan \
--last=Garcia \
--email=jgarcia@empresa.local \
--shell=/bin/bash \
--homedir=/home/jgarcia \
--uid=10001 \
--gidnumber=10001 \
--passwordModificar usuarios
# Modificar atributos
ipa user-mod jgarcia --shell=/bin/zsh
ipa user-mod jgarcia --email=juan.garcia@empresa.local
# Deshabilitar usuario
ipa user-disable jgarcia
# Habilitar usuario
ipa user-enable jgarcia
# Desbloquear usuario (tras intentos fallidos)
ipa user-unlock jgarciaEliminar y buscar usuarios
# Eliminar usuario
ipa user-del jgarcia
# Buscar usuarios
ipa user-find
ipa user-find --login=jgarcia
ipa user-find --in-group=desarrolladores
# Ver detalles de un usuario
ipa user-show jgarcia
ipa user-show jgarcia --all # Todos los atributosPara el examen: Los comandos siguen el patrón
ipa ENTIDAD-ACCIÓN. Las acciones comunes son:add,mod,del,find,show,enable,disable.
Gestión de grupos
Tipos de grupos
| Tipo | Descripción |
|---|---|
| POSIX | Grupo con GID numérico (por defecto) |
| No-POSIX | Grupo sin GID (solo para organización en FreeIPA) |
| Externo | Puede contener miembros de dominios externos (AD) |
Operaciones con grupos
# Crear grupo POSIX
ipa group-add desarrolladores --desc="Equipo de desarrollo"
# Crear grupo no-POSIX
ipa group-add proyecto-alpha --nonposix --desc="Proyecto Alpha"
# Crear grupo externo (para trust AD)
ipa group-add ad-external --external --desc="Grupo externo AD"
# Añadir miembros
ipa group-add-member desarrolladores --users=jgarcia,mlopez
ipa group-add-member desarrolladores --groups=junior-devs
# Eliminar miembros
ipa group-remove-member desarrolladores --users=jgarcia
# Buscar grupos
ipa group-find
ipa group-show desarrolladoresPara el examen: FreeIPA soporta grupos anidados (un grupo como miembro de otro grupo). Los grupos externos se usan para contener SIDs de Active Directory en relaciones de confianza.
Inscripción de hosts
Gestión de hosts
# Añadir host
ipa host-add servidor1.empresa.local --ip-address=192.168.1.20
# Generar contraseña de inscripción OTP
ipa host-add servidor2.empresa.local --random
# Ver hosts
ipa host-find
ipa host-show servidor1.empresa.local
# Eliminar host
ipa host-del servidor1.empresa.local
# Deshabilitar host
ipa host-disable servidor1.empresa.localInscripción de host con OTP
# En el servidor IPA: generar OTP
ipa host-add cliente.empresa.local --random
# Devuelve: Random password: aBcDeFgH
# En el cliente: inscribir con OTP
ipa-client-install --password=aBcDeFgH --unattendedPara el examen: La inscripción con OTP (One-Time Password) permite inscribir clientes sin proporcionar credenciales de administrador. El OTP se genera con
--randomy se usa una sola vez.
Reglas HBAC (Host-Based Access Control)
Concepto
HBAC controla qué usuarios pueden acceder a qué hosts mediante qué servicios:
¿Puede [USUARIO/GRUPO] acceder a [HOST/GRUPO_HOSTS] usando [SERVICIO]?
Gestión de reglas HBAC
# Crear regla HBAC
ipa hbacrule-add acceso-servidores --desc="Acceso a servidores de producción"
# Añadir usuarios/grupos a la regla
ipa hbacrule-add-user acceso-servidores --users=jgarcia
ipa hbacrule-add-user acceso-servidores --groups=sysadmins
# Añadir hosts/grupos de hosts
ipa hbacrule-add-host acceso-servidores --hosts=servidor1.empresa.local
ipa hbacrule-add-host acceso-servidores --hostgroups=produccion
# Añadir servicios
ipa hbacrule-add-service acceso-servidores --hbacsvcs=sshd
ipa hbacrule-add-service acceso-servidores --hbacsvcs=login
# Deshabilitar la regla por defecto "allow_all"
ipa hbacrule-disable allow_all
# Verificar reglas HBAC
ipa hbactest --user=jgarcia --host=servidor1.empresa.local --service=sshd| Comando | Descripción |
|---|---|
ipa hbacrule-add | Crear regla HBAC |
ipa hbacrule-add-user | Añadir usuarios/grupos a regla |
ipa hbacrule-add-host | Añadir hosts/grupos de hosts |
ipa hbacrule-add-service | Añadir servicios a regla |
ipa hbacrule-disable | Deshabilitar regla |
ipa hbactest | Probar acceso HBAC |
Para el examen: Por defecto existe la regla
allow_allque permite acceso total. Se debe deshabilitar antes de que las reglas HBAC personalizadas tengan efecto.ipa hbactestpermite verificar si un acceso sería permitido o denegado.
Reglas sudo en FreeIPA
Gestión centralizada de sudo
FreeIPA permite gestionar reglas sudo centralizadamente:
# Crear regla sudo
ipa sudorule-add reiniciar-servicios --desc="Reiniciar servicios web"
# Añadir usuarios/grupos
ipa sudorule-add-user reiniciar-servicios --users=jgarcia
ipa sudorule-add-user reiniciar-servicios --groups=webadmins
# Añadir hosts
ipa sudorule-add-host reiniciar-servicios --hosts=web1.empresa.local
ipa sudorule-add-host reiniciar-servicios --hostgroups=servidores-web
# Añadir comandos permitidos
ipa sudocmd-add "/usr/bin/systemctl restart httpd"
ipa sudocmd-add "/usr/bin/systemctl restart nginx"
# Crear grupo de comandos sudo
ipa sudocmdgroup-add restart-web --desc="Comandos restart web"
ipa sudocmdgroup-add-member restart-web \
--sudocmds="/usr/bin/systemctl restart httpd"
ipa sudocmdgroup-add-member restart-web \
--sudocmds="/usr/bin/systemctl restart nginx"
# Asociar comandos a regla
ipa sudorule-add-allow-command reiniciar-servicios \
--sudocmdgroups=restart-web
# Configurar RunAs
ipa sudorule-add-runasuser reiniciar-servicios --users=root
# Ver regla
ipa sudorule-show reiniciar-servicios --allPara el examen: Las reglas sudo en FreeIPA se componen de: usuarios (quién), hosts (dónde), comandos permitidos (qué) y RunAs (como quién). Los comandos se agrupan en
sudocmdgrouppara facilitar la gestión.
Políticas de contraseñas
# Ver política global
ipa pwpolicy-show
# Modificar política global
ipa pwpolicy-mod \
--minlife=1 \
--maxlife=90 \
--history=12 \
--minlength=12 \
--minclasses=3 \
--maxfail=5 \
--failinterval=60 \
--lockouttime=600
# Crear política para un grupo
ipa pwpolicy-add desarrolladores \
--maxlife=180 \
--minlength=10 \
--priority=10| Parámetro | Descripción |
|---|---|
--minlife | Vida mínima de la contraseña (días) |
--maxlife | Vida máxima de la contraseña (días) |
--history | Número de contraseñas anteriores recordadas |
--minlength | Longitud mínima |
--minclasses | Clases mínimas de caracteres (mayús, minús, etc.) |
--maxfail | Intentos fallidos antes de bloqueo |
--lockouttime | Tiempo de bloqueo (segundos) |
--priority | Prioridad (menor número = mayor prioridad) |
Para el examen: Las políticas de contraseñas pueden definirse por grupo con diferentes prioridades. La política con menor número de prioridad se aplica primero. La política global se aplica a todos si no hay una más específica.
Reglas de automember
Automember asigna automáticamente usuarios o hosts a grupos basándose en sus atributos:
# Crear regla de automember para usuarios
ipa automember-default-group-set --type=group \
--default-group=empleados
# Crear regla condicional
ipa automember-add --type=group desarrolladores
ipa automember-add-condition --type=group desarrolladores \
--key=departmentnumber --inclusive-regex="^DEV"
# Crear regla para hosts
ipa automember-add --type=hostgroup servidores-web
ipa automember-add-condition --type=hostgroup servidores-web \
--key=fqdn --inclusive-regex="^web.*\.empresa\.local$"
# Rebuild: reaplicar reglas a entidades existentes
ipa automember-rebuild --type=groupPara el examen: Automember usa expresiones regulares sobre atributos de la entidad para determinar la pertenencia a grupos. Las reglas se aplican automáticamente al crear nuevas entidades.
ID Views
ID Views permiten sobrescribir atributos POSIX de usuarios y grupos por host:
# Crear ID View
ipa idview-add vista-servidor-legacy
# Sobrescribir atributos de un usuario en esa vista
ipa idoverrideuser-add vista-servidor-legacy jgarcia \
--uid=5001 \
--gid=5001 \
--homedir=/export/home/jgarcia \
--shell=/bin/ksh
# Aplicar vista a un host
ipa idview-apply vista-servidor-legacy --hosts=legacy.empresa.local
# Ver vistas aplicadas
ipa idview-show vista-servidor-legacy --allPara el examen: ID Views permiten que un mismo usuario tenga diferentes UIDs o directorios home en diferentes hosts. Son útiles para migración o para integrar servidores legacy con atributos POSIX diferentes.
ipa-getkeytab
Gestiona keytabs Kerberos para servicios:
# Obtener keytab para un servicio
ipa-getkeytab -s ipa.empresa.local \
-p HTTP/web.empresa.local \
-k /etc/httpd/conf/httpd.keytab
# Obtener keytab del host
ipa-getkeytab -s ipa.empresa.local \
-p host/servidor.empresa.local \
-k /etc/krb5.keytab
# Verificar el keytab
klist -kt /etc/httpd/conf/httpd.keytabPara el examen:
ipa-getkeytabextrae keytabs Kerberos del servidor FreeIPA. Los keytabs permiten a servicios autenticarse sin contraseña interactiva. Cada servicio necesita su propio keytab.
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
- Patron de comandos
ipa ENTIDAD-ACCION— Las acciones comunes son:add,mod,del,find,show,enable,disable. Las preguntas piden el comando exacto, comoipa user-disable(noipa user-deactivateniipa disable-user). El orden es siempre entidad-accion. - Regla HBAC
allow_allactiva por defecto — Por defecto,allow_allpermite acceso total a todos los hosts. Las reglas HBAC personalizadas NO tienen efecto hasta que se desactivaallow_allconipa hbacrule-disable allow_all. Olvidarlo es trampa clasica. ipa hbactestpara verificar acceso —ipa hbactest --user=X --host=Y --service=Zsimula si el acceso seria permitido o denegado. Es la herramienta de diagnostico HBAC. Las preguntas presentan escenarios donde hay que usar hbactest para depurar.- Reglas sudo: usuarios + hosts + comandos + RunAs — Una regla sudo completa requiere definir QUIEN (usuarios/grupos), DONDE (hosts), QUE (comandos permitidos) y COMO QUIEN (RunAs). Omitir cualquier componente hace la regla incompleta o inefectiva.
- Grupos POSIX vs no-POSIX vs externos — Grupos POSIX tienen GID numerico (por defecto). No-POSIX no tienen GID (solo organizacion). Externos pueden contener SIDs de AD (para trusts). Las preguntas piden identificar el tipo correcto segun el uso.
- Inscripcion con OTP vs credenciales admin — OTP (
--random) genera una contraseña de un solo uso para inscribir clientes sin dar credenciales de admin. Es mas seguro para inscripciones delegadas. Las preguntas evaluan cuando usar OTP vs admin directo. - Politicas de contraseñas por grupo con prioridad — La prioridad se define con
--priority=N(menor numero = mayor prioridad). Si un usuario pertenece a multiples grupos con politicas, se aplica la de menor numero de prioridad. Las preguntas presentan escenarios de multiples politicas. - Automember usa regex sobre atributos —
ipa automember-add-conditionusa expresiones regulares (--inclusive-regex) sobre atributos de la entidad para asignar automaticamente a grupos. Las reglas se aplican al CREAR entidades; para reaplicar a existentes usarautomember-rebuild. - ID Views sobrescriben atributos por host —
ipa idoverrideuser-addpermite que un usuario tenga UIDs o homes diferentes en diferentes hosts. Util para servidores legacy. Las preguntas presentan escenarios de migracion donde ID Views es la solucion.