使用docker搭建vaultwarden密码管理服务

前言

今天介绍一款密码管理软件bitwarden。bitwarden是一款优秀的自由开源密码管理软件,其覆盖多平台且支持自行部署。但由于官方版本过重,使用rust重写的第三方开源版vaultwarden更适合我们搭建使用——它运行更轻量,也能使用许多官方版本需要付费的功能。

服务端搭建流程

使用docker搭建vaultwarden

使用以下命令搭建,注意替换掉【你的ADMIN_TOKEN】【数据目录】

1
docker run -d --name vaultwarden --restart unless-stopped --hostname vaultwarden -e ADMIN_TOKEN=【你的ADMIN_TOKEN】 -e WEBSOCKET_ENABLED=true -v 【数据目录】:/data/ -p 80:80 -p 3012:3012 vaultwarden/server:latest

详细设置参数可以在官方文档找到,参见这里

设置smtp邮件通知

进入http://【容器ip】/admin(如容器ip为192.168.10.5,则为http://192.168.10.5/admin),输入之前配置的【你的ADMIN_TOKEN】进入管理页面

点开SMTP Email Settings模块,勾选Enabled打开,其余部分填入对应内容即可。此处以QQ邮箱为例。

如上,From AddressUsername填入邮箱地址,Password为邮箱密码(或其他凭证,如QQ邮箱使用授权码),From Name为发信人名称。

设置即时自动同步

vaultwarden默认可以定期自动同步,但间隔期可能导致多设备数据不一致,有时甚至会导致未同步信息被覆盖。好在如今,我们可以通过开启WebSocket来实现实时同步

创建容器时的WEBSOCKET_ENABLED=true参数来开启Websocket;如果使用反向代理,则要在反向代理里同步开启。

对服务进行反向代理

因web页面强制要求使用https访问,建议使用反代套一层https,此处使用nginx proxy manager。

填写好ip和端口,打开Websockets SupportBlock Common ExploitsSSL选择证书,打开Force SSL,配置完成。

开始使用

点击Create Account创建账号,此时的密码为账号的主密码。进入Settings-Options,更改Language为中文即可。

注意!主密码非常重要!!Bitwarden通过帐号和主密码经算法得到一个值,然后用这个值去加密用户的各个密码,最后储存在服务器上。而加密解密都需要在本地进行,也就是说,黑客即使攻破了服务器,仍无法破解密码数据库。这对我们的密码足够安全,但也意味着你一旦忘记主密码,你所有保存的密码将永远无法访问,所以——请谨慎保管主密码

功能介绍

密码生成器

不论是网页版还是客户端,我们都能很容易找到密码生成器,它可以帮我们生成满足要求的随机密码,这对于账号的安全性有很大的提升。

试试你的密码要多久才能被破解?——How Secure Is My Password

匹配模式

bitwarden匹配模式十分重要,它决定了你的账号密码何时自动填充到网页中,默认是基础域模式,可以根据自己需求适当调整。各个匹配模式摘录如下:

基础域

选择基础域,当登录项目的 URI 值的顶级域名和第二级名与检测到的资源相匹配时,Bitwarden 将弹出提示以提供自动填充。
例如,URI 的值为https://google.com,使用基础域匹配检测:

URL 自动填充?
http://google.com ✔︎
https://accounts.google.com ✔︎
https://google.net
http://yahoo.com

主机

选择主机,当登录项目的 URI 值的主机名和端口(若指定了)与检测到的资源相匹配时,Bitwarden 将弹出提示以提供自动填充。
例如,URI 的值为https://sub.domain.com:4000,使用主机匹配检测:

URL 自动填充?
http://sub.domain.com:4000 ✔︎
https://sub.domain.com:4000/page.html ✔︎
https://domain.com
https://sub.domain.com
https://sub2.sub.domain.com:4000
https://sub.domain.com:5000

开始于

选择开始于,当检测到的资源以登录项目的 URI 值开头(无论后面跟什么)时,Bitwarden 将弹出提示以提供自动填充。
例如,URI 的值为https://sub.domain.com/path/,使用开始于匹配检测:

URL 自动填充?
https://sub.domain.com/path/ ✔︎
https://sub.domain.com/path/page.html ✔︎
https://sub.domain.com
https://sub.domain.com:4000/path/page.html(被端口阻断了)
https://sub.domain.com/path(缺少斜杠)

正则表达式

选择正则表达式,当检测到的资源与一个指定的正则表达式相匹配时,Bitwarden 将弹出提示以提供自动填充。正则表达式始终不区分大小写。

不安全示例

URI 的值为^https://.*google\.com$,使用正则表达式匹配检测:

URL 自动填充?
https://google.com ✔︎
https://sub.google.com ✔︎
https://malicious-site.com?q=google.com ✔︎
http://google.com
https://yahoo.com

这可能比预期的要匹配得更多。

安全示例

URI 的值为^https://[a-z]+\.wikipedia\.org/w/index\.php,使用正则表达式匹配检测:

URL 自动填充?
https://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Bitwarden ✔︎
https://pl.wikipedia.org/w/index.php?title=Specjalna:Zaloguj&returnto=Bitwarden ✔︎
https://en.wikipedia.org/w/index.php ✔︎
https://malicious-site.com
https://en.wikipedia.org/wiki/Bitwarden

精确

选择精确,当登录项目的 URI 值与检测到的资源精确匹配时,Bitwarden 将弹出提示以提供自动填充。
例如,URI 的值为https://www.google.com/page.html,使用精确匹配检测:

URL 自动填充?
https://www.google.com/page.html ✔︎
http://www.google.com/page.html
https://www.google.com/page.html?query=123
https://www.google.com

从不

选择从不,Bitwarden 将从不为登录项目弹出以提供自动填充。

客户端配置

接下来就是要自己的所有设备都能连接到密码库,并时刻更新密码了。此处以chrome扩展为例,其他客户端都大同小异,也就不多言了。

chrome扩展设置

在chrome应用商店搜索找到bitwarden,添加并启用。点击左上角设置,在自托管环境-服务器URL处填写自己的反代url,回到主页就能登录了。

点开设置页,将安全-密码库超时时间设置为从不,这样比较方便不需要频繁输入密码解锁。

设置页,找到其他-选项,点击进入;找到AUTOFILL,勾选自动填充。

结语

到这里,本篇教程就已基本结束了。Bitwarden是一款很强大的密码管理平台,本文也只简单介绍了部分基础内容。至于剩下更多功能,就留给各位自己发掘了~

参考资料

部署基于 Rust 的第三方 Bitwarden 服务端容器
【保姆级教程】利用宝塔面板+Docker搭建一个优秀的密码管理器——Bitwarden
Bitwarden的安装 – Wenhui’s Rotten Pen
URI 的使用 - Bitwarden 帮助中心中文版
Home · dani-garcia_vaultwarden Wiki
Bitwarden 帮助中心中文版


使用docker搭建vaultwarden密码管理服务
https://sunjx97.github.io/posts/b3a0bacb/
作者
sunjx97
发布于
2022年7月11日
许可协议