保贝狗是一款个人信息保护软件
欢迎体验、使用~

使用 VaultWarden 搭建个人密码管理器 原先Bitwarden

资料转载:​使用 VaultWarden 搭建个人密码管理器 原先Bitwarden_victoruu的博客-CSDN博客

0. 背景

超过 10 年网龄的我,注册过很多网站帐号,而出于安全方面的考量(避免脱库),每个网站的密码都用不同的复杂的随机密码,这时候一个密码管理器就显得十分有必要,我使用的是 LastPass 免费版,至今已经用了 8 年有余(特意查了下 Item 的最早记录)。

特意查了下 Item 的最早记录

不过最近几年,听到 LastPass 有安全泄露问题的消息越来越多,对于一个软件开发从业者来说,密码的安全是我非常关注的。

密码的安全

可没想到的是,安全带来的代价,却让我最终放弃 LastPass ,可能你无法相信,但事实确实如此。

不知何时开始的,LastPass 经常定期会要求已经授权的设备进行重新授权(事后才知晓的)。

这听起来是一件好事,但给我带来了非常糟糕的使用体验。

有一次印象非常深刻,也是第一次出现这种问题,当时我以为是使用时间太久,输入主密码就可以重新登陆使用,但是那次无论我用密码登陆多少次,都提示我去邮箱重新授权,但死活在 163 邮箱里收不到邮件,我非常的害怕,害怕我这么多年的保险箱就这么没了。这种状态给了我非常大的打击,我非常懊恼当时为什么选择它,也非常纳闷为什么一个产品会越来越用?

直到一次偶然的机会,我登陆了我多年未使用的 QQ ,发现在 QQ 邮箱里有 LastPass 的邮件,原来 LastPass 把邮件发到了这里,但是为什么呢?难道以前设置过安全邮箱?可是过后我在 LastPass 的官网里好像找不到相关的设置(或许是我没有找到)。

重新授权登陆后,由于工作忙,我没有继续跟进这件事了,也没有进行复盘,怎么会遇到这种事情,下次遇到这种事情该如何处理。

以至于到昨天晚上,我需要登陆一些帐号, LastPass 又在关键时刻,罢工了。

是的,它又提示我要重新授权才能使用,可问题是163 邮箱无论如何也收不到授权邮件。由于时间过了太久,不记得之前是发到 QQ 邮箱里去了,我开始又陷入了深深的自责,吃一垫为什么不长智?

幸运的是,由于近期做一些项目,手机上有下载 QQ,经常要登陆 QQ,看到邮箱里的消息,才又回想起之前的种种。

如果不是两次偶然的机会,让我有机会在 QQ 邮箱里看到授权邮件,恐怕我积累多年的 200 百多个密码,就全部丢失了,要知道密码数据对我来说有多么的重要,因为不是所有的帐号都能使用手机重设密码的。

经历了两次生与死的挣扎,害怕这种事情再次发生在自己的身上,于是我开始寻找市面上其他的解决方案,准备迁移数据到其他更好用的工具上。

在开始之前,先梳理了下自己的需求:

  1. 跨平台:浏览器,手机(Android,iOS)、电脑(Windows、MacOS),而且还要不限制设备数
  2. 免费:能免费就尽量用免费的(前提是安全性满足),省点钱毕竟还要还房贷

安全:这点最重要了,自不必说跨平台

综合考量之下,选定了 Bitwarden 这款工具,相对于LastPass的优势,Bitwarden有如下几个优势:

  1. 开源:Bitwarden是一款开源软件,这意味着任何人都可以查看并审查其代码,确保无后门、安全可靠。而LastPass则是一个闭源商业软件。
  2. 更便宜:Bitwarden提供免费和付费的服务计划。对于个人用户来说,它的付费计划要比LastPass便宜,提供的功能也更丰富。
  3. 更好的隐私:与LastPass不同,Bitwarden不会跟踪或出售用户的数据。此外,Bitwarden使用加密技术存储您的数据,并且只有用户拥有解密的密钥。
  4. 跨平台支持:Bitwarden支持iOS、Android、Windows、macOS、Linux等多个平台。而LastPass则仅支持较少的平台。
  5. 无限密码共享:在Bitwarden中,用户可以创建任意数量的密码共享组,并分享其中的密码给其他人,这是LastPass不支持的一个功能
  6. 社区氛围:由于Bitwarden使用范围更广泛,因此它有一个更大的社区,这意味着更好的支持、反馈和开发。它还提供了各种各样的浏览器插件和应用程序,使得我的体验更加完美。:

说干就干,从晚上 11 点开始查看文档,开始部署 Bitwarden,遇到了一些小问题,整到了凌晨一点,终于自己部署了下,以下是自己的部署过程,给有需要的朋友们可以做个参考

