树洞剪藏#剪藏#树洞剪藏

Vaultwarden折腾指北 | 龟's Blog

2024 年 12 月 19 日1 分钟
分享Twitter / XTelegram微博
Vaultwarden折腾指北 | 龟's Blog 封面

同步来源:树洞剪藏 源站剪藏 ID:436 原文地址:https://mattshi.com/2023/03/05/2eaf74ae

打开原文 · 打开源站剪藏快照


Vaultwarden折腾指北 | 龟's Blog

文章 59 标签 14 分类 5

首页 归档 标签 分类 友链 龟's Blog

搜索

首页 归档 标签 分类 友链

Vaultwarden折腾指北

发表于 2023-03-05 | 更新于 2024-11-21 | 日常 | 字数总计: 1.3k | 阅读时长: 5分钟

关于云密码管理软件 云密码管理软件这一块,我一直使用的是1password, 使用1password的体验非常不错, 被人诟病的手机应用端自从更新到1password 8以后也很不错。导致我本次决定迁移到Vaultwarden的原有:

前段时间信用卡莫名其妙的收到了一笔境外的扣款,想了半天终于想起来是1password (年费订阅..还特地致电去冻了卡)。

去年Lastpass的云存储设施遭黑客入侵,大量客户保险库敏感数据疑遭泄露。让我意识到数据还是握在自己手里合适。

说起来你们可能不信,我没有用过Docker,都是服务本地直接安装。

安装过程 云服务提供商是腾讯云,感觉最近一段时间很少看到腾讯阿里做力度非常大的活动了。考虑到1password和其他服务订阅的成本,一年续费的价格也就没有显得很贵。

安装Docker 官方提供了非常好的 手册 来参考,这里还是简单的说一下

更新 apt 索引以及安装 apt 对HTTPS的支持

bash

1 2 3 4 5 6

sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release

添加Docker的GPG key

bash

1 2

sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置repository

bash

1 2 3

echo \ "deb [arch= $(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

剩下的步骤就是更新 apt 索引和安装了

bash

1 2

sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装Vaultwarden 简单介绍一下Vaultwarden,就是一个非官方Rust版本的服务端,这目前算是个人用Bitwarden的最优解决方案,因为它不是那么消耗服务器性能,项目地址: Link 。感兴趣的可以去翻一翻,里面有Wiki会对本章节的部分内容做完整的解释。

为了方便,这里使用 docker-compose 启动服务,在上文的Docker安装中已经涵盖,如果没有可能要自己安装。

首先创建一个 yml 文件这里我叫 vaultwarden.yml

yml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

version: '3.1' services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden restart: always environment:

  • TZ=Asia/Shanghai
  • SIGNUPS_ALLOWED=false
  • INVITATIONS_ALLOWED=true
  • ADMIN_TOKEN=
  • LOG_FILE=/data/vaultwarden.log
  • LOG_LEVEL=warn
  • SHOW_PASSWORD_HINT=false
  • DOMAIN= volumes:
  • /etc/vaultwarden/:/data/ ports:
  • "127.0.0.1:2081:80"

​ 这里对其中的几个参数做一下解释这些配置可以参考Wiki和个人需求做修改

SIGNUPS_ALLOWED :是否允许注册新用户

INVITATIONS_ALLOWED :是否允许邀请用户,注:在admin界面中可以邀请用户

ADMIN_TOKEN :访问admin界面需要的token

LOG_FILE :输出日志文件的路径

SHOW_PASSWORD_HINT :密码提示

volumes :将本地磁盘的映射到Docker中, ports 也同理

在你配置好所有文件之后便可以启动Vaultwarden

bash

1

sudo docker compose -f vaultwarden.yml up -d

但是这还没完,因为在配置文件中我们将本地的2081映射到了Docker的80端口,这里我使用 Cloudflare + Nginx 反向代理到2081端口,以及完成HTTPS的证书配置

Nginx配置 HTTPS证书的配置这里不再多说,已经有很多方案可以解决这一个问题,这里列出反代部分的Nginx配置文件:

nginx

1 2 3 4 5 6 7 8 9 10 11

