Mi experiencia con Vaultwarden

En abril del año pasado, migré mi gestor de contraseñas desde KeePassXC a Vaultwarden. Mi objetivo en esta entrada de blog es hablar de mi experiencia con este software y cómo me he adaptado a él en los últimos meses, desventajas y también ventajas de haber migrado a Vaultwarden.

Bitwarden es una solución cloud para guardar contraseñas en línea. Siempre he sido escéptico ante este tipo de herramientas cloud, debido al riesgo que podría suponer colocar las llaves que protegen toda tu vida digital en una máquina que no controlas. Incluso aunque Bitwarden sea abierto y hable de las formas que tienen de cifrar la información, me resulta un poco incómoda la idea de que los datos se guarden fuera de mi control.

Vaultwarden es una reimplementación alternativa de toda la API de Bitwarden en Rust. Bitwarden dispone de varias aplicaciones oficiales para PC, móvil, tablet y navegador que interactúan con la nube de Bitwarden usando distintas APIs, y Vaultwarden se ocupa de volver a implementar toda esa capa de servicios. De este modo, si configuramos un cliente o extensión de Bitwarden para que, en vez de hablar con el servidor central, hable con nuestro servidor alternativo, todo funcionará, porque el cliente no sabrá que está hablando con un Vaultwarden en vez de con un Bitwarden normal. Además, es mucho más ligera en consumo de recursos que una instalación on-premises de Bitwarden.

Mi manera de desplegar Vaultwarden es en mi infraestructura personal. Lo despliego como un servicio de Docker más, que en condiciones normales consume menos de 100 MB de RAM y que tiene un consumo de CPU mínimo. Si se abre en un navegador web la dirección en la que está instalado, se puede utilizar desde la web, y se ve como un Bitwarden normal y corriente, aunque conectado con la instancia local en vez de con los servidores principales de Bitwarden. Todas las aplicaciones de Bitwarden oficiales tienen una forma de personalizar el endpoint de conexión, lo que permite usar las aplicaciones oficiales de Bitwarden para Windows, Mac, Linux, iOS y navegador con un servidor propio en vez de con el servidor central.

Sobre KeePassXC, me parece un software excelente y seguiré recomendándolo. Ya hablé en el pasado en este blog de mi experiencia y mi forma de usar KeePassXC para todo, tanto como almacén de contraseñas como bóveda para guardar archivos secretos, como certificados, claves RSA y otro tipo de información que me gustaría almacenar de forma segura en un gestor de identidades. Ante todo, es una forma simple de que usuarios avanzados tengan su primer contacto con este tipo de aplicaciones, tan recomendadas bajo mi punto de vista.

Sin embargo, una de las razones que motivó mi cambio a Vaultwarden fue el hecho de que cuando tienes varios dispositivos, tengas que ocuparte manualmente de hacer la sincronización entre cada dispositivo. Debido a que KeePass es una aplicación offline, requiere un archivo de base de datos (KBDX) para funcionar, y opcionalmente un archivo de clave (KEY) para desbloquear la base de datos. Si bien puedes utilizar herramientas cloud externas para mantener sincronizada la base de datos entre múltiples dispositivos e incluso entre móviles y tablets, el proceso es manual y requiere usar aplicaciones separadas. En el peor de los casos, puedes sincronizar manualmente las bases de datos cada vez que hagas una modificación a la misma.

Y es que en realidad tener que depender de servicios de sincronización cloud externos que funcionan mal resultaba problemático. Cuando utilizaba Android, utilizaba KeePass2Android para guardar mi base de datos en Dropbox y mantenerla sincronizada con otros ordenadores conectados a la misma cuenta de Dropbox. KeePass2Android era un software tan valioso que una vez al año hacía una donación para agradecer el esfuerzo de mantenerla. En mi etapa iOS, al final las herramientas de sincronización eran más limitadas y acepté copiar las cosas a mano, algo que resultaba problemático cuando una contraseña se quedaba en un dispositivo pero todavía no se copiaba al resto.

Mi workflow con KeePass

Minientrada

Llevo años utiliando KeePass para gestionar las contraseñas de mis sitios web. Mi base de datos tiene a estas alturas probablemente 6 o 7 años y ha sido usada a través de múltiples aplicaciones que son capaces de comprender el formato de la base de datos.

En este momento, la aplicación que utilizo en mis ordenadores para poder acceder a mi base de datos es KeePassXC. Como es multiplataforma, es muy fácil de instalar en todas partes: Windows, Linux, FreeBSD, MacOS… Por otra parte, también he usado aplicaciones para Android en el pasado, y ahora que uso iOS e iPadOS, utilizo KeePassium acceder a las contraseñas ahí.

KeePassium se vuelve mucho más directo y personal, por ejemplo, cuando se activa el desbloqueo con huella o con Face ID, para evitar tener que teclear todo el rato la contraseña. Esto también me resulta práctico si tengo que desbloquear una contraseña en algunos sitios donde no me gustaría que alguien me viese pulsar teclas en la pantalla de mi móvil, como es el transporte público. También soporta integración con el autocompletado de contraseñas nativo de iOS.

No mucha gente sabe que una base de datos de KeePass vale para algo más que para guardar usuarios y contraseñas. Cada entrada de KeePass soporta archivos adjuntos y otro tipo de datos extra, de modo que aquí algunos trucos avanzados que uso en mis bases de datos:

  • Gracias a la función de archivos adjuntos, utilizo mi base de datos de KeePass para guardar otro tipo de cosas que no son contraseñas. Una copia de mis claves SSH, una copia de mi certificado GPG, los PKCS de la administración pública, y el keychain que hace falta para firmar APKs antes de subirlos a la Google Play Store.
  • La función de atributos también es ideal para guardar notas secretas, por ejemplo, con los códigos de un solo uso necesarios para recuperar una cuenta que tenga activo el 2FA en caso de emergencia.
  • Algunas copias de seguridad de archivos sensibles, como el archivo que uso para controlar mis finanzas personales, también lo puedo cargar como adjunto en una entrada de KeePass que no tiene contraseñas ni nada.
  • Es posible utilizar KeePassXC también como proveedor OTP, en vez de aplicaciones del móvil tipo Google Authenticator. Esto lo pongo a prueba constantemente en mi ordenador del trabajo, donde tengo otra base de datos diferente para las cuentas del trabajo, y funciona de forma excelente.
  • Es posible personalizar las carpetas y las entradas con iconos propios. KeePassXC también tiene la opción de descargar automáticamente el favicon de un sitio web para emplear como icono, lo que hace más fácil ubicar una cuenta en una tabla muy grande gracias a que se puede encontrar por el icono.
  • Aparte de crear contraseñas aleatorias y asociarlas automáticamente a nuevas entradas en la base de datos, es posible usar un generador independiente que no está conectado a nada, pero que te deja igualmente copiar la contraseña generada. Empleo esta función bastante en el trabajo para generar contraseñas aleatorias cuando me piden que registre en algunas aplicaciones de intranet cuentas de usuario de otras personas, si luego voy a tener que mandarles una contraseña inicial. Al margen de que se acuerden de cambiarla o no luego, por lo menos es más seguro que iniciarla a 123456.