Onnan indulunk, hogy van egy üzemkész Debian VPS-ünk. Azt szeretnénk elérni, hogy a jelszavaink bármely böngészőnkben hozzáférhetők és kezelhetők legyenek, és ehhez a kliens–szerver architektúrájú Bitwarden jelszókezelőt fogjuk telepíteni.

Elképzelhető, hogy valaki kizárólag egyetlen PC-jén szeretné elérni a jelszavait, ez esetben a repóból lokálisan telepíthető KeepassXC asztali programot javasolnám, korábban azt használtam.

Telepítés

A cél eléréséhez nem kellene VPS, regisztrálhatunk ingyenes fiókot a bitwarden.com oldalon. Mi most saját Bitwarden-szervert telepítünk, mégpedig a Vaultwarden nevű Rust-implementációt Docker image-ként. Infó1: kb. 500 mega helyet visz el a Docker+Vaultwarden. Infó2: a bitwarden_rs projekt új neve Vaultwarden.

Telepítsük először a Dockert, ha még nem volt. A 23.0.0 verzió óta kötelező függőség az apparmor.

# apt install docker-ce docker-ce-cli containerd.io apparmor

Ezek után lehúzhatjuk és elindíthatjuk a vaultwarden (bitwarden_rs) image-et. A logfájl kerüljön az image osztott mappájába.

# docker pull vaultwarden/server:latest
# mkdir /var/vaultwarden
# docker run -d --name vaultwarden \
    --restart unless-stopped \
    -v /var/vaultwarden/:/data/ \
    -p 23456:80 \
    -e LOG_FILE=/data/vaultwarden.log \
    -e LOG_LEVEL=warn \
    -e EXTENDED_LOGGING=true \
    -e ADMIN_TOKEN=D+wT6HvUCdZoW6YestMDPiFdzaIbQJ3aRtys+AWdMDIYzwtpCh+jMz4H41ZIu7/3 \
    -e SIGNUPS_ALLOWED=false \
    vaultwarden/server:latest

Így generálj admin tokent (ezzel tudsz majd belépni az /admin route-on):

$ openssl rand -base64 48

Így kell frissíteni az image-et és cserélni a futó containert:

# docker pull vaultwarden/server:latest
# docker stop vaultwarden
# docker rm vaultwarden
# docker run ... # lásd fenti parancs

Időnként megszabadulhatunk a fölösleges régi image-ektől:

# docker image ls
# docker image prune

Ha van telepítve ufw, jogosan feltételezhetjük, hogy a webes login csak localhost-on lenne elérhető (a fent megadott 23456 porton), a külvilág felől nem. Csakhogy ez nem így van, mert a docker az ufw megkerülésével állítgat a tűzfalszabályokon, és alapértelmezetten az image-ekhez kötött portok nyitva lesznek.1 Hozzuk létre az /etc/docker/daemon.json konfigot, majd rebootoljunk.

{
    "iptables": false
}

Reboot után futni fog a vaultwarden (bitwarden_rs) image, de a megadott port immár zárva lesz.

Apache reverse proxyval tesszük elérhetővé a Bitwarden-szervert (lásd ezt a leírást), kizárólag TLS vhostnak van értelme.

Hozzáadhatunk fail2ban filtert és jailt (lásd ezt a leírást). Ha tesztelni akarod a fail2ban-t, előbb írd át a jail konfigban a bantime-ot valami kis értékre, mert bukni fogod az ssh-t is.

# systemctl restart fail2ban

Elérés

Ezek után bármely kliensünkön telepíthetjük a Bitwarden Firefox-kiegészítőt, majd elkezdhetjük használni a saját hosztolású széfünket. A backup megoldása kiemelt figyelmet érdemel!

A széf parancssorból is elérhető, a Bitwarden CLI telepítéséhez Node.js kell. További infókért lásd a dokut.

# npm install -g @bitwarden/cli
$ bw config server https://bitwarden.mydomain.hu
$ bw login