Vaultwarden安装和使用
本文最后更新于 28 天前,如有失效请评论区留言。

简介

Bitwarden是一个开源的密码管理工具。它可以存储用户名、密码、网页填写的身份信息、信用卡,还能生成高强度的密码和用户名(再也不用为了取名字想半天了😂),同时提供安全的加密方式来保护这些密码免受未经授权的访问。Vaultwarden 是一个用于本地搭建 Bitwarden 服务器的第三方 Docker 项目。Vaultwarden 比 Bitwarden 官方版更轻量,除不支持 Bitwarden 官方企业版的部分功能(详情见这里)外,其他大部分功能均支持并且免费! 中文版文档:https://rs.ppgg.in/

使用argon2生成加密后的哈希值

因为安全考虑,Vaultwarden 官网推荐使用argon2把密码经过加密生成哈希值

下面有两种我推荐的使用方式

1.使用docker运行临时容器生成 (简单方便,新手推荐)

docker run --rm -it vaultwarden/server /vaultwarden hash

然后会让你输入两次密码(请务必记住这个管理员密码),长度不能小于8位,输入完成后即可生成ADMIN_TOKEN

image-20231207010028864

可以看到即使输入了两次一样的密码,生成的TOKEN还是不一样

复制里面的内容,注意不要复制 ''

2.使用argon2根据参数生成 (更加灵活)

先安装argon2

apt install argon2

运行命令 把xxx替换成你要输入的密码,后面参数可以根据vps性能灵活调整

echo -n "xxx" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4

把生成后的结果复制下,等会用

安装

还是先创建目录以及compose.yml文件

mkdir -p ~/docker/vaultwarden && cd ~/docker/vaultwarden && vim compose.yml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    ports:
      - "10002:80" # 可修改
    environment:
      - USE_SYSLOG=true # 开启用户日志
      - LOG_FILE=/data/vaultwarden.log # 设置用户日志位置
      - LOG_LEVEL=warn # 修改日志等级为 warn 警告,可以减少日志消息数量
      - DOMAIN=https://xxx # 修改
      - SIGNUPS_ALLOWED=true # 是否能注册账号,先使用true把账号注册了再改成false
      - ADMIN_TOKEN=xxx # 修改
    volumes:
      - ./bw-data:/data  # 将数据存储在本地的 bw-data 目录中,可以根据需要更改

环境变量文档 https://github.com/dani-garcia/vaultwarden/blob/main/.env.template

先把域名填上,接着把之前的复制的哈希值粘贴进去 替换 ADMIN_TOKEN 后面的 xxx

image-20231207010451594

Esc:wq退出并保存,这时还需要把 ADMIN_TOKEN 里面的$替换成$$才能正常识别($符号有时会被解释为环境变量的引用,所以使用$$来转义),执行下面的命令

sed -i 's#\$#\$\$#g' compose.yml

image-20231207010734005

在运行之前可以执行

docker compose config

查看你的ADMIN_TOKEN格式是否有错,下图WARN警告就是错误的配置(没有把$转换成$$)

image-20231205161747208

运行

docker compose up -d && docker compose logs -f

如果显示下面的警告就说明你的 ADMIN_TOKEN 没有正确的配置,检查是否添加了”

image-20231207011042412

进入 npm 页面添加反向代理,注意这次要选中 Websockets Support,因为 vaultwarden 是支持 Websocket,然后再把SSL选上

image-20231205155914788

image-20231203015404057

进入页面,点击创建账户

image-20231205160801381

创建完了输入密码登录,在登录之前,你可以按下F12控制台,点击网络

image-20231205161005850

登录后你就可以看到一个ws请求,就是支持Websocket的证明

image-20231205161205006

我们注册成功后记得 compose.yml文件中修改 SIGNUPS_ALLOWED=false 禁止用户注册,可以邮件邀请注册

修改完成后重启

docker compose down && docker compose up -d

管理面板

