Instalando Bitwarden

En este post veremos cómo sencillamente podemos desplegar un gestor de contraseñas open source en red para nuestra empresa, casa… La idea es tener un sitio web donde centralicemos y tengamos las contraseñas de cualquier sitio protegidas.

 

Tendremos Bitwarden corriendo en un contenedor y prestando el servicio de almacenar e indexar nuestros credenciales. Permitiendo el acceso mediante distintos usuarios y la posibilidad de acceso o sincronización con dispositivos móviles, o extensiones en el navegador para auto-completar los campos de credenciales. Usuarios, contraseñas, URLs, Tokens… guardaremos lo que cada uno consideremos, es un lugar seguro. Así que ya no tenemos excusas de usar Exceles para guardar información sensible.

¡Empezamos! Necesitaremos mínimo 4GB RAM y este post estará basado en un Ubuntu Server 21.04 actualizadito y con dirección IP estática, DNS configurado, NTP… Lo primero, tener Docker, si no lo tenemos, lo instalamos:

sudo apt install curl apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose -y
sudo systemctl status docker
sudo systemctl enable docker
docker --version
docker-compose --version

 

Lo siguiente será ir a https://bitwarden.com/host/ y pedir los códigos de instalación en local. Nos los mandarán al momento por email.

 

Una vez tengamos el Installation Id y el Installation Key podemos comenzar! Con este comando nos descargaremos y comenzamos la instalación de Bitwarden.

curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh
chmod +x bitwarden.sh
sudo ./bitwarden.sh install

 

Y deberemos cumplimentar las preguntas que nos hará el asistente, como será indicar el FQDN que queramos para acceder al sitio, además si queremos usar Lets Encrypt para generar el certificado, o tenemos uno propio o que nos genere uno autofirmado; así como los IDs que nos llegaron por correo:

 _     _ _                         _
| |__ (_) |___      ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V  V / (_| | | | (_| |  __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_|  \__,_|\___|_| |_|

Open source password management solutions
Copyright 2015-2021, 8bit Solutions LLC
https://bitwarden.com, https://github.com/bitwarden

===================================================

bitwarden.sh version 1.42.3
Docker version 20.10.8, build 3967b7d
docker-compose version 1.25.0, build unknown

(!) Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com): FQDN_BITWARDEN.DOMINIO.ESO

(!) Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n): n

(!) Enter the database name for your Bitwarden instance (ex. vault): vault

1.42.3: Pulling from bitwarden/setup
e1acddbe380c: Pull complete
dd03aafcc609: Pull complete
42dd948b1ee9: Pull complete
babf609d748c: Pull complete
62b1be457df2: Pull complete
6f1f9ec9013b: Pull complete
8e3a7c30ce9a: Pull complete
23669c1f9b29: Pull complete
449aeb561efd: Pull complete
2c2716f2153f: Pull complete
Digest: sha256:a85988defed50c28dcd477c10196df9282e0f46c1Ddfb5dCf5E78833feO2f81e
Status: Downloaded newer image for bitwarden/setup:1.42.3
docker.io/bitwarden/setup:1.42.3

