![]() |
Docker gestor de 2FA - Versión para impresión +- Foro QNAP en español (https://www.qnapclub.es) +-- Foro: GENERAL (https://www.qnapclub.es/forumdisplay.php?fid=3) +--- Foro: Firmware, Aplicaciones y Tutoriales (https://www.qnapclub.es/forumdisplay.php?fid=39) +---- Foro: VMs & Docker Containers (https://www.qnapclub.es/forumdisplay.php?fid=41) +---- Tema: Docker gestor de 2FA (/showthread.php?tid=5187) |
Docker gestor de 2FA - Ganekogorta - 19-01-2024 Hola Hoy voy a mostrar como tener nuestro propio gestor de 2FA para evitar dependencias de terceros. Su función es como las de Authy o los autenticadores de Google, Microsoft o de Qnap Su uso es muy sencillo y permite añadirlos por cadena de texto, por cámara con código QR y por fotografía del QR. Su entorno es web y es una lástima que no haya app para móvil. Pero vía web en el móvil funciona perfectamente. Aquí me parece importante tener una carpeta persistente compartida para la bbdd de los códigos y poder tenerla a buen recaudo y con opciones de copia de seguridad. La ruta de la carpeta será por ejemplo "/share/DockerData/2fauth" El docker usa al usuario 1000 y grupo 1000. Es decir las carpetas persistentes ha de tener permisos similares para que el usuario de ese docker pueda usar la carpeta compartida de la nas. La mejor forma de ver esos permisos ver las propiedades de los usuarios uno por uno desde QTS o mejor es lanzar el comando siguiente por consola: Código: cat /etc/passwd Nos fijamos quien tiene 1000 (por ejemplo lo tiene asignado usuario_anterior ) Ahora para ver si tenemos un grupo con 1000, ejecutamos el siguiente comando: Código: cat /etc/group Si tenemos el 1000 creado, tomamos nota del nombre usado. Si no lo ternemos lo creamos con la siguiente orden de consola: Código: addgroup -g 1000 dockers En el comando de ejemplo anterior creo al grupo "dockers" con ID 1000 Ahora agregamos el "usuario_anterior" de ID 1000 al grupo "dockers" de ID 1000. Podemos hacerlo desde los grupos de QTS o bien desde consola con Código: adduser usuario_anterior dockers A esa carpeta hemos de asignar propietarios al "usuario_anterior" y grupo "docker" y dar permisos de tipo 700. Lo hacemos con los comandos Código: chown 1000:1000 /share/DockerData/2fauth Ahora vamos con el comando de creación del contenedor, que será el siguiente: Código: docker run --name=2fauth -d -p 8500:8000/tcp -v /share/DockerData/2fauth:/2fauth -e AUTHENTICATION_GUARD=web-guard 2fauth/2fauth Una vez iniciado, vamos a su web y veremos la pantalla habitual de usuario y clave (que aún no tenemos) Evidentemente, de inicio NO hay ninguno y hemos de crearnos. Tras dar nuestro nombre, dirección de correo y clave, nos da la opción de asociar una llave (Yubikey por ejemplo ![]() El docker permite envío de correos para restablecer claves olvidadas, pero para ello hemos de haber asignado las siguientes variables a la hora de definir el contenedor:
Es decir, nuestra cadena de creación sería algo similar a esto: Código: docker run --name=2fauth -d -p 8500:8000/tcp -v /share/DockerData/2fauth:/2fauth -e AUTHENTICATION_GUARD=web-guard -e MAIL_DRIVER=smtp -e MAIL_HOST=smtp.servidor.com -e MAIL_PORT=465 -e MAIL_ENCRYPTION=ssl -e MAIL_FROM_NAME="admin de 2fAuth" -e MAIL_FROM_ADDRESS=correo@remitente.com -e MAIL_USERNAME=correo@remitente.com -e MAIL_PASSWORD=clave_correo 2fauth/2fauth:5.0.2 Una vez empecemos a tener datos de autenticaciones, es muy importante tener y hacer copias del archivo "database.sqlite" que está en la ruta "/share/DockerData/2fauth". Ahí se encuentran todos nuestros datos de usuarios y accesos. Lo mejor para hacer copia es detener el contenedor, copiar la sqlite y de nuevo arrancar el contenedor. Nota del 25/01/24 He visto que para usar llaves físicas hay que hacer que el docker publique por https. Se puede hacer mediante un proxy inverso. Pero aún así da algún error usando la consola para crearlo. En cambio he visto que por docker compose no da ese problema. He usado la siguiente configuración: Código: version: "3" Como se puede comprobar, aquí se definen bastantes mas variables. Haciendo pruebas he comprobado que se integra sin problemas en:
En su momento usé el tag "latest" que era la versión 5.0.2 del docker, con el último tengo problemas de visón dela web, así que en las cadenas de creación he obligado a esa versión. |