Cómo instalar el servidor FreeIPA con Docker en Debian 11
FreeIPA es una solución de gestión de identidades de código abierto para sistemas operativos Linux/Unix. Es un proyecto ascendente del Sistema de Gestión de Identidades RedHat, que proporciona soluciones de autenticación y autorización para sistemas Linux/Unix.
FreeIPA se basa en múltiples componentes, como el servidor de directorio, DNS, Kerberos, PKI, Certmonger, servidor NTP, interfaz de administración web, etc. Proporciona una fuente centralizada de credenciales de usuario y control de acceso. El uso de FreeIPA permite a los administradores gestionar fácilmente la identidad en un entorno centralizado, y también proporciona supervisión, autenticación y control de acceso de los usuarios.
En esta guía, instalarás y configurarás el servidor FreeIPA en una máquina Debian 11 mediante Docker. Instalarás Docker CE (Community Edition), construirás una imagen Docker del Servidor FreeIPA, instalarás el Servidor FreeIPA y, a continuación, aprenderás la gestión básica del servidor FreeIPA. Además, también aprenderás a añadir una máquina cliente Linux como cliente FreeIPA al servidor FreeIPA que se ejecuta como contenedor Docker.
Requisitos previos
Para esta guía, necesitarás un servidor Linux que ejecute Debian 11 con un mínimo de 4 GB de memoria. También necesitarás un usuario root o no root con privilegios de administrador. En cuanto al cliente, puedes utilizar cualquier distribución de Linux, pero para este ejemplo, utilizarás Ubuntu como máquina cliente de FreeIPA.
Configurar el FQDN y la zona horaria
Antes de instalar Docker y FreeIPA, primero debes asegurarte de que tienes el fqdn (nombre de dominio completo) adecuado, el archivo ‘/etc/hosts ‘ correcto y también la zona horaria adecuada. En este primer paso, configurarás la fqdn, el archivo /etc.hosts y la zona horaria en tu servidor Debian.
Para empezar, configura el fqdn de tu servidor FreeIPA introduciendo el siguiente comando.
sudo hostnamectl set-hostname ipa.hwdomain.lan
Ahora abre el archivo‘/etc/hosts ‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/hosts
Añade los detalles de la dirección IP, el fqdn y el nombre de host de tu sistema.
192.168.5.10 ipa.hwdomain.lan ipa
Guarda y cierra el archivo cuando hayas terminado.
Ahora escribe el siguiente comando para verificar la fqdn de tu sistema y asegurarte de que la fqdn apunta a la dirección IP interna correcta.
sudo hostname -f sudo ping -c3 ipa.hwdomain.lan
A continuación, introduce el siguiente comando para configurar la zona horaria de tu sistema. Asegúrate de cambiar la zona horaria en el siguiente comando con la zona horaria de tu servidor.
sudo timedatectl set-timezone Europe/Stockholm
Introduce el siguiente comando para configurar la hora local de tu sistema.
sudo unlink /etc/localtime sudo ln -s /usr/share/timezone/Europe/Stockholm /etc/localtime
Ahora ve al siguiente paso para iniciar la instalación de Docker CE.
Instalación de Docker CE
El Servidor FreeIPA puede instalarse de muchas formas, en cuanto a las distribuciones basadas en Debian, puedes utilizar Docker. En esta sección, instalarás Docker CE (Community Edition) a través del repositorio oficial de Docker, y también configurarás tu usuario para poder ejecutar y ejecutar contenedores Docker.
En primer lugar, introduce el siguiente comando apt para instalar las dependencias básicas. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.
sudo apt install ca-certificates \ curl \ gnupg \ git \ lsb-release
A continuación, añade y descarga la clave GPG del repositorio Docker CE.
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Una vez añadida la clave GPG, introduce el siguiente comando para añadir el repositorio Docker CE.
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Ahora ejecuta el siguiente comando‘apt update‘ para actualizar y refrescar el índice de paquetes de Debian.
sudo apt update
A continuación, instala los paquetes de Docker CE introduciendo el siguiente comando «apt install». Introduce y para confirmar cuando se te pida y pulsa ENTER para continuar.
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Con Docker CE instalado, también se ejecuta y habilita automáticamente. ejecuta el comando‘systemctl‘ que aparece a continuación para verificar el servicio Docker.
sudo systemctl is-enabled docker sudo systemctl status docker
Deberías ver la salida ‘habilitado‘, que significa que el servicio Docker se ejecutará automáticamente al iniciar el sistema. Y la salida ‘activo(en ejecución)‘ confirma que el servicio Docker actual se está ejecutando.
Por último, si piensas ejecutar tu aplicación Docker a través de un usuario no root, debes añadir tu usuario al grupo ‘docker’. Escribe el siguiente comando para añadir tu usuario al grupo ‘docker‘. En este ejemplo, añadirás un usuario«bob» al grupo «docker«.
sudo usermod -aG docker bob
Ahora inicia sesión como el usuario‘bob’ y escribe el comando docker que aparece a continuación para ejecutar el contenedor‘hello-world‘. si tiene éxito, deberías ver el mensaje de bienvenida del contenedor impreso en la pantalla de tu terminal.
su - bob docker run hello-world
Con esto, ya has ejecutado y puesto en marcha con éxito el contenedor Docker como usuario no root con el usuario llamado ‘bob‘. En el resto de esta guía, ejecutarás comandos dentro del usuario ‘bob‘.
Construir la imagen Docker de FreeIPA
En esta sección, construirás la imagen Docker para el servidor FreeIPA. Para ello, puedes descargar fácilmente el repositorio de contenedores de FreeIPA desde la página oficial de FreeIPA en GitHub. Después, puedes elegir cualquier distribución de Linux para la imagen base.
En primer lugar, instala‘git‘ en tu servidor Debian mediante el comando apt que aparece a continuación. Cuando se te solicite, introduce y para confirmar, y pulsa INTRO.
sudo apt install git
Ahora ejecuta el siguiente comando git para descargar el repositorio ‘freeipa-container en tu sistema. A continuación, mueve tu directorio de trabajo a él.
git clone https://github.com/freeipa/freeipa-container.git cd freeipa-container
Ahora ejecuta el siguiente comando‘ls‘ para verificar la lista de archivos y directorios del repositorio ‘freeipa-container’. Deberías ver varios archivos de Dockerfile que puedes utilizar para configurar el servidor FreeIPA en tu sistema Debian.
ls
A continuación, introduce el siguiente comando para crear una nueva imagen Docker del servidor FreeIPA. En este ejemplo, crearás una imagen Docker del servidor FreeIPA basada en‘AlmaLinux 9‘ y se llamará‘freeipa-almalinux9‘.
docker build -t freeipa-almalinux9 -f Dockerfile.almalinux-9 .
Una vez ejecutado el comando‘docker build‘, deberías ver el proceso de construcción de la imagen Docker para el servidor FreeIPA.
Cuando finalice el proceso, deberías ver la salida‘naming to …/…/freeipa-almalinux9‘.
Ejecuta el siguiente comando para verificar la lista de imágenes Docker disponibles en tu sistema. Deberías ver la imagen Docker llamada‘freeipa-almalinux9‘ creada y disponible en tu sistema.
docker images
Con la imagen Docker FreeIPA creada, instalarás el servidor FreeIPA y la configuración a través de Docker.
Creación del contenedor del servidor FreeIPA
En esta sección, instalarás y configurarás el servidor FreeIPA a través del contenedor Docker. Ejecutarás un nuevo contenedor con la imagen base‘freeipa-almalinux9‘ que has creado, y a continuación iniciarás las configuraciones del servidor FreeIPA. Una vez finalizadas las configuraciones, a continuación establecerás la asignación de puertos del contenedor del servidor FreeIPA a la máquina anfitriona Docker.
En primer lugar, escribe el siguiente comando para crear un nuevo directorio de datos ‘/var/lib/freeipa-data’. Éste se utilizará como directorio de datos del servidor FreeIPA.
sudo mkdir -p /var/lib/freeipa-data
Ahora ejecuta el siguiente comando ‘docker run’ para crear y ejecutar el contenedor del servidor FreeIPA. En este ejemplo, crearás un nuevo contenedor FreeIPA llamado‘freeipa-server-almalinux9‘ y almacenarás los datos del servidor FreeIPA en la máquina anfitriona en el directorio ‘/var/lib/freeipa-data‘.
docker run --name freeipa-server-almalinux9 -ti \ -h ipa.hwdomain.lan --read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /var/lib/freeipa-data:/data:Z freeipa-almalinux9
Durante la instalación, se te pedirán algunas configuraciones del servidor FreeIPA.
Cuando se te pida configurar el DNS integrado mediante BIND, pulsa ENTER o introduce no.
Ahora introduce el nombre de host del servidor, el nombre de dominio y el REALM de tu servidor FreeIPA.
Escribe ahora una nueva contraseña y repítelo para el gestor de directorios y el usuario administrador IPA.
Para el nombre NetBIOS, déjalo por defecto y pulsa ENTER. En cuanto a la configuración NTP, introduce no o simplemente pulsa ENTER.
Ahora comprueba y verifica la configuración de la instalación de tu servidor FreeIPA. Cuando hayas terminado, escribe«sí» y pulsa INTRO para confirmar. Con esto, la configuración del servidor FreeIPA debería estar en marcha y tardar.
Cuando termine la configuración del servidor FreeIPA, deberías recibir una salida como ‘Configuración completada‘ y las instrucciones para los siguientes pasos.
Ahora abre una nueva sesión de terminal y conéctate a tu servidor Debian. A continuación, conéctate como usuario‘bob‘ e introduce el siguiente comando docker para verificar el contenedor en ejecución en tu sistema.
docker ps
Deberías ver el contenedor llamado‘freeipa-server-almalinux9‘ con el estado‘Up‘.
En este punto, el servidor FreeIPA se está ejecutando con datos que ahora se almacenan en el directorio‘/var/lib/freeipa-data‘. En el siguiente paso, debes añadir la asignación de puertos para el servidor FreeIPA.
Introduce el siguiente comando para detener el contenedor ‘freeipa-server-almalinux9’ y eliminarlo. Esto eliminará el contenedor, pero no el directorio de datos ‘/var/lib/freeipa-data’.
docker stop freeipa-server-almalinux9 docker rm freeipa-server-almalinux9
A continuación, ejecuta el siguiente comando para crear un nuevo contenedor con asignación de puertos para el servidor FreeIPA. Esto creará una nueva versión del contenedor‘freeipa-server-almalinux9‘ con una asignación de puertos específica para la máquina anfitriona y utilizando los mismos datos que el servidor FreeIPA anterior.
docker run --name freeipa-server-almalinux9 -ti \ -h ipa.hwdomain.lan -p 53:53/udp -p 53:53 -p 80:80 -p 443:443 -p 389:389 -p 636:636 -p 88:88 -p 464:464 -p 88:88/udp -p 464:464/udp -p 123:123/udp \ --read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /var/lib/freeipa-data:/data:Z freeipa-almalinux9
Pasa de nuevo a otra sesión de terminal y ejecuta el siguiente comando para detener e iniciar de nuevo el contenedor ‘ freeipa-server-almalinux9‘. Así te asegurarás de que el contenedor ‘ freeipa-server-almalinux9 ‘ se está ejecutando en segundo plano.
docker stop freeipa-server-almalinux9 docker start freeipa-server-almalinux9
Comprueba de nuevo la lista de contenedores en ejecución de tu sistema y verás que el contenedor » freeipa-server-almalinux9 » se está ejecutando con nuevos puertos asignados a la máquina anfitriona.
docker ps
Con esto, el despliegue del Servidor FreeIPA mediante Docker ha terminado. Tu servidor FreeIPA ya es accesible desde los clientes y además has configurado la contraseña de administrador tanto para IPA admin como para Directory Manager.
Autenticarse contra el Servidor FreeIPA
Tras instalar el servidor FreeIPA mediante Docker, ahora verificarás la instalación autenticándote en el servidor FreeIPA Kerberos desde el servidor anfitrión Docker. Para ello, debes asegurarte de que el nombre de dominio de tu servidor FreeIPA apunta al servidor correcto, y debes tener instaladas las utilidades cliente Kerberos.
Antes de empezar, abre el archivo‘/etc/hosts‘ en tu sistema Debian utilizando el siguiente comando del editor nano.
sudo nano /etc/hosts
Añade las siguientes líneas al archivo y asegúrate de cambiar la dirección IP y el nombre de dominio por el host de tu Servidor FreeIPA.
192.168.5.10 ipa.hwdomain.lan
Guarda y cierra el archivo cuando hayas terminado.
A continuación, instala el paquete«krb5-user» en tu sistema mediante el siguiente comando apt. Esto instalará algunas utilidades Kerberos que se pueden utilizar para conectarse a tu servidor FreeIPA.
sudo apt install krb5-user
Introduce y cuando se te pida y pulsa ENTER para continuar.
Cuando se te pida la configuración REALM por defecto, introduce el REALM de tu servidor FreeIPA – En este ejemplo, el REALM es‘HWDOMAIN.LAN‘.
En cuanto al servidor Kerberos, introduce el nombre de dominio de tu servidor FreeIPA, por ejemplo ‘ipa.hwdomain.lan’.
Utiliza el mismo valor para el servidor administrativo del reino Kerberos: ‘ipa.hwdomain.lan’.
Ahora la instalación debería estar terminada y se generan nuevas configuraciones en el archivo‘/etc/krb5.conf‘.
Con las utilidades Kerberos instaladas, introduce el siguiente comando para probar la autenticación en el servidor Kerberos que se ejecuta como contenedor Docker. Cuando se te solicite, introduce la contraseña de administrador de tu servidor FreeIPA.
kinit admin
Introduce el siguiente comando para verificar la autenticación en el servidor Kerberos. Cuando lo consigas, deberías obtener los detalles de los tickets de tu autenticación Kerberos.
klist
Por último, también puedes visitar el panel de administración web de tu servidor FreeIPA. Asegúrate de que el nombre de dominio de tu servidor FreeIPA está añadido al archivo ‘/etc/hosts‘ de tu máquina local.
Abre tu navegador web y visita el nombre de dominio del servidor FreeIPA (por ejemplo: https://ipa.hwdomain.lan/). Cuando lo consigas, deberías ver la página de acceso al servidor FreeIPA.
Introduce el usuario admin y tu contraseña, y haz clic en Iniciar sesión.
Cuando la autenticación sea correcta, deberías ver el panel de administración web de tu servidor FreeIPA.
Añadir usuario y grupo FreeIPA a través del comando Linux
Existen diferentes métodos para gestionar el servidor FreeIPA que se ejecuta como un contenedor Docker, puedes gestionarlo a través de un panel de administración web o gestionando el directorio desde el contenedor del servidor FreeIPA. En esta sección, gestionarás el usuario y el grupo FreeIPA a través de la utilidad de comandos ‘ipa’ desde el contenedor del servidor FreeIPA.
En primer lugar, introduce el siguiente comando para iniciar sesión en el contenedor‘freeipa-server-almalinux9 ‘.
docker exec -it freeipa-server-almalinux9 /bin/bash
Una vez dentro, autentifícate en el servidor Kerberos mediante el usuario«admin«. A continuación, verifica los datos del ticket Kerberos. Cuando se te pida la contraseña, introduce la contraseña de tu Gestor de directorios.
kinit admin klist
Una vez autenticado en Kerberos, ya puedes empezar a configurar el servidor FreeIPA.
Introduce el siguiente comando‘ipa config-mod‘ para configurar el shell por defecto para los usuarios de FreeIPA a ‘/bin/bash‘.
ipa config-mod --defaultshell=/bin/bash
Deberías ver el detalle de las configuraciones de usuario para el servidor FreeIPA.
A continuación, introduce el siguiente comando para crear un nuevo usuario FreeIPA llamado‘ubuntu‘. Introduce también una nueva contraseña cuando se te pida y repite.
ipa user-add ubuntu --first=Ubuntu --last=Linux --password
Una vez añadido, deberías obtener una salida como‘Usuario añadido «ubuntu»‘.
Ahora introduce el siguiente comando para encontrar el usuario‘ubuntu’ en tu servidor FreeIPA. Cuando el usuario esté disponible, deberías obtener una salida como ‘1 usuario encontrado‘. También puedes ver los detalles del usuario ‘ubuntu‘.
ipa user-find ubuntu
También puedes obtener los detalles de los usuarios disponibles en FreIPA introduciendo el siguiente comando.
ipa user-show --raw ubuntu
A continuación se muestra una salida similar a la que obtendrás.
A continuación, crea un nuevo grupo‘desarrollo‘ utilizando el comando ‘ipa group-add’ y verifica el grupo para asegurarte de que está añadido y disponible.
ipa group-add --desc='Development Team' development ipa group-find development
Ahora ejecuta el siguiente comando ‘ipa group-add-member’ para añadir el usuario FreeIPA‘ubuntu‘ al grupo‘desarrollo’.
ipa group-add-member --user=ubuntu development
Comprueba el detalle del grupo‘desarrollo’ utilizando el siguiente comando. Deberías ver al usuario‘ubuntu’ añadido al grupo‘desarrollo’.
ipa group-show development
Añadir hosts al servidor FreeIPA
FreeIPA proporciona la forma más sencilla de añadir un nuevo host al servidor FreeIPA, lo que puede hacerse mediante el paquete cliente FreeIPA que proporciona la utilidad ‘ipa-client-install’. En esta sección, añadirás una máquina Ubuntu al servidor FreeIPA ‘ipa.hwdomain.lan‘ que se ejecuta como contenedor.
A continuación se indican los pasos que debes seguir para añadir un nuevo host al servidor FreeIPA:
- Configurar el FQDN y la zona horaria de la máquina Cliente
- Instalar los paquetes del Cliente FreeIPA
- Verificar la máquina Cliente FreeIPA
Ahora vamos a añadir la máquina Ubuntu al contenedor Docker del Servidor FreeIPA.
Configurar el FQDN y la zona horaria
En primer lugar, inicia sesión en tu máquina cliente y configura el fqdn utilizando el siguiente comando.
sudo hostnamectl set-hostname client01.hwdomain.lan
Ahora abre el archivo de configuración‘/etc/hosts‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/hosts
Añade las siguientes líneas al archivo y asegúrate de cambiar los detalles de la dirección IP, el fqdn y el nombre de host.
192.168.5.10 ipa.hwdomain.lan ipa 192.168.5.121 client01.hwdomain.lan client01
Guarda el archivo cuando hayas terminado.
Ahora introduce el siguiente comando para asegurarte de que la fqdn de la máquina cliente apunta a la dirección IP correcta y de que el nombre de dominio del servidor FreeIPA también apunta a la dirección IP correcta y adecuada.
ping -c3 ipa.hwdomain.lan ping -c3 client01.hwdomain.lan
A continuación, introduce el siguiente comando para configurar la zona horaria de tu máquina cliente.
sudo timedatectl set-timezone Europe/Stockholm
Por último, introduce el siguiente comando para configurar el archivo‘/etc/localtime‘ con la zona horaria adecuada.
sudo unlink /etc/localtime sudo ln -s /usr/share/timezone/Europe/Stockholm /etc/localtime
Instalación del cliente FreeIPA
En primer lugar, actualiza y refresca el índice de paquetes de Ubuntu mediante el comando apt que aparece a continuación.
sudo apt update
Ahora instala el paquete cliente FreeIPA mediante el siguiente comando. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.
sudo apt install freeipa-client oddjob-mkhomedir
Cuando se te pida el nombre de dominio REALM por defecto, introduce tu dominio principal, por ejemplo«HWDOMAIN.LAN«.
Introduce el nombre de dominio del dominio Kerberos con el dominio del servidor FreeIPA‘ipa.hwdomain.lan‘.
Por último, introduce de nuevo el nombre de dominio del servidor FreeIPA ‘ipa.hwdomain.lan’ como servidor administrativo para el servidor Kerberos.
Una vez instalado el paquete cliente FreeIPA, ejecuta el siguiente comando‘ipa-client-install‘ para añadir la máquina cliente al servidor FreeIPA. Asegúrate de cambiar los detalles del nombre de dominio y del dominio del servidor FreeIPA.
ipa-client-install --hostname=`hostname -f` \ --mkhomedir \ --server=ipa.hwdomain.lan \ --domain hwdomain.lan \ --realm HWDOMAIN.LAN
Cuando se te pregunte si deseas utilizar las configuraciones fijas, introduce sí para confirmar y pulsa INTRO. En cuanto al servidor NTP, déjalo por defecto en no. Por último, vuelve a introducir sí para confirmar la instalación.
A continuación se muestra la salida durante la instalación y las configuraciones.
Una vez finalizada la instalación, aparecerá en la pantalla de tu terminal el mensaje«El comando ipa-client-install se ha instalado correctamente«.
Verificar el cliente FreeIPA del host
Desde el servidor FreeIPA, escribe el siguiente comando para conectarte a la máquina cliente ‘192.168.5.121’ utilizando el usuario FreeIPA ‘ubuntu’. Cuando se te solicite, introduce «sí» para confirmar y añade la huella SSH de la máquina cliente; a continuación, introduce la contraseña del usuario FreeIPA «ubuntu».
ssh [email protected]
Una vez iniciada la sesión, se te pedirá que cambies la contraseña actual por defecto. Así que, introduce la contraseña actual e introduce la nueva contraseña y repite.
Por último, introduce el siguiente comando para identificar a tu usuario actual. Deberías ver que has iniciado sesión en la máquina cliente a través del usuario‘ubuntu‘, que también forma parte del grupo‘desarrollo‘.
id whoami
Conclusión
En este tutorial, has aprendido a instalar y desplegar el servidor FreeIPA mediante Docker en un servidor Debian 11. También has aprendido el uso básico del comando ‘ipa’ para crear y gestionar usuarios y grupos de FreeIPA, y también has aprendido a obtener un ticket Kerberos mediante el comando kinit y a iniciar sesión en la administración web de FreeIPA mediante el usuario y contraseña admin.
Por último, también has añadido una máquina cliente ubuntu al servidor FreeIPA mediante el paquete cliente FreeIPA. Has aprendido paso a paso cómo hacerlo, y también has verificado tu configuración accediendo a la máquina cliente mediante el usuario FreeIPA.
Con esto, ya puedes añadir más hosts, usuarios y grupos a tu servidor FreeIPA. También puedes integrar FreeIPA en tu producción. Para obtener información detallada, visita la documentación oficial de FreeIPA.