使用
配置 SMTP
Gmail 示例
“为帮助确保您的帐号安全,从 2022 年 5 月 30 日起,Google 不再支持那些会要求您仅使用用户名和密码登录 Google 帐号的第三方应用或设备。”,参阅此处。
对于 Gmail SMTP,建议使用 Google 的应用专用密码。参阅使用应用专用密码登录。
Outlook 示例
使用 Outlook 始终无法配置成功,但我部署的官方 Bitwarden 使用 Outlook 配置 SMTP 完全正常。此故障可能和这个有关:# 851
更新 Vaultwarden
1、拉取最新版本的稳定版镜像
2、停止旧版本容器
3、移除旧版本容器
4、使用已挂载的数据创建新的容器
修改域名
为新域名添加相应的 DNS A 记录
按照准备步骤中的说明添加新的虚拟主机
按照准备步骤中的说明修改新主机的 Nginx 配置文件(位置:
/usr/local/nginx/conf/vhost/your-new-domain.com.conf
)重启 Nginx
修改 Vaultwarden 配置文件(位置:
/vaultwarden-data/config.json
),将"domain"
的值修改为新的域名重启 Vaultwarden(命令:
docker restart vaultwarden
)
自动备份数据
这里我们使用 dropbox_uploader.sh 脚本自动打包并备份整个 vaultwarden-data
文件夹到 Dropbox。
1、创建 Dropbox 应用
登录 Dropbox 后,打开 App Console 页面,点击 Create app 按钮创建一个 App
Choose an API → 勾选 Scoped access(以前可选 Dropbox Legacy API,目前已移除)
Choose the type of access you need → 选择 App folder
Name your app → 输入 App 名称(必须是不存在的名称,已存在会有提示已被占用),此名称会作为 Dropbox 上此 App 可读写的文件夹名称
创建成功后,进入应用
在 Setting 选项卡下的 OAuth 2 部分,Access token expiration 选择 No expiration,然后点击 Generated access token 下方的 Generate 按钮生成 access token,记录下此
access token
值(刷新页面后将不会再次显示)
2、上传并配置脚本
SSH 定位到 VPS 的 root 目录,下载 dropbox_uploader.sh 脚本文件并赋予可执行权限,然后运行脚本:
根据提示输入刚才的 Dropbox 应用的 access token
值,以配置 dropbox_uploader.sh。
[备注]:删除 .dropbox_uploader
文件后再次运行 ./dropbox_uploader.sh
命令可以重新配置 access token(或直接编辑 .dropbox_uploader
文件)。
3、创建自己的备份脚本
复制并粘帖如下内容:
赋予可执行权限:
输入 ./vaultwarden-data_backup.sh
手动执行脚本,以测试能否成功备份。
运行 ./vaultwarden-data_backup.sh
手动执行脚本时可能会出现 error,只要能成功备份,不用理会这些错误。
4、创建自动执行任务
日志转储
如果你想保留日志记录,又不希望日志记录文件变得越来越大,可以设置定期转储日志记录。
创建日志转储规则文件:
复制并粘帖如下内容:
这里设置为每天转储一次(如果日志记录比较少也可以设置为每周或每月),并保留 30 个转储的日志记录文件。
配置解释:
daily
:daily
指定转储周期为每天。也可以为weekly
/monthly
。默认为weekly
。rotate 30
:表示转储备份的数量。这里为 30 个。missingok
:在日志转储期间,任何错误将被忽略。copytruncate
:用于还在打开中的日志文件。把当前日志截断并备份,然后再清空。由于备份和清空之间有一个时间差,可能会丢失部分日志数据。noolddir
:转储后的日志文件和当前日志文件放在同一个目录下。dateext
:指定转储后的日志文件以当前日期格式结尾。如vaultwarden.log-20201020
。postrotate/endscript
:在转储之后需要执行的命令可以放入这个语句对中,这两个关键字必须单独成行。同样,prerotate/endscript
表示在转储之前需要执行的命令。
详细配置参阅 logrotate 日志管理工具。
定期清空日志
如果你不想保留日志记录,也可以设置定期将其清空。
创建脚本文件:
复制并粘帖如下内容:
赋予可执行权限:
创建自动执行任务:
设置 Fail2ban
设置 Fail2ban 后,可以在您设置的 n 次错误登录后自动阻止登录的 IP 地址,防止攻击者暴力破解您的密码库登录,以增强您的 Vaultwarden 的安全性。
如果您的域名使用 Cloudflare 解析,为了使 Fail2ban 对 IP 拦截更准确,需要设置其代理状态为 DNS only
(仅限 DNS),而不要设置为 Proxied
(已代理)。
下面的 jail 文件中 的 action =
语句根据 CentOS 7 使用的是 iptables 防火墙,如果使用 Firewalld,写法应有所不同。
这里以我的 Vultr 上的 CentOS 7 with iptables 防火墙为例。
安装 Fail2ban
将 Fail2ban 加入开机启动:
启动 Fail2ban:
为网页密码库配置 Fail2ban
创建 filter 文件
创建文件:
复制并粘帖如下内容:
创建 Jail 文件
创建文件:
复制并粘帖如下内容:
为管理页面配置 Fail2ban
创建 filter 文件
创建文件:
复制并粘帖如下内容:
创建 Jail 文件
创建文件:
复制并粘帖如下内容:
测试 Fail2ban
先打开文件监控:
然后尝试用错误的登录信息登录网页密码库或管理页面,Fail2ban 如果生效的话,将在 fail2ban.log 文件监控窗口显示相关的警告信息,类似于: INFO [vaultwarden] Found 172.68.142.89 - 2020-11-03 20:15:08
,当一定时间内达到设置的失败次数时:NOTICE [vaultwarden] Ban 172.68.142.89
,如下图:
同时查看系统的当前 iptables,在最下面会显示 f2b-vaultwarden 封禁的 IP:
如果您的 IP 被 ban,浏览器刷新时将无法再次打开网页密码库或管理页面。
解除被 ban 的 IP
Fail2ban 不起作用
Fail2ban 常用命令及参数解释
Fail2ban 常用命令:
sudo systemctl start fail2ban
# 启动 Fail2bansudo systemctl stop fail2ban
# 停止 Fail2bansudo systemctl restart fail2ban
# 重启 Fail2bansudo fail2ban-client ping
# 检查 Fail2ban 是否正常运行(正常将显示pong
)
参数解释:
failregex = ^.*Invalid admin token\. IP: <ADDR>.*$
# 查找日志记录中错误记录正则表达式ignoreregex =
# 忽略日志记录中错误记录正则表达式filter = vaultwarden
# 对应的筛选器名称action = iptables[name=vaultwarden, port=443, protocol=tcp]
# 动作参数logpath = /vaultwarden-data/log/vaultwarden.log
# 日志文件的路径maxretry = 10
# IP 被 ban 前允许失败的次数bantime = 43200
# IP 被 ban 的时长(秒),-1
表示永 banfindtime = 3600
# 此时长(秒)内达到 maxretry 次就 ban IPignoreip = xxx.xxx.xxx.xxxx
# 不受限制的 IP
参考链接
电子邮件模板和管理面板本地化
注意模板文件对应的 Vaultwarden 版本。不同版本的 Vaultwarden 的模板文件会有一定的差别(差别应该不大)。
电子邮件模板
将 Vaultwarden 存储库电子邮件模板文件(位置:
src/static/templates/email
)翻译成您需要的语言,注意确保文件里的{{variables}}
的完整保持文件结构,将翻译好的模板文件放置于您安装的 Vaultwarden 对应的文件夹下(这里为
/vaultwarden-data/templates/email
,其中vaultwarden-data
是部署的时候使用-v
参数指定的宿主机文件夹 )重启 Vaultwarden(命令:
docker restart vaultwarden
)
管理面板模板
将 Vaultwarden 存储库管理面板模板文件(位置:
src/static/templates/admin
)翻译成您需要的语言,注意确保文件里的{{variables}}
的完整保持文件结构,将翻译好的模板文件放置于您的安装的 Vaultwarden 对应的文件夹下(这里为
/vaultwarden-data/templates/admin
,其中vaultwarden-data
是部署的时候使用-v
参数指定的宿主机文件夹 )重启 Vaultwarden(命令:
docker restart vaultwarden
)
最后更新于