581 - Una contraseña ya no es suficiente, 2FA y Self Hosted
Utilizar #contraseñas seguras ya no es suficiente, es necesario emplear otras opciones como el segundo factor de autenticación conocido como #2fa
Con el paso del tiempo esto de tener una contraseña para proteger un servicio ya no es suficiente. Empezamos por tener una contraseña sencillita para todos los servicios. Posteriormente, utilizamos reglas nemotécnicas para acordarnos de que contraseña es para que sitio, y luego, pasamos a utilizar un gestor de contraseñas como Bitwarden para almacenar todas nuestras contraseñas. Y, ahora, resulta, que una contraseña ya no es suficiente, y eso a pesar de utilizar contraseñas de hasta 24 caracteres alfanuméricos. Ahora es necesario mejorar nuestra seguridad utilizando el segundo factor de autenticación. A continuación, te indico tres herramientas que puedes utilizar para generar tu segundo factor de autenticación.
Una password no es suficiente, 2FA y selfhosted
A continuación encontrarás que es eso del segundo factor de autenticación y tres herramientas que puedes emplear.
Sobre el segundo factor de autenticación
El segundo factor de autenticación o 2FA (Two-Factor Authentication) es un método de seguridad que requiere dos formas distintas de verificar la identidad de un usuario antes de permitir el acceso a una cuenta o sistema. Normalmente, estos dos factores son:
- Algo que el usuario sabe, como una contraseña o un PIN.
- Algo que el usuario posee, como un teléfono móvil, una tarjeta de acceso o un token de seguridad.
El propósito del 2FA es añadir una capa adicional de seguridad, ya que incluso si un atacante descubre la contraseña de un usuario, aún necesitaría el segundo factor (que debería ser exclusivo del usuario) para acceder a la cuenta. Esto hace que sea mucho más difícil para los hackers comprometer cuentas mediante métodos como el phishing o el robo de contraseñas.
En el móvil
Aegis Authenticator es una aplicación gratuita, segura y de código abierto para Android diseñada para gestionar los tokens de autenticación de dos pasos de tus servicios en línea. Es una alternativa a aplicaciones propietarias de autenticación de dos factores como Google Authenticator y Authy. Algunas de las características de Aegis, son las siguientes,
- Seguridad. Aegis se centra en la seguridad y utiliza técnicas de cifrado sólidas para proteger tus tokens de autenticación. Los datos se almacenan en un «bóveda» cifrada, lo que significa que incluso si alguien accede al archivo de la bóveda, no podrá recuperar los datos sin conocer la contraseña.
- Organización. La aplicación ofrece varias opciones para organizar tus tokens de autenticación. Puedes asignar iconos personalizados a tus entradas, buscar por nombre de cuenta o servicio, y crear grupos personalizados para categorizar tus tokens.
- Backups automáticos. Aegis permite crear copias de seguridad automáticas de tu bóveda en una ubicación de tu elección. Si tu proveedor de almacenamiento en la nube es compatible con el Marco de Acceso de Almacenamiento de Android (como Nextcloud), también puedes realizar copias de seguridad automáticas en la nube.
- Desbloqueo biométrico. Para facilitar el acceso a tus tokens de autenticación, Aegis admite el desbloqueo mediante biometría, como el escaneo de huellas dactilares o el reconocimiento facial, si tu dispositivo cuenta con esta funcionalidad.
Respecto de las ventajas de Aegis,
- Seguridad mejorada. Al utilizar técnicas de cifrado robustas y ofrecer la opción de establecer una contraseña para proteger la bóveda, Aegis ofrece una mayor seguridad para tus tokens de autenticación.
- Control y organización. Con opciones avanzadas de organización y búsqueda, Aegis te permite gestionar eficientemente tus tokens de autenticación, incluso si tienes una gran cantidad de ellos.
- Backups automáticos. La capacidad de realizar copias de seguridad automáticas garantiza que nunca perderás acceso a tus cuentas en línea, incluso si pierdes o cambias de dispositivo.
Por último y respecto a como instalar y utilizar esta aplicación, es tan sencillo como descargar e instalar la aplicación desde Google Play Store. A continuación abre la aplicación y sigue las instrucciones para configurar tu bóveda y añadir tus tokens de autenticación. Utiliza las opciones de organización, búsqueda y personalización para gestionar tus tokens según tus preferencias. Si lo deseas, establece una contraseña para proteger tu bóveda y activa el desbloqueo biométrico si tu dispositivo es compatible. Y configura las opciones de copia de seguridad automática para asegurarte de que tus tokens estén siempre respaldados.
En el ordenador
[Authenticator]
La extensión Authenticator para Firefox es una herramienta que genera códigos de autenticación de dos factores (2FA) en tu navegador. Estos códigos se utilizan para añadir una capa adicional de seguridad a tus cuentas en línea. Algunas de sus características son las siguientes,
- Añadir cuentas escaneando códigos QR. Puedes agregar cuentas de servicios en línea escaneando los códigos QR proporcionados por esos servicios.
- Búsqueda de cuentas. Puedes buscar tus cuentas utilizando la función de búsqueda, lo que facilita encontrar la cuenta que necesitas rápidamente.
- Traducido a más de diez idiomas. La extensión está disponible en varios idiomas para adaptarse a las preferencias de los usuarios de diferentes regiones.
- Cifrado de secretos con contraseña. Puedes proteger tus secretos de autenticación mediante un cifrado con contraseña, lo que añade una capa adicional de seguridad.
- Copia de seguridad de secretos. Puedes realizar copias de seguridad de tus secretos en un archivo, Google Drive o Dropbox para garantizar que no los pierdas.
- Sincronización con tu cuenta de Firefox. La extensión permite sincronizar tus secretos de autenticación con tu cuenta de Firefox, lo que facilita el acceso a ellos desde diferentes dispositivos.
- Código abierto. La extensión es de código abierto, lo que significa que su código fuente está disponible para que cualquier persona lo revise y contribuya a su desarrollo.
Respecto a los permisos que requiere la aplicación son básicamente dos,
- Acceder a tus datos en todos los sitios web. Necesario para tomar capturas de pantalla al escanear códigos QR.
- Introducir datos en el portapapeles. Necesario para copiar los códigos cuando se hace clic en ellos.
Por último y en referencia a la compatibilidad,
- TOTP. Time-Based One-Time Password (contraseña de un solo uso basada en el tiempo).
- HOTP. HMAC-Based One-Time Password (contraseña de un solo uso basada en HMAC).
- Steam Guard. Utilizado para la autenticación de dos factores en la plataforma Steam.
- Blizzard Authenticator. Utilizado para la autenticación de dos factores en las cuentas de Blizzard Entertainment.
Selfhosted
2FAuth es una alternativa autohospedada basada en la web a generadores de códigos de un solo uso (OTP) como Google Authenticator. Está diseñada para ser utilizada tanto en dispositivos móviles como en escritorio, con el objetivo de facilitar el proceso de autenticación de dos factores (2FA) independientemente del dispositivo que estés utilizando, mediante una interfaz limpia y adecuada. Algunas de las características de este servicio son las siguientes,
- Gestión de cuentas 2FA. Permite administrar tus cuentas de autenticación de dos factores y organizarlas utilizando grupos para una mejor organización.
- Escaneo de códigos QR. Puedes escanear y decodificar cualquier código QR para agregar cuentas rápidamente.
- Añadir cuentas personalizadas. También puedes agregar cuentas personalizadas sin código QR mediante un formulario avanzado.
- Edición de cuentas. Incluso las cuentas importadas pueden ser editadas según sea necesario.
- Generación de códigos TOTP y HOTP. Proporciona códigos de un solo uso basados en el tiempo (TOTP), códigos de un solo uso basados en HMAC (HOTP) y códigos de Steam Guard.
Respecto a las ventajas de utilizar un servicio como 2FAuth, indicar lo siguiente,
- Control total de tus datos. Al ser autohospedado, tienes control total sobre tus datos y puedes realizar fácilmente copias de seguridad y restauraciones según sea necesario.
- Interfaz limpia y adecuada. Ofrece una interfaz intuitiva y fácil de usar que facilita la gestión de tus cuentas de autenticación de dos factores.
- Mayor comodidad y flexibilidad. Te permite acceder a tus códigos de autenticación desde cualquier dispositivo, ya sea móvil o de escritorio, sin necesidad de depender exclusivamente de tu teléfono inteligente.
En mi caso y como utilizo Traefik como proxy inverso, mi docker-compose.yml
es el siguiente,
version: "3"
services:
2fauth:
image: 2fauth/2fauth
container_name: 2fauth
environment:
- APP_NAME=2FAuth
- APP_ENV=local
- APP_DEBUG=false
- SITE_OWNER=tu@correo.es
- APP_KEY=Unacadenabastantelargaysorprendente
- APP_URL=https://tu.url.es
- IS_DEMO_APP=false
- LOG_CHANNEL=daily
- LOG_LEVEL=notice
- DB_DATABASE="/srv/database/database.sqlite"
- CACHE_DRIVER=file
- SESSION_DRIVER=file
- MAIL_DRIVER=log
- MAIL_HOST=smtp.mailtrap.io
- MAIL_PORT=2525
- MAIL_USERNAME=null
- MAIL_PASSWORD=null
- MAIL_ENCRYPTION=null
- MAIL_FROM_NAME=null
- MAIL_FROM_ADDRESS=null
- MAIL_VERIFY_SSL_PEER=true
- THROTTLE_API=60
- LOGIN_THROTTLE=5
- AUTHENTICATION_GUARD=web-guard
- AUTH_PROXY_HEADER_FOR_USER=null
- AUTH_PROXY_HEADER_FOR_EMAIL=null
- PROXY_LOGOUT_URL=null
- WEBAUTHN_NAME=2FAuth
- WEBAUTHN_ID=null
- WEBAUTHN_ICON=null
- WEBAUTHN_USER_VERIFICATION=preferred
- TRUSTED_PROXIES=null
- PROXY_FOR_OUTGOING_REQUESTS=null
- BROADCAST_DRIVER=log
- QUEUE_DRIVER=sync
- SESSION_LIFETIME=120
- REDIS_HOST=2fauth_redis
- REDIS_PASSWORD=null
- REDIS_PORT=6379
- PUSHER_APP_ID=
- PUSHER_APP_KEY=
- PUSHER_APP_SECRET=
- PUSHER_APP_CLUSTER=mt1
- VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
- VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
- MIX_ENV=locale
volumes:
- 2fauth:/2fauth
- 2fauth_db:/srv/database/
networks:
- internal
- proxy
labels:
- traefik.enable=true
- traefik.http.services.2fauth.loadbalancer.server.port=8000
- traefik.http.routers.2fauth-secure.entrypoints=https
- traefik.http.routers.2fauth-secure.rule=Host(`${FQDN}`)
- traefik.http.routers.2fauth-secure.tls=true
- traefik.http.routers.2fauth-secure.tls.certresolver=myresolver
- com.centurylinklabs.watchtower.enable="false"
2fauth_redis:
image: redis:6
container_name: 2fauth_redis
restart: unless-stopped
init: true
volumes:
- redis:/data
networks:
- internal
volumes:
redis: {}
2fauth: {}
2fauth_db: {}
networks:
internal:
proxy:
external: true
Buen apunte, tenía una espinita clavada con un servicio que se podía escalar hasta root y me daba cierto «miedito», ahora, con la autentificación de dos factores da un poquito menos.
Hola lorenzo, le estoy dando vueltas a esto, soy muy nuevo en redes y tenioa un par de preguntas, este servicio es para que se ejecuta cada vez que accedemos a un servicio expuesto, por ejemplo un webdav, y segundo en la linea traefik.http.routers.2fauth-secure.rule=Host(`${FQDN}`) se hace referencia a un .env y el FQDN sera la direccion de traefik o la del servicio, gracias