用Bitwarden自建密码管理系统
什么是Bitwarden?
Bitwarden 是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登录凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。Bitwarden 提供云托管服务,并支持自行部署解决方案。【维基百科】
前言
用户信息泄露事件时有发生,连 facebook 这样的大网站也不可避免,当你多个网站使用了同一个密码,假如你使用了 chrome 浏览器自动保存填充密码时,在密码被泄露后它会给出提醒。
所以每个网站、每个应用使用独立的密码是非常必要的。那为什么不用 chrome 自带的密码管理器呢?因为它无法自主添加网站,所以还需要配合其他记录工具使用。
在上一篇中我们介绍了《免费跨平台密码管理器KeePass》,其使用本地密码数据库保存,通过云盘同步的方式。属于一个去中心化的方案,也可以说是个离线版的方案。而今天要介绍的 bitwarden 正好相反,是基于服务器的一个方案,今天我们就来介绍如何在群晖上,用 bitwarden 自建密码管理服务器,来保障自己的数据安全。
为什么要自建服务器
Bitwarden自己的服务器安全性肯定是没问题的,但是放在别人服务器上总是有点担忧,万一服务器挂了呢?(最近onedrive for business就一直用不了),另一方面国内访问国外网站,总是不太友好,所以干脆自建。
准备工作
- 一个公网IP;
- 一个域名和SSL证书;
- 支持Docker的群晖主机(黑白无所谓);
服务端安装
bitwarden/setup
是官方镜像,因 Bitwarden 服务器使用 .Net 开发,Docker 镜像体积过大,此外它使用 Microsoft SQL Server 数据库,这个数据库对服务器性能要求比较高。
有人利用 Rust 重写了一遍,这个项目的 Docker 镜像叫做
bitwardenrs/server
,这个镜像体积比较小,对服务器性能要求比较低,还可以使用 SQLite 或 MariaDB/MySQL 数据库,而无需像官方服务器那样使用专有的 Microsoft SQL Server。
所以本次部署采用该镜像。代码地址:https://github.com/dani-garcia/bitwarden_rs
打开群晖Docker — 注册表 — 搜 bitwarden ,第一个 bitwardenrs/server
就是,双击下载,tag选择 latest
卷
端口
因为 80 端口被占用了,所以需要另外指定。
环境变量
新增四个变量
1 | # 设置是否开启 Web 客户端。如果开启,可以通过访问你的域名来打开 Web 客户端,用户登录后即可通过网页管理密码。因为注册用户需要,所以也暂且先打开; |
服务端设置
虽然 bitwardenrs
已经可以运行起来,但是 bitwardenrs
必须要通过https 访问,否则无法进行注册、登陆等一系列的操作。
反向代理设置
进入群晖的 “控制面板” - “Synology 应用程序门户” - “反向代理服务器” 页面 (找不到的话请点击高级模式) ,如图添加一条 “反向代理服务器规则”。(“来源端口” 你自己定义,“目的地端口” )
- 来源处协议必须选择 https,主机名为你在外网访问群晖的域名,端口填写你想要外网访问的端口,这里假如为 9443;
- 目的地处协议选择 http,主机名填写 localhost,对应上面配置容器参数步骤中设置的本地端口 8880;
- 完成后点击确定。
上传证书
进入群晖的 “控制面板” - “安全性” - “证书” 页面,将你的域名证书文件和私钥文件导入群晖中。
以 dnspod 申请的证书为例。将下载下来的证书文件压缩包解压。如图导入群晖中:
- Nginx 文件夹里的 2_域名.key 文件放入 “私钥” 中
- Nginx 文件夹里的 1_域名_bundle.crt 文件放入 “证书” 中
- “中间证书” 留空
或者
- Apache 文件夹里的 3_域名.key 文件放入 “私钥” 中
- Apache 文件夹里的 2_域名.crt 文件放入 “证书” 中
- Apache 文件夹里的 1_域名.crt 放入 “中间证书” 中
在” 证书 “页面设置刚才添加的反向代理服务器规则使用此证书。
使用
Web端
至此,Bitwarden 服务端基本就搭建好了。启动 Bitwarden 容器后,浏览器输入 https://群晖的 ip:9443,应该就可以进入登录页面了。
然后点击注册按钮填写我们的邮箱和主密码,请务必牢记你的主密码,因为一旦遗失,你保存的密码就再也找不回来了。
主界面
注册完成后如果不想其他用户进行注册的需要关闭注册及邀请功能。在群晖中停止一下容器,选择编辑容器
添加环境变量
1 | #关闭注册 |
应用后重启容器。
chrome插件
点击左上角的齿轮图标进入服务器设置界面。
在服务器URL中填入服务器地址(如:https://群晖的 ip:9443)后保存。
返回主界面后点击登录按钮,用自己注册的账号进行登录。
安装完插件后,在浏览器中鼠标右键会增加 Bitwarden 。
android app
“设置” - “自动填写” - “自动填充服务” - “启用”
其他用法和设置可以自行探索。
总结
- 这个docker镜像对于服务器的要求不高;
- 除了最基本的密码保存、上传附件等,官方需要付费使用的 TOTP 、密码检测等功能也都是可以直接使用的;
- 如果之前用过其他的密码管理器,可以导入到 Bitwarden;
- 最好启用两步登录,安全性更高一点;
- 数据在自己手里,可能会感觉会更安全点吧。
参考文档
官网主页
地址:https://bitwarden.com/放弃付费1Password改用免费开源的bitwarden_rs自建密码管理系统-安装,使用和备份
地址:https://wzfou.com/bitwarden-rs/使用群晖搭建第三方 Bitwarden 密码服务器
地址:https://penpenguanguan.com/10271.html使用群晖 Docker 搭建 bitwarden_rs 密码服务器
地址:https://blog.wxlost.com/docker_bitwarden_rs.html群晖可以这么玩 - 自建Bitwarden服务从此告别忘记密码
地址:https://post.smzdm.com/p/a4wkww3l/Installing bitwarden on Synology Diskstation
地址:https://www.kartolo.de/2020/02/03/installing-bitwarden-on-synology-diskstation/