可以在域名后面加 /admin 进入管理员页面,输入之前输入两次的密码

image-20231207001550917

一般进入后设置的就两个一个发送邮箱的设置,一个2FA保护邮箱

先设置用哪个邮箱给用户发送邮件

我使用的是qq,其他邮箱我们只需要查找他的SMTP发送邮件的 host 和 SSL加密的 port

| 邮箱 | host | port |
| ——— | ————– | ———- |
| qq.com | smtp.qq.com | 465 或 587 |
| 163.com | smtp.163.com | 465 或 994 |
| 126.com | smtp.126.com | 465 |
| yeah.net | smtp.yeah.net | 465 |
| gmail.com | smtp.gmail.com | 465 或 587 |

除了qq的测试过,其他未测试,port端口大部分都是465 或 587可以换着测试,也欢迎各位的反馈

如果是465的端口 Secure SMTP 需要设置成 force_tls

587端口(有时候是25) Secure SMTP 需要设置成 starttls (默认就是starttls)

不支持加密的Port端口 25 SMTP_SECURITY 设置 off (不推荐,建议换成支持SSL/TLS加密的邮箱)

配置SMTP发送邮件功能

进入qq邮箱点击 设置-账户-管理服务

image-20231207105914644

然后点击生成授权码,用自己已有的方式验证,我习惯是手机令牌

image-20231207110006017

生成的这个授权码就是密码

image-20231207110209860

image-20231207105023075

记得配置完成后先点击左下角蓝色 Save 保存按钮,然后再在Test SMTP中填写你自己的邮箱验证是否配置成功

image-20231207105234214

然后在邮箱中就能成功看到发送的测试邮件

image-20231207105331114

可以进入User发送邮件邀请用户进入,这个页面也可以对用户进行一些操作 删除2FA验证、让用户退出下线、删除用户、禁用用户

image-20231207155343064

邮箱两步验证(可选)

开启邮箱的两步验证

image-20231207154253335

image-20231207154226528

输入主密码进入 输入绑定邮箱,填写邮件中的 6 位数验证码,点击启用

image-20231207154801396

这样下次登录就会要去填写邮件中的验证码才能登录,更加安全

image-20231207154935582

当然也可以使用验证器应用,我比较喜欢使用 Google Authenticator

Fail2ban

设置 Fail2ban 保护 Vaultwarden 防止暴力破解,安装和命令可以看之前的教程

防止用户登录暴力破解