1. 前置知识

Bitwarden是一个强大的密码管理工具,它有着丰富的功能和强大的加密保护机制,同时也有易于使用的界面和跨平台支持。

  1. 加密存储:Bitwarden将所有的密码和账户信息加密后存储在云端或本地设备,并使用256位AES加密和PBKDF2 SHA-256哈希算法保护数据安全。每个用户都有自己的主密码,这是唯一能够解锁其加密数据的密码。
  2. 跨平台支持:Bitwarden提供了多种客户端应用程序,包括Windows、macOS、Linux、iOS和Android,以及浏览器扩展程序和Web应用程序,用户可以在各种平台上使用Bitwarden。
  3. 密码生成器:Bitwarden内置了随机密码生成器,可以生成更加复杂和安全的密码,这些密码包括数字、字母、符号等。
  4. 自动填充:Bitwarden能够自动填充登录凭据,用户无需手动输入用户名和密码。
  5. 分享和协作:Bitwarden允许用户与家人、朋友和同事共享密码和敏感信息。同时也可以创建组织并邀请团队成员进行协作。
  6. 多语言支持:Bitwarden支持多种语言,包括英语、中文、法语、德语、日语、韩语、西班牙语等。用户可以选择自己习惯的语言来使用。
  7. 开源授权:Bitwarden是一个开源软件,采用AGPLv3授权协议,用户可以自由分发和修改其代码。同时,Bitwarden使用了透明的开发过程,定期发布安全审计报告以保证安全性。

在搜索 Bitwarden 的使用时,还会经常看到 Vaultwarden 和 bitwarden_rs ,它们与 Bitwarden 是什么关系呢?

Bitwarden

  • 有专门开发团队运营的密码管理器,大部分功能是免费的,部分高级是收费的(如目录同步、SSO、群组、自定义角色以及基于企业组织层面的 Duo Security 两步登录)
  • 可以私有部署,但对对服务器的要求高,使用 .net 开发,用的是mssql,内存必需大于2G,对于小内存机器来说是跑不起来的。

Vaultwarden

  • Vaultwarden 是第三方开发的,并没有像Bitwarden那样的社区规模,但它也有自己的贡献者群体在维护和改进。
  • 可以私有部署,但比官方更轻量,使用 Rust 编写,改用 SQLite 数据库(现在也支持 MySQL 和 PostgreSQL),运行时只需要 10M 内存,可以说对硬件基本没有要求。
  • 以前的 bitwarden_rs,为了区分于官方的版本,特意改的名字

对比之下,Vaultwarden 优势非常的明显,建议大家和我一样,无脑使用 VaultWarden即可。

1. 私有部署

部署 Bitwarden 的方法有很多,使用 docker 是最方便的,一条命令即可

“`shell
docker run -d –name vaultwarden \
–restart=always \
-e WEBSOCKET_ENABLED=true \
-e SIGNUPS_ALLOWED=true \
-e DOMAIN=https://vault.youdomain.com \
-e ADMIN_TOKEN=<you_master_password> \
-v /data/bitwarden/:/data/ \
-p 8080:80 \
-p 3012:3012 \
vaultwarden/server:latest

<pre><code class=””>上面用到的参数有

“`shell
# 启用或禁用新用户注册:true启用,false禁用
SIGNUPS_ALLOWED=false

# 设置web访问域名,必须使用 https
DOMAIN=https://vault.yourdomain.com

# 是否启用WebSocket通知:true启用,false禁用
WEBSOCKET_ENABLED=true

# 启用管理后台并设置token,默认为空不启用,设置token后则启用
ADMIN_TOKEN=XXXXXXXXXXXX

还有更多的参数,可根据自己的需要进行设置

  1. # 设置日志路径
  2. LOG_FILE=data/access.log
  3. # 日志级别选项:trace、debug、info、warn、error 以及 off
  4. LOG_LEVEL=warn
  5. EXTENDED_LOGGING=true
  6. # 设置SQLites数据库存储路径及数据库名
  7. DATABASE_URL=data/vaultwarden.db
  8. # 是否启用web客户端:true启用,false禁用
  9. WEB_VAULT_ENABLED=true
  10. # 修改线程,默认为10,若用户多可修改为更大,一般默认不需要设置
  11. ROCKET_WORKERS=20
  12. # 显示密码提示:true启用,false禁用
  13. SHOW_PASSWORD_HINT=false
  14. # 设置SMTP
  15. SMTP_HOST=smtp.test.com
  16. SMTP_FROM=test@test.com
  17. SMTP_PORT=465
  18. SMTP_USERNAME=test@test.com
  19. SMTP_PASSWORD=password
  20. # 自v1.25.0起,不再设置SMTP_SSL和SMTP_EXPLICIT_TLS,使用SMTP_SECURITY替代,它有以下选项:starttls、force_tls和off
  21. # 465端口使用force_tls,587端口使用starttls,25端口使用off
  22. SMTP_SECURITY=force_tls
  23. # 启用或禁用邀请:true启用,false禁用
  24. INVITATIONS_ALLOWED=false
  25. # 启用或禁用分享发送功能,默认开启,启用true,禁用false
  26. SENDS_ALLOWED=false

