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

2023-05-16

0. 背景

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

综合考量之下,选定了 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

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

# 设置日志路径
LOG_FILE=data/access.log

# 日志级别选项:trace、debug、info、warn、error 以及 off
LOG_LEVEL=warn
EXTENDED_LOGGING=true

# 设置SQLites数据库存储路径及数据库名
DATABASE_URL=data/vaultwarden.db

# 是否启用web客户端:true启用,false禁用
WEB_VAULT_ENABLED=true

# 修改线程,默认为10,若用户多可修改为更大,一般默认不需要设置
ROCKET_WORKERS=20

# 显示密码提示:true启用,false禁用
SHOW_PASSWORD_HINT=false

# 设置SMTP
SMTP_HOST=smtp.test.com
SMTP_FROM=test@test.com
SMTP_PORT=465
SMTP_USERNAME=test@test.com
SMTP_PASSWORD=password
# 自v1.25.0起,不再设置SMTP_SSL和SMTP_EXPLICIT_TLS,使用SMTP_SECURITY替代,它有以下选项:starttls、force_tls和off。
# 465端口使用force_tls,587端口使用starttls,25端口使用off。
SMTP_SECURITY=force_tls

# 启用或禁用邀请:true启用,false禁用
INVITATIONS_ALLOWED=false

# 启用或禁用分享发送功能,默认开启,启用true,禁用false
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 服务。

# 'upstream' 指令确保你有一个 http/1.1 连接
# 这里启用了 keepalive 选项并拥有更好的性能
#
# 此处定义服务器的 IP 和端口。
upstream vaultwarden-default {
  zone vaultwarden-default 64k;
  server 127.0.0.1:8080;
  keepalive 2;
}
upstream vaultwarden-ws {
  zone vaultwarden-ws 64k;
  server 127.0.0.1:3012;
  keepalive 2;
}

# 将 HTTP 重定向到 HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name pwd.iswbm.com;
    return 301 https://hostrequest_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name pwd.iswbm.com;

    # 根据需要指定 SSL 配置
    ssl_certificate /etc/letsencrypt/live/iswbm.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/<you_domain>/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/<you_domain>/cert.pem;

    client_max_body_size 128M;

    location / {
      proxy_http_version 1.1;
      proxy_set_header "Connection" "";

      proxy_set_header Host host;
      proxy_set_header X-Real-IPremote_addr;
      proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Protoscheme;

      proxy_pass http://vaultwarden-default;
    }

    location /notifications/hub/negotiate {
      proxy_http_version 1.1;
      proxy_set_header "Connection" "";

      proxy_set_header Host host;
      proxy_set_header X-Real-IPremote_addr;
      proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Protoscheme;

      proxy_pass http://vaultwarden-default;
    }

    location /notifications/hub {
      proxy_http_version 1.1;
      proxy_set_header Upgrade http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_set_header Hosthost;
      proxy_set_header X-Real-IP remote_addr;
      proxy_set_header Forwardedremote_addr;
      proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Protoscheme;

      proxy_pass http://vaultwarden-ws;
    }

    # 除了 ADMIN_TOKEN 之外,还可以选择添加额外的身份验证
    # 删除下面的 '#' 注释并创建 htpasswd_file 以使其处于活动状态
    #
    #location /admin {
    #  # 参阅: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
    #  auth_basic "Private";
    #  auth_basic_user_file /path/to/htpasswd_file;
    #
    #  proxy_http_version 1.1;
    #  proxy_set_header "Connection" "";
    #
    #  proxy_set_header Host host;
    #  proxy_set_header X-Real-IPremote_addr;
    #  proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
    #  proxy_set_header X-Forwarded-Protoscheme;
    #
    #  proxy_pass http://vaultwarden-default;
    #}
}

3. 创建帐号

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

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

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

登陆后的界面如下

4. 数据迁移

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

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

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

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

5. 客户端

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

  • Chrome
  • FireFox
  • Safari
  • Windows
  • MacOS
  • Linux
  • iOS:App Store 搜索 BitWarden
  • Android: Google Play 搜索 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/

转载至使用 VaultWarden 搭建个人密码管理器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VaultWarden 搭建个人密码管理器 原先Bitwarden 的相关文章