vim /etc/fail2ban/filter.d/vaultwarden.conf
[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

Esc:wq退出并保存

设置jail

vim /etc/fail2ban/jail.d/vaultwarden.conf
[vaultwarden]
enabled = true
# 填写之前配置的端口
port = 10002
filter = vaultwarden
banaction = %(banaction_allports)s
chain = FORWARD
 # 存放log的路径 如果是按照教程来的就是下面的路径不用改
logpath = /root/docker/vaultwarden/bw-data/vaultwarden.log
maxretry = 3
bantime = 14400
findtime = 14400

重启 fail2ban

sudo systemctl reload fail2ban

这时使用

fail2ban-client status

就能看到多了一个新的vaultwarden

image-20231211150807796

查看详细

fail2ban-client status vaultwarden

image-20231211151307612

可以看到已经封了一个ip了

防止管理页面暴力破解

vim /etc/fail2ban/filter.d/vaultwarden-admin.conf
[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Invalid admin token\. IP: <ADDR>.*$
ignoreregex =

Esc:wq退出并保存

设置jail

vim /etc/fail2ban/jail.d/vaultwarden-admin.conf
[vaultwarden-admin]
enabled = true
# 填写之前配置的端口
port = 10002
filter = vaultwarden-admin
action = iptables-allports[name=vaultwarden, chain=FORWARD]
 # 存放log的路径 如果是按照教程来的就是下面的路径不用改
logpath = /root/docker/vaultwarden/bw-data/vaultwarden.log
maxretry = 3
bantime = 14400
findtime = 14400

重启 fail2ban

sudo systemctl reload fail2ban
fail2ban-client status vaultwarden-admin

image-20231211152554779

这样你的 vaultwarden 就可以预防被人跑字典暴力破解了

导出chrome自动填充密码到vaultwarden

打开Chrome右上角三个点,设置-自动填充和密码-Google密码管理工具,弹出的新页面选择设置-导出密码 也可以直接打开网址 chrome://password-manager/settings (如果有电脑密码需要输入后下载)

image-20231207160130330

登录vaultwarden

image-20231207160444156

文件格式选择Chrome (csv),选择刚才下载的 Chrome 密码.csv

导入成功后记得删除Google上记录的密码

image-20231207161800687

如果是新版Chrome 你登录了google账户还会在网络上保存 进入 https://myaccount.google.com/security 往下滑

image-20231207161933715

目前还只能点击单个删除,你可能会说为什么都有google了我为什么还需要 Vaultwarden ,因为数据的安全和私密性是无价的,我记得之前在论坛上看到过Chrome存储的密码一键导出脚本,只要你安装了来路不明的软件就可能所有账号密码向别人敞开。Vaultwarden是一个开源密码管理器,采用端到端加密保护用户数据。用户可以搭建在私有服务器上,确保密码和敏感信息的安全性。

网页端使用和设置

我们搭建的是服务端的Vaultwarden,客户端都使用的Bitwarden的工具 可以访问 https://bitwarden.com/download/ 下载对应的版本

推荐使用Google Chrome浏览器,插件地址 https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb

打开后选择自托管,输入搭建的地址

image-20231207170245376

点击设置根据电脑是否有其他人使用来设置超时时间,我在公司电脑设置的就是浏览器重启时

image-20231207164032078

设置-自动填充 勾选自动填充,能让页面一打开插件如果识别到了账号密码框就自动填充(如果自动填充失败就手动点一下你要填充的那个账号或者使用快捷键Ctrl+Shift+L),默认URI匹配检测设置为主机更精准

image-20231207170702269

如果有复制粘贴,修改的操作,推荐点击弹出窗口进行操作,因为只要一点击网页就会自动消失,弹出后可以一直操作

image-20231207172033780

以后注册账号的时候推荐使用 密码生成器 生成密码,生成长度根据网页的密码要求调整,防止长度越大,暴力破解时长约久,大小写和特殊符号都加上(反正以后你也不需要记密码了)

image-20231207172247863

随机生成用户名功能也很实用 (再也不用为了起名字想半天了😂)

image-20231207172509920

还可以保存2FA中的TOTP,一般就是我们常用的两步验证

image-20231208143546816

但是这个TOTP只能输入密钥,一般给的都是二维码,这时有两种方式,一种使用手机来扫码,需要下载app,推荐google商店的这个https://play.google.com/store/apps/details?id=com.google.zxing.client.android,另一种时电脑上下载一个识别二维码的软件,推荐吾爱作者的工具 https://mojian.lanzout.com/iw1e11f4438b,本地解析不联网,之前也尝试过草料二维码浏览器插件,但是他是将图片上传他们服务器进行解析,这种安全认证类型还是推荐本地软件不联网

image-20231208144628810

将这串解析后的数据粘贴进bitwarden的totp中 (仔细观察你会发现,解析出来的多了些信息,标记了发布者是Vaultwarden,邮箱,还有totp协议,真正使用到的还是secret里面的密钥)

image-20231208145502434

下次进入这个网址也不用打开手机找验证码了,而且多端同步,手机丢失也不怕

更多功能可以参考官方文档 https://bitwarden.com/help/

参考文献:

https://github.com/dani-garcia/vaultwarden/wiki/FAQs

https://rs.ppgg.in/

https://blognas.hwb0307.com/linux/docker/236

https://iwanlab.com/docker-compose-install-vaultwarden/

版权声明:本文为BIMiracle原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