2. 反向代理

2.1 域名解析

后端的 Bitwarden 服务已经成功运行,前端如何访问呢?

有两种方法:

  1. 直接使用 https://{ip}:{password}​ 访问 web
  2. 申请个域名,使用 https://{domain}​ 访问 web

使用 ip 访问,记得去设置安全组,开放端口

使用域名访问,可以使用子域名,省得再申请域名,个人推荐使用域名,使用上更方便。

在云厂商上设置好 DNS 解析后,还需要设置下 nginx 的反向代理,才可以使用域名进行访问。

2.2 反向代理

找到你的 nginx 配置文件路径,假设是 /usr/local/nginx/conf/nginx.conf,添加如下配置,并重启 nginx 服务。

  1. # ‘upstream’ 指令确保你有一个 http/1.1 连接
  2. # 这里启用了 keepalive 选项并拥有更好的性能
  3. #
  4. # 此处定义服务器的 IP 和端口。
  5. upstream vaultwarden-default {
  6. zone vaultwarden-default 64k;
  7. server 127.0.0.1:8080;
  8. keepalive 2;
  9. }
  10. upstream vaultwarden-ws {
  11. zone vaultwarden-ws 64k;
  12. server 127.0.0.1:3012;
  13. keepalive 2;
  14. }
  15. # 将 HTTP 重定向到 HTTPS
  16. server {
  17. listen 80;
  18. listen [::]:80;
  19. server_name pwd.iswbm.com;
  20. return 301 https://hostrequest_uri;
  21. }
  22. server {
  23. listen 443 ssl http2;
  24. listen [::]:443 ssl http2;
  25. server_name pwd.iswbm.com;
  26. # 根据需要指定 SSL 配置
  27. ssl_certificate /etc/letsencrypt/live/iswbm.com/cert.pem;
  28. ssl_certificate_key /etc/letsencrypt/live/<you_domain>/privkey.pem;
  29. ssl_trusted_certificate /etc/letsencrypt/live/<you_domain>/cert.pem;
  30. client_max_body_size 128M;
  31. location / {
  32. proxy_http_version 1.1;
  33. proxy_set_header “Connection” “”;
  34. proxy_set_header Host host;
  35. proxy_set_header X-Real-IPremote_addr;
  36. proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
  37. proxy_set_header X-Forwarded-Protoscheme;
  38. proxy_pass http://vaultwarden-default;
  39. }
  40. location /notifications/hub/negotiate {
  41. proxy_http_version 1.1;
  42. proxy_set_header “Connection” “”;
  43. proxy_set_header Host host;
  44. proxy_set_header X-Real-IPremote_addr;
  45. proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
  46. proxy_set_header X-Forwarded-Protoscheme;
  47. proxy_pass http://vaultwarden-default;
  48. }
  49. location /notifications/hub {
  50. proxy_http_version 1.1;
  51. proxy_set_header Upgrade http_upgrade;
  52. proxy_set_header Connection “upgrade”;
  53. proxy_set_header Hosthost;
  54. proxy_set_header X-Real-IP remote_addr;
  55. proxy_set_header Forwardedremote_addr;
  56. proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
  57. proxy_set_header X-Forwarded-Protoscheme;
  58. proxy_pass http://vaultwarden-ws;
  59. }
  60. # 除了 ADMIN_TOKEN 之外,还可以选择添加额外的身份验证
  61. # 删除下面的 ‘#’ 注释并创建 htpasswd_file 以使其处于活动状态
  62. #
  63. #location /admin {
  64. # # 参阅: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
  65. # auth_basic “Private”;
  66. # auth_basic_user_file /path/to/htpasswd_file;
  67. #
  68. # proxy_http_version 1.1;
  69. # proxy_set_header “Connection” “”;
  70. #
  71. # proxy_set_header Host host;
  72. # proxy_set_header X-Real-IPremote_addr;
  73. # proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
  74. # proxy_set_header X-Forwarded-Protoscheme;
  75. #
  76. # proxy_pass http://vaultwarden-default;
  77. #}
  78. }