随机推荐

  • Linux 环境变量:DISPLAY

    1 dbvis no x11 display variable was set but this program performed an operation which requires it solution export DISPLA
  • PostgreSQL入门-安装与基本使用(Ubuntu)

    PostgreSQL入门 安装与基本使用 xff08 Ubuntu xff09 PostgreSQL 是一个免费的对象 关系数据库服务器 ORDBMS xff0c 号称是 世界上最先进的开源关系型数据库 PostgreSQL 是以加州大学计
  • windows下的pycharm项目部署同步到Linux下的pycharm开发

    windows下的pycharm项目部署同步到Linux下的pycharm开发 一 运行平台二 SSH连接远程服务器 一 运行平台 项目部署系统 xff1a UOS 项目开发平台 xff1a windows10 IDE xff1a PyCh
  • redhat操作系统升级红帽6升级到红帽7linux升级

    本文档介绍了从 RHEL 6 到 RHEL 7 就地升级的步骤 支持的就地升级路径是从 RHEL 6 10 到 RHEL 7 9 如果您的 RHEL 系统满足以下条件 xff0c 则完全支持此 RHEL 6 到 RHEL 7 升级过程 xf
  • Kubernetes角色访问控制RBAC和权限规则(Role+ClusterRole)---好文

    基于角色的访问控制 xff08 Role Based Access Control 即 RBAC xff09 使用 rbac authorization k8s io API Group实现授权决策 xff0c 允许管理员通过Kuberne
  • 你知道abrt-hook-ccpp吗

    1 什么是abrt hook ccpp abrt也可以叫abrtd xff0c 展开应该是automatically bug report daemon xff0c 也就是自动错误报告守护进程 从字面意义就可以看出 xff0c 他是一个守护
  • Mobaxterm 使用图形界面

    redhat 7 yum install firefox xorg x11 xauth mesa libGLES devel x86 64 mesa dri drivers vi etc ssh sshd config X11Forward
  • Linux ❉ Chronyd时间同步服务器详解

    一 介绍 1 简介 集群中节点之间需要时间同步 xff0c Chronyd不依赖外部的时间服务NTP xff0c 在内部搭建时间服务器 Chrony是网络时间协议 xff08 NTP xff09 的一种实现 xff0c 是一个类Unix系统
  • Linux时间延迟平滑对时方案的分析-Ntp和Chrony的不同表现

    系列文章目录 文章目录 系列文章目录前言一 环境信息二 ntpd模式 2 1 版本信息2 2 配置ntpd对时源 2 2 1 配置ntpd服务配置 xff0c 启动ntpd服务2 3 2 查看对时情况2 3 配置ntpd客户端 2 3 1
  • keepalive实现MGR的自动切换(二)

    10 0 0 7 lemon 10 0 0 8 lemon2 10 0 0 9 lemon3 程序代码里只需写一个VIP连接数据库即可 xff0c 后面是连接在哪一台通过 xff0c keepalived的在服务端实现 xff1b 通过检测
  • mysql MGR配置keepalived

    之前写过一篇mysql8 0搭建MGR 在这里 mysql8 0配置MGR 悠游 博客园 cnblogs com 在此基础上配置keepalived 一 安装keepalived 可能会少些包 xff0c 所以配置了网络yum源 所有节点均
  • UltraVNC 使用方法详细说明

    每次修改uvnc settings exe后 xff0c 都要重启Winvnc或者VNC server的进程 配置 否则会如下图 结束Winvnc进程 重新打开winvnc exe 直接点OK 打开UVNC Launch exe 右键SER
  • Linux(Ubuntu)下升级Nginx服务器软件至nginx-1.17.6

    Linux下升级Nginx服务器软件nginx 1 17 6 Nginx 音engine X 是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器 也是一个 IMAP POP3 SMTP 代理服务器
  • 通过SnmpWalk获取服务器状态信息

    简单网络管理协议SNMP xff08 Simple Network Management Protocol xff09 是网络监控和网络设备管理的统一 协议 xff0c 并被所有主流的操作系统和大量网络应用程序所支持 SNMP广泛用于管理和
  • 聊聊几款文件同步备份工具,你更喜欢哪一款呢?

    文件备份对企业的价值 对于绝大多数人而言 xff0c 电脑中的不少文件对于我们来说都非常重要 xff0c 一旦丢失 xff0c 损失将会难以估量 随着网络威胁的不断发展和变得越来越复杂 xff0c 文件传输和托管文件传输之间的区别对于企业来
  • 5分钟学会本地Pypi源搭建

    前言 通常我们在下载 python 包时都会选择清华源或者阿里源 但是当我们的开发环境无法访问外网的时候 xff0c 就需要搭建私有源 今天我们就一起花 5 分钟时间学习如何搭建一个本地私有源 工具选择 搭建本地私有源有很多种方案 xff0
  • Linux基础第十一章:日志文件及如何使用rsyslog搭建小型日志服务器

    一 日志文件 1 日志作用 将系统和应用发生的事件记录至日志中 xff0c 以助于排错和分析使用 记录的内容包括 xff1a 时间 xff0c 地点 xff0c 人物 xff0c 事件 2 常用日志 日志文件位置日志文件说明 var log
  • Linux parted 分区命令详解

    一 概述 通常我们用的比较多的分区工具是fdisk命令 xff0c 但由于fdisk只支持MBR分区 xff0c MBR分区表最大支撑2T的磁盘 xff0c 所以无法划分大于2T的分区 而parted工具可以划分单个分区大于2T的GPT格式
  • 配置docker pull代理

    Dockerd 代理 在执行docker pull时 xff0c 是由守护进程dockerd来执行 因此 xff0c 代理需要配在dockerd的环境中 而这个环境 xff0c 则是受systemd所管控 xff0c 因此实际是system
  • 使用 VaultWarden 搭建个人密码管理器 原先Bitwarden

    0 背景 超过 10 年网龄的我 xff0c 注册过很多网站帐号 xff0c 而出于安全方面的考量 xff08 避免脱库 xff09 xff0c 每个网站的密码都用不同的复杂的随机密码 xff0c 这时候一个密码管理器就显得十分有必要 xf