10-06-2024, 07:05 PM
(This post was last modified: 10-06-2024, 07:30 PM by Ganekogorta.)
Hola
Voy a describir como instalar en docker y configurar a Authelia.
Este servicio permite agregar segundos factores (2FA) de autenticación a webs de nuestra nas o red.
Tiene varios requisitos previos para su instalación y funcionamiento:
Recomendable tener el contenedor de Portainer para facilitarnos la gestión de los docker.
Los puntos que vamos a ver son los siguientes:
1-Descripción a grandes rasgos de la funcionalidad de Authelia.
Básicamente lo que hace Authelia es interceptar la llamada a un servicio web y presentarnos una pantalla de login con 2FA.
Los usuarios, claves y otros datos son los que tenemos ya definidos en nuestro LDAP.
Tras esta primera identificación se nos presenta la petición del segundo factor de autenticación. que puede ser un código de un sólo uso temporal (hay que tener en hora los dispositivos) o incluso el uso de una llave hardware tipo Yubikey.
Una vez pasada esta segunda barrera, se nos presentará la web destino y otras que estén protegidas por Authelia durante un periodo definido en la configuración de Authelia.
Es particularmente interesante ya que podemos añadir una capa de protección a webs que son susceptibles de tener vulnerabilidades y no son corregidas con celeridad por su creador o simplemente queremos estén ocultas a nivel público.
2-instalación del docker redis
Este contenedor nos puede proporciona accesos a una base de datos de vigencia limitada que queda ubicada en memoria, una caché distribuida de base de datos clave-valor, y hacer de servidor de caché de objetos persistentes. Aunque tiene mas funciones.
Seguramente Authelia lo usará para almacenar a los usuarios activos y que han pasado con éxito el segundo factor.
Tras el periodo de vigencia, se eliminarán y volverá a pedir esa credenciales.
Afortunadamente, para nosotros, su uso es transparente y no hay que hacer ninguna configuración, sólo hemos de tenerlo en funcionamiento.
Para generar el docker podemos ejecutar el siguiente comando de consola:
O bien en formato YAML
Independientemente del sistema elegido, sólo hemos de dejar funcionando este docker.
3-usuarios de LDAP
En el servidor de LDAP debemos tener definidos los usuarios que queramos que vayan a usar Authelia.
Podremos incluso tenerlos diferenciado del resto creando un grupo em el LDAP y luego deberíamos hacer un filtrado de estos en el archivo de configuraciones de Authelia.
Por simplificar simplemente vamos a crear un par de usuarios en el grupo por defecto.
No tiene que ser obligatorio que la nas de QNAP sea el servidor de LDAP, podríamos tenerlo en otro equipo con FreeIPA por poner un ejemplo.
Para el caso de QNAP los filtros a tener en cuenta en su LDAP son:
Así de esta forma, para generar mas usuarios con permisos a las web, sólo hemos de crearlos en en LDAP de la nas y no hemos de hacer nava en Authelia.
Es cierto que hay una forma de no usar LDAP y tener los usuarios/sus claves en un archivo de configuración extra.
Lo contaré al final del post ya que es un sistema un poco mas complicadillo de hacer y sobre todo de generar y gestionar si lo comparamos con el LDAP integrado en la NAS.
4-Creamos la base de datos vacía
En nuestro caso la llamaremos "db_authelia", de usuario "usuario_authelia" y clave "clave_authelia". Evidentemente usaremos nombres y claves de nuestra elección.
Abrimos nuestro PhpMyAdmin y lo generamos tal como se muestra en este otro post.
5-Archivo básico de configuración de Authelia
La configuración de Authelia se crea y guarda en un archivo . yml
Este archivo lo vamos a dejar en un carpeta compartida que haremos persistente de cara al docker para que podamos editarlo externamente.
El archivo se llama "configuration.yml" y tendrá un contenido similar a esto
Tendremos que adaptar la anterior configuración a nuestros datos de ip de nas, usuarios, claves.
Se distinguen varias secciones, como la de acceso LDAP, redis, MariaDB/mysql y la de envío de correo SMTP.
esta última es importante a que cuando por primera vez un usuario de LDAP va a necesitar un segundo facto, le será enviado un correo con instrucciones para hacer esa primera configuración.
Una vez lo tengamos a nuestra necesidades, lo guardaremos en la carpeta compartida \share\DockerData\authelia
6-Instalación del docker de Authelia
Ahora teniendo ejecutando la MariaDB, redis y LDAP, lanzamos el docker por consola con el siguiente comando
o bien si queremos crearlo por formato YAML usaremos lo siguiente
He optado por obligar a la versión 4.38.4 que a día de hoy es la última.
Lo he hecho así ya que he visto cambios en las últimas versiones y no quiero a arriesgarme a que saquen una versión posterior "latest" que tenga parámetros incompatibles con la 4.38.4
Si todo ha ido bien, tras unos instantes tendremos a authelia ejecutando y publicando por el puerto 9091.
Comprobadlo ya que si no lo hace o tarde muuucho, hay que echar una ojeada al log del docker para ver que está pasando (Ldap detenido, errores de sintaxis,...)
7-Comprobación de acceso a la web de authelia en Nginx Proxy Manager
En nuestro proveedor de DNS, creamos una nueva de acceso a Authelia, por ejemplo authelia.mi_dominio.es
En nuestro Nginx Proxy Manager lo definimos con los siguientes parámetros tal como muestran las siguiente imágenes
Y en la última lengüeta
escribiremos lo siguiente en Nginx Custom Configuration
Ahora vamos a comprobar que su accedemos a https://autehlia.mi_dominio.es se nos presenta la siguiente pantalla de login
8- Reconfiguración de parámetros en las webs de Nginx Proxy Manager
Ahora sólo nos queda añadir unos códigos para aquellas web que indicamos en el archivo de configuración que iban a tener acceso vía portal de Authelia
Según el ejemplo eran "galeria.mi_dominio.es", "familia.mi_dominio.es" y "secretillos.mi_dominio.es"
Las editamos en Nginx Proxy Manager y en la última lengüeta escribiremos lo siguiente en el campo Nginx Custom Configuration
Hacemos los cambios adecuados a nuestra web y damos nombres únicos por variable $upstream_NOMBRE1.
Por seguir con el ejemplo podemos usar $upstream_galeria, $upstream_secretillos y $upstream_familia
Si todo ha ido bien, cuando vayamos a las web galeria.mi_dominio.es, secretillos.mi_dominio.es y familia.mi_dominio.es, se nos presentará la web de authelia.
9-Activación por primera vez del 2FA
Cuando nos identifiquemos por primera vez en la web "authelia.mi_dominio.es com" con un usuario creado en el LDAP, se nos lanzará un proceso para elegir y definir el tipo de 2FA.
Podemos activar mas de uno.
Y comienza el asistente, pulsamos sobre registrar dispositivo
y nos da dos opciones.
Si pulsamos sobre ADD de One-Time Password
nos enviará un código por correo electrónico con un contenido similar a la siguiente captura
Pulsamos sobre verificar tras escribir el código en la web
Y continuamos con el asistente para agregarlo a nuestro programa de autentificación (Authy, 2FAS Auth, Authenticator de QNAP,...)
Nos presenta en pantalla el código QR para añadirlo
Tras verificarlo, nos lleva a la web de control del usuario.
Si queremos usar una llave hardware en vez de pulsar One-time Password, pulsaremos sobre WebAuthn Credentials.
Ya podemos salir del asistente que ya lo tenemos configurado para ese usuario.
Y con esto hemos terminado y ya tenemos listo al "usuariopruebas" para acceder a las web protegidas con Authelia.
No usar LDAP y hacerlo mediante archivo
Si no queremos que Authelia use LDAP y queremos hacerlo mediante una lista de usuarios de un archivo hay que hacer un cambio en el fichero configuration.yml suprimiendo unas líneas y agregando otras
Las que hay que retirar o comentar poniendo delate un # son las referentes al LDAP.
Según nuestro ejemplo son:
Estas líneas debemos cambiarlas por
Ahora crearemos un archivo llamado "users_database.yml" en la carpeta de la nas "/share/DockerData/authelia".
Siguiendo con el ejemplo, para dos usuarios llamados "mequetrefe" y "mosquito" debería tener una estructura similar a la siguiente:
Hay que cambiar las claves. Y para hacer una nuevas debemos hacerlo por la web https://argon2.online/
La pantalla de generación de las claves será como la de la siguiente captura
Con el botón de copiar de la web podemos luego pegarla en el archivo "users_database.yml"
No es algo que me guste mucho lo de depender de una web para obtener estas claves, pero si no vamos a tener mas que unos pocos usuarios, es una alternativa a usar un LDAP. Recomiendo crear alguna más y tenerlas apuntadas en nuestro gestor de claves.
Nota: Para este post me he apoyado en informaciones de varias fuentes como Authelia, de la web de HDS+ (muy recomendable por cierto),...
Voy a describir como instalar en docker y configurar a Authelia.
Este servicio permite agregar segundos factores (2FA) de autenticación a webs de nuestra nas o red.
Tiene varios requisitos previos para su instalación y funcionamiento:
- *Tenemos que tener un base de datos creada en MariaDB vía PhpMyAdmin. Por ejemplo podría ser de nombre "authelia" o "db_authelia"
- *Tener un servidor LDAP funcionando en QNAP, aunque no es estrictamente necesario e incluso no tiene que estar en la nas.
- *Tener el docker de Nginx Proxy Manager que puede estar usando MariaDB.
- *Tener un dominio y una gestión de sus dns, para asociar las webs a ip o direcciones.
- *Evidentemente, tener activo Container Station para ejecutar dockers
- *Tener una carpeta compartida para tener datos persistentes para el docker
- *datos smtp de un cuenta de correo para el envío correos.
Recomendable tener el contenedor de Portainer para facilitarnos la gestión de los docker.
Los puntos que vamos a ver son los siguientes:
- 1-Descripción a grandes rasgos de la funcionalidad de Authelia.
- 2-instalación del docker redis
- 3-usuarios de LDAP
- 4-Creamos la base de datos vacía
- 5-archivo básico de configuración de Authelia
- 6-Instalación del docker de Authelia
- 7-Comprobación de acceso a la web de authelia en Nginx Proxy Manager
- 8-Reconfiguración de parámetros en las webs de Nginx Proxy Manager
- 9-Activación por primera vez del 2FA
1-Descripción a grandes rasgos de la funcionalidad de Authelia.
Básicamente lo que hace Authelia es interceptar la llamada a un servicio web y presentarnos una pantalla de login con 2FA.
Los usuarios, claves y otros datos son los que tenemos ya definidos en nuestro LDAP.
Tras esta primera identificación se nos presenta la petición del segundo factor de autenticación. que puede ser un código de un sólo uso temporal (hay que tener en hora los dispositivos) o incluso el uso de una llave hardware tipo Yubikey.
Una vez pasada esta segunda barrera, se nos presentará la web destino y otras que estén protegidas por Authelia durante un periodo definido en la configuración de Authelia.
Es particularmente interesante ya que podemos añadir una capa de protección a webs que son susceptibles de tener vulnerabilidades y no son corregidas con celeridad por su creador o simplemente queremos estén ocultas a nivel público.
2-instalación del docker redis
Este contenedor nos puede proporciona accesos a una base de datos de vigencia limitada que queda ubicada en memoria, una caché distribuida de base de datos clave-valor, y hacer de servidor de caché de objetos persistentes. Aunque tiene mas funciones.
Seguramente Authelia lo usará para almacenar a los usuarios activos y que han pasado con éxito el segundo factor.
Tras el periodo de vigencia, se eliminarán y volverá a pedir esa credenciales.
Afortunadamente, para nosotros, su uso es transparente y no hay que hacer ninguna configuración, sólo hemos de tenerlo en funcionamiento.
Para generar el docker podemos ejecutar el siguiente comando de consola:
Code:
docker run -d --name redis --restart always -v /share/DockerData/redis:/data -p 6379:6379 redis:latest
O bien en formato YAML
Code:
version: "3.5"
services:
redis:
image: redis:latest
network_mode: "bridge"
container_name: redis
volumes:
- "/share/DockerData/redis:/data"
ports:
- "6379:6379"
restart: always
Independientemente del sistema elegido, sólo hemos de dejar funcionando este docker.
3-usuarios de LDAP
En el servidor de LDAP debemos tener definidos los usuarios que queramos que vayan a usar Authelia.
Podremos incluso tenerlos diferenciado del resto creando un grupo em el LDAP y luego deberíamos hacer un filtrado de estos en el archivo de configuraciones de Authelia.
Por simplificar simplemente vamos a crear un par de usuarios en el grupo por defecto.
No tiene que ser obligatorio que la nas de QNAP sea el servidor de LDAP, podríamos tenerlo en otro equipo con FreeIPA por poner un ejemplo.
Para el caso de QNAP los filtros a tener en cuenta en su LDAP son:
- base_dn: dc=mi_dominio,dc=es
- additional_users_dn: ou=people
- additional_groups_dn: ou=group
- user: cn=admin,dc=mi_dominio,dc=es
Así de esta forma, para generar mas usuarios con permisos a las web, sólo hemos de crearlos en en LDAP de la nas y no hemos de hacer nava en Authelia.
Es cierto que hay una forma de no usar LDAP y tener los usuarios/sus claves en un archivo de configuración extra.
Lo contaré al final del post ya que es un sistema un poco mas complicadillo de hacer y sobre todo de generar y gestionar si lo comparamos con el LDAP integrado en la NAS.
4-Creamos la base de datos vacía
En nuestro caso la llamaremos "db_authelia", de usuario "usuario_authelia" y clave "clave_authelia". Evidentemente usaremos nombres y claves de nuestra elección.
Abrimos nuestro PhpMyAdmin y lo generamos tal como se muestra en este otro post.
5-Archivo básico de configuración de Authelia
La configuración de Authelia se crea y guarda en un archivo . yml
Este archivo lo vamos a dejar en un carpeta compartida que haremos persistente de cara al docker para que podamos editarlo externamente.
El archivo se llama "configuration.yml" y tendrá un contenido similar a esto
Code:
# Authelia configuration #
theme: dark
server:
host: 0.0.0.0
port: 9091
# Podemos evitar dejarla escrita aquí si definimos la variable AUTHELIA_JWT_SECRET_FILE
jwt_secret: '0123456789012345678901234567896DD68A91F3861160FD0198C21F12345678'
# podemos obtener claves robustas de este tipo en https://www.grc.com/passwords.htm
default_redirection_url: https://authelia.mi_dominio.es
## Configuracion de la autenticacón de usuarios
## podemos usar `file` o `ldap`, pero son excluyentes entre si.
## usamos el LDAP de la QNAP
authentication_backend:
ldap:
implementation: custom
url: ldap://www.xxx.yyy.zzz # la ip local de nuesta nas
start_tls: false
base_dn: dc=mi_dominio,dc=es # valores del LDAP
additional_users_dn: ou=people
additional_groups_dn: ou=group
users_filter: (&({username_attribute}={input})(objectClass=person))
groups_filter: (&(uniquemember={dn})(objectclass=groupOfUniqueNames))
user: cn=admin,dc=mi_dominio,dc=es # valores del LDAP
password: ClaveSecreta # Clave del admin del LDAP de la QNAP
totp:
issuer: authelia.mi_dominio.es
period: 30
skew: 1
access_control:
default_policy: deny
rules:
# direcciones web que no piden 2FA
- domain:
- "www.mi_dominio.es"
- "authelia.mi_dominio.es"
- "pruebas.mi_dominio.es"
policy: bypass
# direcciones web que PIDEN 2FA
- domain:
- "galeria.mi_dominio.es" #galeria de trabajos
- "familia.mi_dominio.es" #web de fotos familiares
- "secretillos.mi_dominio.es" #web de notas personales
policy: two_factor
session:
name: authelia_session
# Podemos evitar dejarla escrita aquí si definimos la variable AUTHELIA_SESSION_SECRET_FILE
secret: '0123456789012345678901234567896DD68A91F3861160FD0198C21F12345678'
expiration: 3600 # 1 hora
inactivity: 600 # 10 minutos
domain: mi_dominio.es
redis:
host: www.xxx.yyy.zzz # la ip local de redis que será la de nuesta nas
port: 6379
regulation:
max_retries: 3
find_time: 1200
ban_time: 36000
storage:
mysql:
host: www.xxx.yyy.zzz # la ip local de MariaDB que será la de nuesta nas
port: 3307 # puerto de nuestra mysql/MariaDB
database: db_authelia # nombre de la base de datos. Poner la que que escribimos en el punto 4
username: usuario_authelia # nombre del usuario que definimos en el punto 4
password: clave_authelia # clave del usuario definimos en el punto 4
encryption_key: 'superclave01234567890123456789superclave' #clave aleatoria definida por nosotros
notifier:
smtp:
username: ganekogorta@mi_correo.es
# Podemos evitar dejarla escrita aquí si definimos la variable AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE
password: 'clave de correo electronico'
host: mail.mi_correo.es
port: 587
sender: ganekogorta@mi_correo.es
Tendremos que adaptar la anterior configuración a nuestros datos de ip de nas, usuarios, claves.
Se distinguen varias secciones, como la de acceso LDAP, redis, MariaDB/mysql y la de envío de correo SMTP.
esta última es importante a que cuando por primera vez un usuario de LDAP va a necesitar un segundo facto, le será enviado un correo con instrucciones para hacer esa primera configuración.
Una vez lo tengamos a nuestra necesidades, lo guardaremos en la carpeta compartida \share\DockerData\authelia
6-Instalación del docker de Authelia
Ahora teniendo ejecutando la MariaDB, redis y LDAP, lanzamos el docker por consola con el siguiente comando
Code:
docker run -d --name authelia --restart always -v /share/DockerData/authelia:/config -p 9091:9091 authelia/authelia:4.38.4
o bien si queremos crearlo por formato YAML usaremos lo siguiente
Code:
version: "3.5"
services:
authelia:
image: authelia/authelia:4.38.4
network_mode: "bridge"
container_name: authelia
ports:
- "9091:9091"
volumes:
- "/share/DockerData/authelia/:/config/"
restart: always
He optado por obligar a la versión 4.38.4 que a día de hoy es la última.
Lo he hecho así ya que he visto cambios en las últimas versiones y no quiero a arriesgarme a que saquen una versión posterior "latest" que tenga parámetros incompatibles con la 4.38.4
Si todo ha ido bien, tras unos instantes tendremos a authelia ejecutando y publicando por el puerto 9091.
Comprobadlo ya que si no lo hace o tarde muuucho, hay que echar una ojeada al log del docker para ver que está pasando (Ldap detenido, errores de sintaxis,...)
7-Comprobación de acceso a la web de authelia en Nginx Proxy Manager
En nuestro proveedor de DNS, creamos una nueva de acceso a Authelia, por ejemplo authelia.mi_dominio.es
En nuestro Nginx Proxy Manager lo definimos con los siguientes parámetros tal como muestran las siguiente imágenes
Y en la última lengüeta
escribiremos lo siguiente en Nginx Custom Configuration
Code:
location / {
set $upstream_authelia http://www.xxx.yyy.zzz:9091; # poner la ip de la nas
proxy_pass $upstream_authelia;
client_body_buffer_size 128k;
#Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
# Advanced Proxy Config
send_timeout 5m;
proxy_read_timeout 360;
proxy_send_timeout 360;
proxy_connect_timeout 360;
# Basic Proxy Config
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 64 256k;
# Al estar tras un proxy inverso, reenviamos a las siguientes rangos de ips privadas
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 172.0.0.0/8;
set_real_ip_from 192.168.0.0/16;
set_real_ip_from fc00::/7;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
}
Ahora vamos a comprobar que su accedemos a https://autehlia.mi_dominio.es se nos presenta la siguiente pantalla de login
8- Reconfiguración de parámetros en las webs de Nginx Proxy Manager
Ahora sólo nos queda añadir unos códigos para aquellas web que indicamos en el archivo de configuración que iban a tener acceso vía portal de Authelia
Según el ejemplo eran "galeria.mi_dominio.es", "familia.mi_dominio.es" y "secretillos.mi_dominio.es"
Las editamos en Nginx Proxy Manager y en la última lengüeta escribiremos lo siguiente en el campo Nginx Custom Configuration
Code:
location /authelia {
internal;
set $upstream_authelia http://www.xxx.yyyy.zzzz:9091/api/verify; #cambiar por la ip de la nas
proxy_pass_request_body off;
proxy_pass $upstream_authelia;
proxy_set_header Content-Length "";
# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
client_body_buffer_size 128k;
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 4 32k;
send_timeout 5m;
proxy_read_timeout 240;
proxy_send_timeout 240;
proxy_connect_timeout 240;
}
location / {
set $upstream_NOMBRE1 http://www.xxx.yyy.zzzz:puerto del docker ; #cambiar segun nuestra ip de authelia
proxy_pass $upstream_NOMBRE1; #cambiar nombre servicio, ha de ser unico por cada web o servicio
auth_request /authelia;
auth_request_set $target_url $scheme://$http_host$request_uri;
auth_request_set $user $upstream_http_remote_user;
auth_request_set $groups $upstream_http_remote_groups;
proxy_set_header Remote-User $user;
proxy_set_header Remote-Groups $groups;
error_page 401 =302 https://authelia.mi_dominio.es/?rd=$target_url; #cambiar por la direccion de nuestro authelia
client_body_buffer_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
send_timeout 5m;
proxy_read_timeout 360;
proxy_send_timeout 360;
proxy_connect_timeout 360;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 64 256k;
set_real_ip_from 192.168.0.0/16; #cambiar según el rango de la nas a 10.0.0.0/8 o incluso 172.16.0.0/16
real_ip_header X-Forwarded-For;
real_ip_recursive on;
}
Hacemos los cambios adecuados a nuestra web y damos nombres únicos por variable $upstream_NOMBRE1.
Por seguir con el ejemplo podemos usar $upstream_galeria, $upstream_secretillos y $upstream_familia
Si todo ha ido bien, cuando vayamos a las web galeria.mi_dominio.es, secretillos.mi_dominio.es y familia.mi_dominio.es, se nos presentará la web de authelia.
9-Activación por primera vez del 2FA
Cuando nos identifiquemos por primera vez en la web "authelia.mi_dominio.es com" con un usuario creado en el LDAP, se nos lanzará un proceso para elegir y definir el tipo de 2FA.
Podemos activar mas de uno.
Y comienza el asistente, pulsamos sobre registrar dispositivo
y nos da dos opciones.
Si pulsamos sobre ADD de One-Time Password
nos enviará un código por correo electrónico con un contenido similar a la siguiente captura
Pulsamos sobre verificar tras escribir el código en la web
Y continuamos con el asistente para agregarlo a nuestro programa de autentificación (Authy, 2FAS Auth, Authenticator de QNAP,...)
Nos presenta en pantalla el código QR para añadirlo
Tras verificarlo, nos lleva a la web de control del usuario.
Si queremos usar una llave hardware en vez de pulsar One-time Password, pulsaremos sobre WebAuthn Credentials.
Ya podemos salir del asistente que ya lo tenemos configurado para ese usuario.
Y con esto hemos terminado y ya tenemos listo al "usuariopruebas" para acceder a las web protegidas con Authelia.
No usar LDAP y hacerlo mediante archivo
Si no queremos que Authelia use LDAP y queremos hacerlo mediante una lista de usuarios de un archivo hay que hacer un cambio en el fichero configuration.yml suprimiendo unas líneas y agregando otras
Las que hay que retirar o comentar poniendo delate un # son las referentes al LDAP.
Según nuestro ejemplo son:
Code:
authentication_backend:
ldap:
implementation: custom
url: ldap://www.xxx.yyy.zzz # la ip local de nuesta nas
start_tls: false
base_dn: dc=mi_dominio,dc=es # valores del LDAP
additional_users_dn: ou=people
additional_groups_dn: ou=group
users_filter: (&({username_attribute}={input})(objectClass=person))
groups_filter: (&(uniquemember={dn})(objectclass=groupOfUniqueNames))
user: cn=admin,dc=mi_dominio,dc=es # valores del LDAP
password: ClaveSecreta # Clave del admin del LDAP de la QNAP
Estas líneas debemos cambiarlas por
Code:
authentication_backend:
password_reset:
disable: false
refresh_interval: 5m
file:
path: /config/users_database.yml
password:
algorithm: argon2id
iterations: 1
key_length: 32
salt_length: 16
memory: 1024
parallelism: 8
Ahora crearemos un archivo llamado "users_database.yml" en la carpeta de la nas "/share/DockerData/authelia".
Siguiendo con el ejemplo, para dos usuarios llamados "mequetrefe" y "mosquito" debería tener una estructura similar a la siguiente:
Code:
users:
mequetrefe: #Cambia el nombre al que más te guste, este será el que usemos para el login
displayname: "mequetrefe" #Cambia el nombre al que más te guste, introducelo entre las comillas
password: "$argon2id$v=19$m=1024,t=1,p=8$ZnA1NTg4aDdxUjJteWJhRA$5ZedH1Cb70M7WY8m92goUCT27ZuWNR+bPVZF4hl28BA"
#La creamos con https://argon2.online/
#En plain text input, ponemos la contraseña que queremos para hacer el login en authelia
#Seleccionamos el boton de argon2id
#Pulsamos en la tuerca de salt y nos deben salir unas letras en ese recuadro
#Configramos con los siguientes parametros parallelism Factor: 8 memory cost: 1024 iterations: 1 hash length: 32
#Pulsamos en generate hash y nos debe dar algo asi en el campo outputin Encoded Form $argon2id$v=19$m=1024,t=1,p=8$NTEwNGFYVHNGNlo2OGxwOA$rPYzg2lYoNH7MQ5pv6m3isHCCcJYnf+1A/uIiMUrUhE
email: correousuario1@icloud.com #tu correo electronico del usuario mequetrefe
groups: #si quieres crear un grupo o grupos, cambia los nombres siguientes
- admins
- dev
mosquito: #Cambia el nombre al que más te guste, este será el que usemos para el login
displayname: "mosquito" #Cambia el nombre al que más te guste, introducelo entre las comillas
password: "$argon2id$v=19$m=1024,t=1,p=8$ZnA1NTg4aDdxUjJteWJhRA$5ZedH1Cb70M7WY8m92goUCT27ZuWNR+bPVZF4hl28BB"
#La creamos con https://argon2.online/
#En plain text input, ponemos la contraseña que queremos para hacer el login en authelia
#Seleccionamos el boton de argon2id
#Pulsamos en la tuerca de salt y nos deben salir unas letras en ese recuadro
#Configramos con los siguientes parametros parallelism Factor: 8 memory cost: 1024 iterations: 1 hash length: 32
#Pulsamos en generate hash y nos debe dar algo asi en el campo outputin Encoded Form $argon2id$v=19$m=1024,t=1,p=8$NTEwNGFYVHNGNlo2OGxwOA$rPYzg2lYoNH7MQ5pv6m3isHCCcJYnf+1A/uIiMUrUhE
email: correousuario2@proton.me #correo electronico del usuario mosquito
groups: #si quieres crear un grupo o grupos, cambia los nombres siguientes
- admins
- dev
Hay que cambiar las claves. Y para hacer una nuevas debemos hacerlo por la web https://argon2.online/
La pantalla de generación de las claves será como la de la siguiente captura
Con el botón de copiar de la web podemos luego pegarla en el archivo "users_database.yml"
No es algo que me guste mucho lo de depender de una web para obtener estas claves, pero si no vamos a tener mas que unos pocos usuarios, es una alternativa a usar un LDAP. Recomiendo crear alguna más y tenerlas apuntadas en nuestro gestor de claves.
Nota: Para este post me he apoyado en informaciones de varias fuentes como Authelia, de la web de HDS+ (muy recomendable por cierto),...
Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η