自搭建全平台私有密码库 bitwarden & Vaultwarden
本文最后更新于 2024-03-15,文章内容可能已经过时。
本文转载自:自搭建全平台私有密码库 bitwarden & Vaultwarden - OttoLi 的胡言乱语
密码管理之痛
相信大家都有一个困扰,就是各种软件、网站的密码管理问题。很多人都是全靠大脑记忆,估计下面列举的痛点或多或少都有一些。
- 全都用相同的密码,感觉不够安全
- 全都用不同的密码,记忆难度过大
- 各平台的密码长度、复杂度要求不一样
- 有些账号需要定期重置密码,加重记忆负担
那么就需要一定的密码管理策略来解决这些痛点。针对这个问题,我也找到了这么几种方案:
方案 | 可靠度 | 安全性 | 便利性 | 成本 |
---|---|---|---|---|
脑子记 | 可靠度很低,除非过目不忘 | 安全性极高,基本不会泄露 | 便利性极高,不依赖任何外部介质 | 0 |
纸质介质记录 | 可靠度极高,一般不会凭空消失 | 安全性较低,有被偷看的风险 | 便利性较低,不便于随身携带、随时查看 | 5块钱买个本 |
本地文档记录 | 可靠度较低,须做好多端备份 | 安全性一般,明文记录 | 便利性较低,不便于多平台随时查看 | 0 |
云文档记录 | 可靠度较高,建议选靠谱的云服务(但不排除服务调整或突然终止 | 安全性较低,明文记录且上云 | 便利性很高,多平台同步 | 0 |
密码管理软件(纯本地) | 可靠度较低,须做好多端备份 | 安全性较高,专业加密算法 | 便利性较低,不便于多平台随时查看 | 一般免费 |
密码管理软件(上云) | 可靠度较高,建议选靠谱的服务商(但不排除服务调整或突然终止 | 安全性较高,专业加密算法 | 便利性很高,一般支持多平台同步 | 一般收费 |
密码管理软件(私有云) | 可靠度取决于你的维护(做好备份工作 | 安全性较高,专业加密算法 | 便利性很高,一般支持多平台同步 | 需要私有云服务器、nas等 |
综合来看,首先前四种方案都有较为明显的短板,不适合作为长期使用的密码管理方案。
在后三种专业密码管理软件中,首先安全性都能够得到不错的保证,差别主要体现在可靠度、便利性和成本之间的取舍。
- 选择纯本地,相当于为低成本舍弃可靠度和便利性
- 选择上云,相当于以高成本换取最佳体验
- 而选择私有云,在有云服务器或 nas 的情况下,则可以 0 成本获得最佳体验
本文介绍的私有化密码管理方案将基于开源项目 bitwarden/Vaultwarden
bitwarden 是开源的专业密码管理软件,是目前最为常用的密码管理软件之一,主要特点有:
- Windows、Mac、Linux、Android、iOS 全平台覆盖
- 支持 Chrome、Edge、Safari、Firefox 等主流浏览器插件
- 支持
密码
、文本
、信息表
甚至附件
的加密保管 - 支持自动填写网页、app 账号密码
- 支持文件加密分享,方便地通过 bitwarden send 分享隐私文件、照片等
- 支持生成两步验证器,为每个密码设置 TOTP 动态口令
- 支持团队密码库,可在团队成员中共享团队密码
- 支持密码检测报告,检测密码库中的重复密码、弱密码、已被泄露的密码等
- 代码开源,支持自搭建,将数据全部掌握在自己手中
在安全性方面,bitwarden 的原理是使用一个足够复杂的 主密码
来管理其他所有的密码,采用 AES-256 位加密、加盐哈希和 PBKDF2 SHA-256 来保证所有信息的安全。安全性可以这么说,只要你自己不主动把主密码泄露,目前地球上没有能暴力破解的计算机。bitwarden 官网有比较详细的介绍,它会定期进行第三方安全审计,通过了 GDPR、SOC 2、HIPAA、Privacy Shield 和 CCPA 等认证。
主密码无法通过任何方式恢复,如果忘记密码最多只能通过邮件获取你预先设置的密码提示,如果依然无法想起主密码,就会失去所有数据。
Bitwarden也提供了服务端用于自行部署。不过官方服务端性能要求高,所以我使用了用rust编写的非官方服务端vaultwarden(原名bitwarden_rs)。
在使用bitwarden之前,窝总共有四五个密码。最最开始所有账号用的都是同一个密码,后来害怕密码泄露,又想了三四个密码,小网站/小APP使用最简单的密码,即使泄露也无伤大雅,比较重要的账户使用中等复杂的密码,重要的账号/涉及支付的账号使用最复杂的密码。
但是这样还是会有一些小问题,比如1. 一些小网站就要求大小写字母加符号。而有一些APP竟然不允许密码中包含符号。。。绝了 2. 有时候我也不知道某个账号用的是哪个密码,只好所有密码都试一遍。3. 有时候我记不住账号(┬┬﹏┬┬),因为我有多个邮箱和用户名。
所以我开始使用密码管理器,如果你没有自己的服务器,域名,和比较富裕的时间,我建议使用官方服务,官方免费服务足够个人使用(需要有一定科学上网能力,来接收Google reCAPTCHA)。
Bitwarden提供优秀的自动填充服务,并且可以利用系统的生物识别(指纹,人脸等)进行认证。
同时Bitwarden不止可以用来存储密码,还可以存储文件/文本/银行卡/个人信息。并且提供安全分享功能(seed)。
搭建教程
需要有一台vps,一个域名,如果服务器位于国内则需备案。
我使用的是阿里云1h 2g 5m
(一) 安装Docker和Caddy
1. 安装必要软件
sudo apt update
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
2.添加官方密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3. 添加仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 安装Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
5. 安装Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
(二) 部署Vaultwarden
1. 拉取镜像
docker pull vaultwarden/server
2. 启动容器
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 8080:80 vaultwarden/server:latest
这将创建一个名字叫vaultwarden,将容器的/data/目录映射到机器的/vm-data/目录,将容器的80端口映射到机器的8080端口,使用的镜像为vaultwarden/server:latest.
3. 配置Caddy
mkdir /etc/caddy
touch /etc/caddy/Caddyfile
vi /etc/caddy/Caddyfile
按i进入编辑模式,输入
password.example.com {
reverse_proxy localhost:8080
}
之后输 sudo systemctl reload caddy
重启Caddy。
去DNS服务商那里把域名解析到vps,
浏览器访问password.example.com,出现bitwarden的界面就ok.入
4. 注册
点击创建账号,填写电子邮件,设置主密码.
主密码一定不能太简单.
只有知道主密码才能访问密码库,即使别人盗取了你的数据库,在不知道你主密码的情况下依然无法访问你的密码库,所以主密码一定要设置复杂一点.
(三) 设置Vaultwarden
1. 禁止新用户注册并开启WebSocket
为了防止他人注册,需要禁止新用户注册.
docker rm vaultwarden
docker run -d --name vaultwarden \
-e SIGNUPS_ALLOWED=false \
-e WEBSOCKET_ENABLED=true \
-v /vw-data/:/data/ \
-p 8081:80 \
-p 30122:3012 \
vaultwarden/server:latest
之后去修改 Caddyfile
, 添加
reverse_proxy localhost:30122
(四) 获取Bitwarden应用
访问 https://bitwarden.com/download/ 获取各平台应用
请选择你的系统
- 感谢你赐予我前进的力量