Bitwarden自建终极加固和最简单备份以及SMTP邮箱配置指南

Bitwarden自建终极加固和最简单备份以及SMTP邮箱配置指南

前言

如果你的bitwarden只托管了一些不重要的密码的话,可以看一下本站之前写的一篇博客(保姆级免Nginx反代配置带SSL证书Bitwarden服务端),基本也够安全的了,因为Bitwarden_RS/Vaultwarden(下文简称Bitwarden)底层采用的rocket tls最低支持版本是1.2,而不是1.0或1.1,具体看这里的官方文档

但是如果你的自建bitwarden托管了你的支付宝微信、银行卡、信用卡等全部身家,甚至几百个比特币的钱包的私钥,那前面提到的博客就不行了,我们必须再提高安全性,毕竟我们的服务暴露在了公网,一旦被不怀好意的人渗透了可就真的麻烦了。

终极加固实战

首先声明一下,一定一定一定要首先优先配置两步验证,这是最基础的安全措施,本文不再赘述~

另外本人遵循 "eat your own dog food"原则,本文全篇介绍的东西在本人自建的Bitwarden服务器上全部有应用到。

本人作为一名渣渣Linux运维小学生,着实才疏学浅,本文不能涵盖所有加固措施,遗漏的地方还望大家在评论区留言指出来,本人再补充进正文。

我们的加固涉及到了以下方面:

  • 禁止注册和邀请用户
  • 禁止显示密码提示
  • 基于Nginx实现禁止ip访问 (防止类似于shedon的邪恶搜索引擎搜索到,以及脚本小子扫描ip段)
  • 基于腾讯云控制台和Nginx讲解如何配置ECC算法的ssl证书,舍弃掉RSA算法的证书(ECC算法的破解难度要更高,比RSA算法要更上一个台阶),网上搜到的博客试了好几个都不行,我这里的一步到位
  • 让docker进程以非root用户运行,这里踩了一个坑,折腾了个把小时
  • 最后一步几乎将自建Bitwarden的安全性更上了一个台阶,那就是给后台的URL加上随机字符串,使得使用默认的后台地址无法访问
  • 最最后,由于我们的前端流量由Nginx承载,所以Nginx也要加固一下,下述共涉及 屏蔽Nginx的版本号减少攻击面、对Http请求方法进行限制、防止点击劫持、启用HSTS强制https访问、防止跨站攻击和摒弃不安全的ssl cipher且server端主动选择cipher共计6个方面。

基于某些考虑我们没有涉及的:

  • 配置fail2ban,自动封锁暴力破解者,这个有时候很容易在自己连续输入错几次密码后把自己给封了,即使你可以在手机上访问vps解封也比较繁琐,如果你按照本篇博客设置下来的话,配置fail2ban的意义也不是很大了。
  • docker的ssl挂载目录设置只读权限,因为我们采用了ECC算法的证书,而Bitwarden底层采用的rocket tls实现是不支持解析的,所以我们要移除掉相关设置,不用担心,本篇博客将会介绍如何用Nginx来实现解析ECC算法的证书
  • 舍弃掉你的主域名来作为服务入口,而是配置一个含有随机字符串的二级域名,这也是一个很不错的加固方式,本文也不再赘述

上述所有的加固措施在Bitwarden_rs/vaultwarden的官方wiki中都有提到,大神没必要再付费看我下面的描述了,不过如果你对上述加固措施不太熟悉的话,亦或者自己踩了很多坑搞不定的话,还是墙裂建议看看下面的描述的。

Tips:下述命令和Nginx指令比较零星,对技术不太熟悉的朋友很容易弄混淆,本人贴心的把docker的完整启动命令和关键指令含有注释的Nginx的完整配置分别贴了出来。

这一部分是付费阅读,请点击此处跳转到微信支付控制台付费后再进行阅读! 付费后请您在一天之内及时把URL中含有order_id的本博客页面另存为到本地或剪藏到你的笔记软件如Evernote中~ 注意!!! 不要在微信手机端打开本页面进行支付,因为支付完不会跳转,请在电脑上操作。注意!!!

最简单备份指南

其实就是新建一个git私有仓库,然后写一个每天打包并自动push到远程仓库的脚本,再配置成定时任务就行了,国内vps推荐使用的gitee,国外的可以用github,

注意!!! 仓库一定要建成私有的哦 注意!!!

脚本如下:

cd /data && tar czvf bitwarden_backup_$(date '+%Y%m%d_%H%M').tgz bw-data/ && mv bitwarden_backup_$(date '+%Y%m%d_%H%M').tgz bitwarden_backup/ && cd bitwarden_backup/ && git add . && git commit -m 'update' && git push -u origin master

上述脚本的前提是你的git控制台添加了你本机的公钥,这里不再赘述。

还有一些前提是:你的docker数据卷挂载在了根目录的/data下面,叫bw-data,以及在同级目录新建了一个叫bitwarden_backup的文件夹。

如果你满足了上述要求,就可以配置一个如下的定时任务了:

0 5 * * * bash /data/bitwarden_backup/backup.sh

效果如下:

为了减少对公共资源的浪费,建议改造一下上述脚本自动删除超过30天的备份。

SMTP邮箱配置指南

你可能好奇配置这个有啥用,当你需要更换你当前的邮箱账户的时候就知道了,配置了这个后只需要输入邮箱中的验证码就可以把账户分分钟换成任意邮箱了

这个其实很简单,我们以QQ邮箱为例,其实就是docker的启动命令中加入几个环境变量,如下:

-e SMTP_HOST='smtp.qq.com' -e SMTP_FROM='233333333@qq.com' -e SMTP_PORT=587 -e SMTP_SSL=false -e SMTP_USERNAME='233333333@qq.com' -e SMTP_PASSWORD='xxxxxxxxx'

由于这些环境变量的名字都比较语义化,我就不一一介绍都是啥意思了,完整的命令在上文付费阅读部分有提到。

6 评论 在 “Bitwarden自建终极加固和最简单备份以及SMTP邮箱配置指南

  1. 博主啊!我6月21日付费后(Bitwarden自建终极加固和最简单备份以及SMTP邮箱配置指南)以为保存带ID号的地址到收藏夹就行了,结果今天一看才知道错了,该怎么办才能再看到收费内容呢?

    付费订单号:4200001461202206217263156608

    微信:18636681685

     

    1. 老哥,刚看到你的留言,这就麻烦了,这种付费文章我在后台也只能看到文章源码,要想在前台看到我也必须要自己给自己付费才行😂,目前还没有开发出管理员免费看文章的功能,而后台编辑器里面的文章是没法分享给你的呢

      1. 应该不止要还原这一个吧,直接把data文件夹下面的所有文件都还原才行

        1. Bitwarden 備份完, 怎樣還原db.sqlite3  ?
          我用寶塔安裝Docker, 之後Bitwarden 根目錄沒Data.

          1. 我的意思是正常情况下会在/data/下面有bw的根目录,既然你知道bw的根目录在哪了那就直接备份一下就行了~

发表评论

电子邮件地址不会被公开。 必填项已用*标注

captcha