(!) Enter your installation id (get at https://bitwarden.com/host): XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

(!) Enter your installation key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

(!) Do you have a SSL certificate to use? (y/n): n

(!) Do you want to generate a self-signed SSL certificate? (y/n): y

Generating self signed SSL certificate.
Generating a RSA private key
..............................................................++++
..........................................................++++
writing new private key to '/bitwarden/ssl/self/FQDN_BITWARDEN.DOMINIO.ESO/private.key'
-----
Generating key for IdentityServer.
Generating a RSA private key
.++++
........................................++++
writing new private key to 'identity.key'
-----

!!!!!!!!!! WARNING !!!!!!!!!!
You are using an untrusted SSL certificate. This certificate will not be
trusted by Bitwarden client applications. You must add this certificate to
the trusted store on each device or else you will receive errors when trying
to connect to your installation.

Building nginx config.
Building docker environment files.
Building docker environment override files.
Building FIDO U2F app id.
Building Asset Links For Fido2.
Building docker-compose.yml.

Installation complete

If you need to make additional configuration changes, you can modify
the settings in `./bwdata/config.yml` and then run:
`./bitwarden.sh rebuild` or `./bitwarden.sh update`

Next steps, run:
`./bitwarden.sh start`

 

El fichero de configuración es ‘./bwdata/config.yml’ y nos vendrá bien si necesitamos modificar los certificados, FQDN, puertos… Hablando de certificados, si vamos a poner nuestro propio certificado, tendremos en cuenta que el fichero crt debe ser completo, el certificado además de toda la cadena de las entidades intermedias y la raíz. Tengo una nota en la documentación que tuve que modificar el fichero ‘./bwdata/env/global.override.env’ y revisar que en ‘globalSettings__sqlServer__connectionString’ no se usen comillas simples, si no dobles al establecer el valor. Entiendo que será un bug que ya esté corregido.

 

Total, que ya podremos arrancar Bitwarden, si todo lo anterior lo cumplimos irá bien, arrancamos con ‘sudo ./bitwarden.sh start’:

sudo ./bitwarden.sh start

 _     _ _                         _
| |__ (_) |___      ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V  V / (_| | | | (_| |  __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_|  \__,_|\___|_| |_|

Open source password management solutions
Copyright 2015-2021, 8bit Solutions LLC
https://bitwarden.com, https://github.com/bitwarden

===================================================

bitwarden.sh version 1.42.3
Docker version 20.10.8, build 3967b7d
docker-compose version 1.25.0, build unknown

Pulling mssql         ... done
Pulling web           ... done
Pulling attachments   ... done
Pulling api           ... done
Pulling identity      ... done
Pulling sso           ... done
Pulling admin         ... done
Pulling portal        ... done
Pulling icons         ... done
Pulling notifications ... done
Pulling events        ... done
Pulling nginx         ... done
Creating directory /home/openservices/bwdata/core
Creating directory /home/openservices/bwdata/core/attachments
Creating directory /home/openservices/bwdata/logs
Creating directory /home/openservices/bwdata/logs/admin
Creating directory /home/openservices/bwdata/logs/api
Creating directory /home/openservices/bwdata/logs/events
Creating directory /home/openservices/bwdata/logs/icons
Creating directory /home/openservices/bwdata/logs/identity
Creating directory /home/openservices/bwdata/logs/mssql
Creating directory /home/openservices/bwdata/logs/nginx
Creating directory /home/openservices/bwdata/logs/notifications
Creating directory /home/openservices/bwdata/logs/sso
Creating directory /home/openservices/bwdata/logs/portal
Creating directory /home/openservices/bwdata/mssql/backups
Creating directory /home/openservices/bwdata/mssql/data
Creating network "docker_default" with the default driver
Creating network "docker_public" with the default driver
Creating bitwarden-sso           ... done
Creating bitwarden-notifications ... done
Creating bitwarden-api           ... done
Creating bitwarden-events        ... done
Creating bitwarden-icons         ... done
Creating bitwarden-attachments   ... done
Creating bitwarden-identity      ... done
Creating bitwarden-web           ... done
Creating bitwarden-mssql         ... done
Creating bitwarden-admin         ... done
Creating bitwarden-portal        ... done
Creating bitwarden-nginx         ... done
1.42.3: Pulling from bitwarden/setup
Digest: sha256:a85198defed5fce8dcd477c1b1d6df9282e0e46ce8dfb5d0f5378803fe02fe1e
Status: Image is up to date for bitwarden/setup:1.42.3
docker.io/bitwarden/setup:1.42.3

Bitwarden is up and running!
===================================================
visit https://FQDN_BITWARDEN.DOMINIO.ESO
to update, run `./bitwarden.sh updateself` and then `./bitwarden.sh update`

 

Ya nos indica que podemos arrancar un navegador y probar Bitwarden!!! Pero antes, recuerda, que debemos mantener actualizado Bitwarden de forma periódica y lo haremos mediante:

./bitwarden.sh updateself
./bitwarden.sh update

 

Esta sería la interfaz predeterminada, donde por primera vez tendremos que darnos de alta desde “Crear cuenta”,

 

Cumplimentamos los datos para crear nuestro usuario, tendremos que validar el mail.

 

Y la verdad que no tiene mucho misterio, veréis que es sencilla de usar, que podréis organizar por jerarquía de carpetas, crear elementos de tipo entradas, tarjetas, identidades, compartir notas seguras con terceros…

 

Y si os ponéis la app móvil para iPhone o Android y conectando contra nuestro servidor de Bitwarden podremos loguearnos de igual manera, acceder de manera rápida y cacheada a los credenciales. Y además de eso, ir guardando los credenciales que nos pida el móvil para no volver a tener que teclearlos nunca más. Bitwarden nos los recordará previo escaneo de la huella y los autocompletará (por ejemplo, entre otras tantas opciones).

 

Y lo mismo si usamos navegador Chrome o Firefox, tendremos una extensión que se conectará contra Bitwarden y lo mismo, nos autocompletará las credenciales de cualquier sitio web, o almacenarlas directamente al crear cuentas en sitios varios…

 

Total, que una chulada, no? Imagino que muchos lo conoceréis, tras varios años de uso es el que más me convenció ya que cumplía con las necesidades y además tenía ese valor diferencial al ser modelo SaaS, acceso web, sin cliente, seguro… obviamente esto no lo publicaremos en internet 🙂 pero sí es ideal para centralizar todas las contraseñas de cualquier empleado/usuario de nuestras empresas/casas.

 

Y como siempre, agradecer este tipo de proyectos, ojalá os haya parecido interesante y nada, gracias y seguir bien por favor. Abrazos a todo el mundo!