3. 创建帐号

设置好反向代理后,就可以使用域名直接登陆 BitWarden,首次登陆,要先创建帐户

创建帐号

输入邮箱 等其他相关信息,密码千万记住,主密码提示最好写下,省得忘记主密码。

帐号创建完成后,跳转到登陆界面输入主密码进行登陆

输入主密码进行登陆

登陆后的界面如下

登陆后的界面如下

4. 数据迁移

万事具备,只剩迁移,VaultWarden 对于市面上的几乎所有的密码管理器都提供数据导入功能,你听过的没听过的都支持,应该有几十种,包括:

  • LastPass
  • 1Password
  • KeePass
  • Chrome & Firefox & Safari
  • 等等

我之前的主要平台是 LastPass ,在如下位置就可以将密码导出为 csv 格式

将密码导出为 csv 格式

 

回到 https://vault.youdomain.com 选择工具 – 导入数据

选择工具 – 导入数据

5. 客户端

Bitwarden 提供了全平台的客户端软件,以下是常用的一些平台客户端,附上了链接,可以直接下载

未在此列的平台,可前往官网进行下载:https://bitwarden.com/download

以 Chrome 插件和 iOS 为例,介绍下用法

Chrome 插件

安装完成后,先点击左上角的设置私人服务器(https://vault.youdomain.com)后

设置私人服务器

再使用邮箱登陆,就能连接到自己的密码库啦~

连接自己的密码库

 

iOS 客户端

在 App Store 安装后,也是和上面一样,先设置私人服务器,也就是前面设置的域名。再输入主密码,就可以登陆上自己的密码管理器。

为了在手机上有更好的体验,需要设置一下,开启自动填充。

在 设置​ -> 密码​ -> 密码选项​,允许 BitWarden 做为密码的填充源

密码的填充源

其他平台

若你手上有其他的设备,方法都是类似的,可自行设置。

‍6. 高级功能

安全报告

Bitwarden 还会生成一系列的安全报告,以保护用户密码的安全。

安全报告

它会将密码以及邮箱地址与已经公开的,被泄露的数据库中的内容进行对比,并找出这些不安全的密码,另外也会与你自己的密码库中的密码进行对比,防止一个密码被重复使用多次。它能够找到那些非常容易被破解的密码,在自动填写的域名中未使用 https 的,以及网站有两步验证但并未被启用的,并进行提醒,增加密码的安全程度。

测试了下自己的密码,有很多都是有高危风险,这两天就要统一整改下。

高危风险

账户保护

除了普通的账号密码,以及两步验证(必须通过网页端开启)外,Bitwarden 还通过 “指纹短语”(fingerprint phrase)来保护帐号安全。每个帐号都有一个固定的,由 5 个英语单词组成的指纹短语,且不会改变。可以通过验证指纹短语,来判断所连接到正确的的 Bitwarden 服务器。或用来验证添加到组织中的帐号是否为正确的帐号。

账户保护

它还支持通过修改 KDF 迭代来防止主密码遭到暴力破解。

防止主密码遭到暴力破解

其他一些安全措施,别的密码管理软件也具有,像后台自动锁定,禁止截图等等,这里就不展开细说了。

总而言之,它所提供的功能非常丰富,在生成管理密码外,还有一系列保护账户安全的功能,

7. 说在最后

私有部署 BitWarden ,不仅自己可以用,也可以给家里人使用,但注册好后,请及时将关闭 web 功能,或者关闭注册功能。

虽然数据和隐私完全掌握在自己的手里,但这一切的前提是安全,服务器的安全需要自己维护,若有没有安全方面的经验,最好去学习一下,明哥这边给一些基本的建议:

  • 服务器禁止密码登陆,只开启使用密钥登陆
  • 及时升级软件,避免三方软件的安全漏洞
  • 对数据进行定期的备份,防止数据误删除
  • 限制不必要的端口,安全组别乱开

总之,便利与安全是两个是相互对抗,只能平衡,不能消除,使用 BitWarden 一定要注意做好安全措施。

8. 参考文档

  • BitWarden 帮助中心 – 中文版:https://help.ppgg.in/
  • BitWarden 客户端下载中心:https://bitwarden.com/download/

 

-=||=-收藏赞 (0)
保贝狗是一款个人信息保护产品。 » 使用 VaultWarden 搭建个人密码管理器 原先Bitwarden

评论 抢沙发

保贝狗

保贝狗是一款免费的个人信息保护产品
大家都在用的隐私保护软件
保贝狗专注于个人信息保护的研究
实用、简单、方便、快捷

QQ联系我们微信联系我们

登录

找回密码

注册