服务器自建Bitwarden密码管理器
Contents
一直以来,我的密码使用习惯都是用脑子记,所以只能一套简单密码走天下。从最初的qq账号,到如今将近两百个网站的密码,基本都是用的同一密码。究其原因,可能是对网站安全人员的盲目自信,也可能是认为自己的数据价值不高。
即便大厂的数据泄露事件已经屡见不鲜,自己也一直很侥幸没有成为那个受害者,当然也可能已经是个小透明,然而自己却浑然不知。
其实这就像车祸等意外,没发生在自己身上时,俨然是一个抱着侥幸心理的旁观者心态。但谁也不能保证下一个是不是自己,所以只能在自己最大的努力范围下,尽人事听天命。
Bitwarden是一个免费的开源密码管理服务,支持 Windows, macOS 和 Linux 等主流操作系统,浏览器插件也基本涵盖了常用的主流浏览器,同时支持ios和安卓等移动设备。如果不想自建的话,Bitwarden 官方提供了免费的密码托管服务,只是激活一些附加功能需要升级到 $10.00/年
的高级会员。
Bitwarden官网提供了基于Docker的自建教程,不过对服务器配置要求比较高:
- Processor: x64, 1.4GHz or faster
- Memory: 2GB of RAM or more
- Storage: 10GB or more
- Docker: Engine 1.8+ and Compose 1.17.1+
github上有很多开源的Bitwarden 服务器实现,目前最热门的当属bitwarden_rs. 很大程度上降低了对服务器配置的要求,同时一些官方后台中需要付费使用的功能,比如TOTP
认证的自动生成,在这里也可以免费使用。
在服务器安装docker 和docker-compose
参考docker官网的教程安装docker 和docker-compose。
使用nginx配置反向代理
假设使用域名xxx.com
用来访问Bitwardend的后台管理界面,同时指定127.0.0.1:16857
映射到docker中的bitwarden服务。
|
|
更新nginx配置:
|
|
docker-compose 配置
在用户主目录下新建 bitwarden 文件夹,并在文件夹中新建配置文件docker-compose.yml
|
|
启动服务:
|
|
客户端
部署完成后,访问后台管理界面xxx.com
,注册账号。注册完毕可将docker-compose.yml
中的SIGNUPS_ALLOWED
设置为false
,从而关闭用户注册功能。
安装浏览器插件,以chrome为例,在chrome网上应用店安装Bitwarden - 免费密码管理器插件。
由于是自建环境,在插件登录前,需要更改设置:
在自我托管环境
>服务器URL
中填入bitwarden后台管理网址xxx.com
,然后即可在插件中登录注册好的账号。
除了浏览器插件外,还可以在安卓或ios的商店中下载移动端app。
数据备份
对于密码这类重要数据,必须要做好备份,不然数据丢失的后果很严重。虽然很多网站可以找回密码,但假如要找回超过100个网站的密码,可能至少要耗时个1天的时间,而且你并不会记得都在哪些网站有过账号。即便不嫌麻烦,也并不是所有网站都能在网站上自助找回密码,比如各高校的edu邮箱。
数据备份最好遵循3-2-1 原则
,这样能最大限度的保证数据安全,所谓的3-2-1 原则
,具体是指:
- 3:保存3份完整文件,其中包括一份原件,加上两份拷贝;
- 2:备份文件至少要保存在两种不同介质上;
- 1:一份备份文件保存在异地。
数据原件算一份,也就是说还需要考虑另外两处存放拷贝数据的合适介质。
我的目前方案是,一份存在github私有仓库中,一份存到另一台服务器上。
数据备份至github私有仓库
在github上新建私有仓库bitwarden-backup
,并拉取到服务器某一路径下。
新建bitwarden_backup.sh
文件:
|
|
并创建Crontab定时任务,每天早晨8点备份:
|
|
默认db.sqlite3
是属于root用户的,其他用户使用sqlite3命令备份时会遇到权限问题。可以更改db.sqlite3
的所属,或者让root用户执行定时任务。
数据备份至另一台服务器
可以同样使用定时任务,将数据定期备份至另一台服务器上。
数据恢复
先停止bitwarden服务:
|
|
恢复数据:
|
|
Author bjjdkp
LastMod 2020-04-07