location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_redirect off ; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Forwarded-Proto $scheme ; if ( $host = '' ){ proxy_pass http://127.0.0.1:2081; } }

安全配置 由于 Vaultwarden 在登录界面没有设置验证码等手段来防止bot进行密码爆破,官方提供了 fail2ban 来解决这一问题。加上我们使用了 Cloudflare ,这使得本地封锁IP失效,需要使用 fail2ban 自带的 action 来实现和 Cloudflare 的联动。这里有 一篇文章 可以用作参考。

Fail2ban action设置 默认的的action文件存储在 /etc/fail2ban/action.d 里,其中就包含了官方对于CF支持的action,我们打开 cloudflare.conf ,做如下修改

plaintext

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

[Init]

If you like to use this action with mailing whois lines, you could use the composite action

action_cf_mwl predefined in jail.conf, just define in your jail:

action = %(action_cf_mwl)s

# Your CF account e-mail

cfemail =

# Your CF API Key

cfapikey =

cftoken = YOURGLOBALAPIKEY

cfuser = YOURCLOUDFLAREMAIL

cftarget = ip

注意,这里用到的是GlobalAPIKEY,所以你需要自信考虑承担这个风险。

Fail2ban Filter设置 这部分的设置在Wiki中也有提及,可以去Wiki自行参考。

进入 /etc/fail2ban/filter.d 目录,新建 vaultwarden.local :

plaintext

1 2 3 4 5 6

[INCLUDES] before = common.conf

[Definition] failregex = ^.Username or password is incorrect. Try again. IP: . Username:.$ ignoreregex =

新建 vaultwarden-admin.local :

plaintext

1 2 3 4 5 6

[INCLUDES] before = common.conf

[Definition] failregex = ^.Invalid admin token. IP: .$ ignoreregex =

这两个配置文件分别为应用界面和admin界面。

Fail2ban Jail设置 进入 /etc/fail2ban/jail.d 目录,新建 vaultwarden-admin.local ,这里要注意的是 log 的位置以及刚才的 action

plaintext

1 2 3 4 5 6 7 8 9 10

[vaultwarden] enabled = true port = 80,443 filter = vaultwarden logpath = /etc/vaultwarden/vaultwarden.log maxretry = 3 action = cloudflare iptables-allports bantime = 30d findtime = 3h

新建 vaultwarden.local :

plaintext

1 2 3 4 5 6 7 8 9 10 11 12

/etc/fail2ban/jail.d/vaultwarden.local

[vaultwarden] enabled = true port = 80,443 filter = vaultwarden logpath = /etc/vaultwarden/vaultwarden.log maxretry = 3 action = cloudflare iptables-allports bantime = 30d findtime = 3h

注:这里 port 可能不是那么重要,因为在 Cloudflare 上是全Ban,但是我还是保留了。

启动 fail2ban

bash

1

sudo systemctl start fail2ban

到此为止,你就获得了一个自己掌握数据的密码管理软件,并且使用 Cloudflare 在武装保护它。至于说数据的备份和恢复,抽时间在写吧。

文章作者: Matt Shi 文章链接: https://mattshi.com/2023/03/05/2eaf74ae.html 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 龟's Blog !

Daily

上一篇 Cloudreve 搭建过程

下一篇 树莓派上安装wrangler踩坑

相关推荐

2023-10-09 Cloudreve 搭建过程

2024-11-21 群晖折腾记录

2018-12-21 我国8亿网民,5亿是傻逼,2亿是营销的傻逼。

2020-09-08 RFC-1180:一个TCP/IP教程(1991-译)

2020-09-03 再见了!WordPress

2024-09-17 博客再次搬迁

Matt Shi 没有天生的高手,也没有永远的菜鸡

文章 59 标签 14 分类 5 Follow Me

目录 100

  1. 关于云密码管理软件
  2. 安装过程 2.1. 安装Docker 2.2. 安装Vaultwarden 2.3. Nginx配置 2.4. 安全配置 2.4.1. Fail2ban action设置 2.4.2. Fail2ban Filter设置 2.4.3. Fail2ban Jail设置

最新文章

群晖折腾记录 2024-11-21

博客再次搬迁 2024-09-17

群晖建设指南 2024-02-10

Cloudreve 搭建过程 2023-10-09

Vaultwarden折腾指北 2023-03-05

©2018 - 2024 By Matt Shi 框架 Hexo | 主题 Butterfly Speedup by Cloudflare

✨ 网站已更新最新版本 👉 点击刷新

set 限制解除

相关文章