Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Raspberry Pi: gestire un password manager

Gestire un password manager completamente self-hosted con Raspberry Pi per proteggere account e dati personali
Gestire un password manager completamente self-hosted con Raspberry Pi per proteggere account e dati personali
Link copiato negli appunti

Per evitare furti di dati o accessi non autorizzati ai nostri servizi online è essenziale impostare password molto robuste, oltre ad abilitare la verifica in due fattori ove possibile, ed uniche per ciascun servizio. Ovviamente è impossibile ricordare tutte le nostre credenziali d'accesso. Ecco perché spesso gli utenti si affidano a password manager in grado di memorizzare i dati di login e di generare password sicure in pochi istanti.

Gran parte dei password manager salva le password in forma crittografata sui propri server. Esistono però delle soluzioni che consentono di gestire e salvare database di credenziali in locale sfruttando una configurazione self-host, cosi da evitare data leak che potrebbero verificarsi a seguito di intrusioni non autorizzate nei sistemi Cloud delle aziende che offrono i servizi di password manager.

In questa guida andremo quindi a spiegare come gestire un password manager self-hosted su di un Raspberry Pi.

I software utilizzati

Per questa configurazione software andremo a sfruttare Bitwarden, un password manager open source che consente anche di implementare soluzioni self-hosted per gli archivi di delle password. I client di Bitwarden installati nei device per eseguire la sincronizzazione delle credenziali salvate andranno a connettersi a Raspberry Pi invece di affidarsi al Cloud di Bitwarden.

Tale approccio ha svantaggi e vantaggi. È infatti possibile che un Raspberry Pi si guasti o che diventi irreperibile a causa dell'assenza di connessione o dell'alimentazione. Tutte situazioni che sfruttando il Cloud di Bitwarden non dovrebbero verificarsi.

Tuttavia tenere le nostre credenziali in locale consente il controllo totale e completo delle password. Evitando che possano finire esposte dopo un data breach.

Installazione di Bitwarden su Raspberry Pi OS tramite container Docker

Come sistema operativo di riferimento utilizzeremo la distribuzione Raspberry Pi OS. La sua installazione e configurazione iniziale è molto semplice, dunque salteremo questo passaggio e daremo per scontato che abbiate già accesso all'ambiente Desktop completo di Raspberry Pi OS.

Andiamo ora a configurare un container Docker con all'interno una versione particolare di Bitwarden chiamata Bitwarden RS. Prima di tutto installiamo Docker sul sistema:

sudo apt update && sudo apt upgrade
curl -sSL https://get.docker.com | sh

Nel caso in cui lo script di Docker non proceda con l'esecuzione automatica possiamo lanciare questo comando:

sudo sh get-docker.sh

Terminata l'installazione di Docker si deve comunicare alla distribuzione di aggiungere il nostro utente al gruppo Docker cosi da potervi accedere:

sudo usermod -aG docker pi

Ovviamente se il vostro utente si chiama diversamente modificate l'ultima parte del comando mostrato. Successivamente impostiamo Docker in modo tale che venga sempre eseguito al boot del sistema operativo:

sudo systemctl enable docker.service && sudo systemctl enable containerd.service

Ora procediamo al download e all'esecuzione del container vero e proprio:

docker pull vaultwarden/server:latest
sudo docker run -d --name bitwarden \
--restart=always \
-v /bw-data/:/data/ \
-p 127.0.0.1:8080:80 \
-p 127.0.0.1:3012:3012 \
vaultwarden/server:latest

Il webserver del container è accessibile tramite la porta 8080 mentre il Web socket usa la porta 3012 per comunicare con i diversi client.

Configurazione di NGINX

Per gestire le connessioni HTTS dei vari client verso il container di Bitwarden RS ospitato su Raspberry Pi OS sfrutteremo NGINX in modo da generare un proxy.  Quindi installiamo ed avviamo il demone di NGINX:

sudo apt install nginx && sudo systemctl start nginx

Adesso è arrivato il momento di generare un certificato SSL. In questa guida utilizziamo per semplicità un self-signed certificate:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nginx-bitwarden.key -out /etc/ssl/certs/nginx-bitwarden.crt

Rispondente quindi alle domande che vi saranno poste via shell. Tale certificato ha una durata di 1 anno e può essere reperito nelle directory /etc/ssl/private/ e /etc/ssl/certs/.

Adesso impostiamo il setting per irrobustire la sicurezza delle connessioni SSL:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Ora possiamo passare alla configurazione della proxy:

sudo rm /etc/nginx/sites-enabled/default

sudo nano /etc/nginx/sites-enabled/bitwarden.conf

Nel nuovo file generato tramite l'editor di testo nano copiate questa configurazione:

server {
listen 80;
listen [::]:80;
server_name _; #Change this to your domain name
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name _; #Change this to your domain name
ssl_certificate /etc/ssl/certs/nginx-bitwarden.crt; #Swap these out with Lets Encrypt Path if using signed cert
ssl_certificate_key /etc/ssl/private/nginx-bitwarden.key; #Swap these out with Lets Encrypt Path if using signed cert
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# Allow large attachments
client_max_body_size 128M;
location / {
proxy_pass http://0.0.0.0:8080;
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;
}
location /notifications/hub {
proxy_pass http://0.0.0.0:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://0.0.0.0:8080;
}
}

Salvate le modifiche al file tramite la combinazione CTRL+O e chiudete il documento con CTRL+X. Procedete quindi con il riavvio di NGINX:

sudo systemctl restart nginx

Accesso alla Web interface di Bitwarden RS

Ora siamo pronti per accedere a Bitwarden RS tramite la sua interfaccia Web. Apriamo il browser e digitiamo:

https:indirizzoipdelraspberrypi

A questo punto vi ritroverete in un pannello simile al seguente:

creazione account utente bitwarden

Procedete quindi con la creazione del vostro account Bitwarden seguendo la procedura guidata.

bitwarden

Ora si deve generare l'admin token che è necessario per accedere al Bitwarden admin panel cosi da poter configurare nei minimi dettagli Bitwarden. Quindi torniamo nel terminale e digitiamo:

openssl rand -base64 48

Il dato generato deve essere conservato accuratamente e non va condiviso con nessuno. Dobbiamo poi modificare il container Docker di Bitwarden per inserire l'admin token.

sudo docker stop bitwarden
sudo docker rm bitwarden

sudo docker run -d --name bitwarden \
-e INSERISCIQUIILTUOADMINTOKEN \
--restart=always \
-v /bw-data/:/data/ \
-p 127.0.0.1:8080:80 \
-p 127.0.0.1:3012:3012 \
vaultwarden/server:latest

A questo punto potremo accedere al Bitwarden admin panel da browser:

https:indirizzoipdelraspberrypi/admin

bitwarden admin

Vi sarà richiesto nuovamente il token cosi da accedere al pannello e finalmente ad una serie di setting per configurare il comportamento di Bitwarden e dei client connessi. Possiamo ad esempio disabilitare la creazione di nuovi account utente o gestire le procedure di verifica in due fattori, aggiungendo magari una chiave Yubikey. Inoltre, sempre da tale menu, è possibile eseguire il backup dell'intero database di credenziali salvate.

Ti consigliamo anche