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

instalar dependencias

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

configurar repositorio

Ahora ejecuta el siguiente comando‘apt update‘ para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

actualizar repo

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

instalar docker

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.

verificar docker

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 usuariobob’ 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

setup docker no root

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

instalar 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

clonar repositorio freeipa

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

list dockerfiles

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.

crear imágenes docker

Cuando finalice el proceso, deberías ver la salida‘naming to …/…/freeipa-almalinux9‘.

construir terminado

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

verificar imágenes

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.

crear contenedor servidor freeipa

Cuando se te pida configurar el DNS integrado mediante BIND, pulsa ENTER o introduce no.

sin configuración dns

Ahora introduce el nombre de host del servidor, el nombre de dominio y el REALM de tu servidor FreeIPA.

configurar reino y dominio

Escribe ahora una nueva contraseña y repítelo para el gestor de directorios y el usuario administrador IPA.

administrador y gestor de 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.

netbios en casa

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.

verificar ajustes

Cuando termine la configuración del servidor FreeIPA, deberías recibir una salida como ‘Configuración completada‘ y las instrucciones para los siguientes pasos.

configuración finalizada

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‘.

contenedor freeipa en funcionamiento

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

comprueba los puertos de contenedores

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.

instalar kinit

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‘.

reino por defecto

En cuanto al servidor Kerberos, introduce el nombre de dominio de tu servidor FreeIPA, por ejemplo ‘ipa.hwdomain.lan’.

dominio por defecto

Utiliza el mismo valor para el servidor administrativo del reino Kerberos: ‘ipa.hwdomain.lan’.

dominio por defecto

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

autentificación contra el servidor Kebreros

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.

página de acceso a freeipa

Cuando la autenticación sea correcta, deberías ver el panel de administración web de tu servidor FreeIPA.

panel de administración de 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

login freeipa contenedor

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.

configuración de usuario por defecto

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»‘.

crear usuario

Ahora introduce el siguiente comando para encontrar el usuarioubuntu’ 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

verificar usuario

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.

mostrar usuario

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

crear grupo

Ahora ejecuta el siguiente comando ‘ipa group-add-member’ para añadir el usuario FreeIPA‘ubuntu‘ al grupodesarrollo’.

ipa group-add-member --user=ubuntu development

Comprueba el detalle del grupodesarrollo’ utilizando el siguiente comando. Deberías ver al usuarioubuntu’ añadido al grupodesarrollo’.

ipa group-show development

añadir usuario al grupo

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

configurar máquina cliebnt

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

instalar cliente freeipa

Cuando se te pida el nombre de dominio REALM por defecto, introduce tu dominio principal, por ejemplo«HWDOMAIN.LAN«.

reino por defecto

Introduce el nombre de dominio del dominio Kerberos con el dominio del servidor FreeIPA‘ipa.hwdomain.lan‘.

dominio por defecto

Por último, introduce de nuevo el nombre de dominio del servidor FreeIPA ‘ipa.hwdomain.lan’ como servidor administrativo para el servidor Kerberos.

reino kerberos por defecto

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ñadir cliente a freeipa

A continuación se muestra la salida durante la instalación y las configuraciones.

autentifica

Una vez finalizada la instalación, aparecerá en la pantalla de tu terminal el mensaje«El comando ipa-client-install se ha instalado correctamente«.

cliente añadido

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.

inicio de sesión en la máquina cliente a través del servidor FreeIPA

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

verificar usuario

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.

También te podría gustar...