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
-
How to force Docker not to bypass the UFW rules. mkubaczyk.com, 2017-09-05. ↩︎