使用
最后更新于
Bitwarden 的很多日常验证场景,比如新账户邮件地址的验证、邀请用户、管理门户的使用等,严重依赖 SMTP 功能。部署好 Bitwarden 后,第一步就应该配置 SMTP。
根据您的电子邮件服务提供商关于 SMTP 的说明,修改环境配置文件 ./bwdata/env/global.override.env
中的如下变量的值:
说明:
将上面的电子邮件地址替换为您自己的腾讯企业邮箱地址
globalSettings__mail__smtp__host
使用 smtp.exmail.qq.com
无效的话,尝试更换为 hwsmtp.exmail.qq.com
按顺序运行以下命令:
等待完成。
修改环境配置文件 ./bwdata/env/global.override.env
中变量 adminSettings__admins
的值为可以访问管理门户的邮件地址(多个地址使用英文逗号分隔),以启用系统管理员门户。例如:
这些管理员电子邮件地址在您的 Bitwarden 安装中不需要是已注册的帐户。
如果您不想启用系统管理门户,将 adminSettings__admins
值保留为默认的空白值即可。
要正常使用管理员门户,需要先配置好 SMTP。
删除比较简单。先停止 Bitwarden,然后删除 bwdata
文件夹即可。
默认情况下,Bitwarden 日志文件的名称为当前日期.txt
,需要在设置 Fail2ban 之前配置 Bitwarden 的环境变量开启滚动日志,以使日志文件名称更改为 log.txt
。
编辑环境配置文件 ./bwdata/env/global.override.env
,最下方添加一行环境变量:
重启 Bitwarden 使更改生效:
将 Fail2ban 加入开机启动:
启动 Fail2ban:
对于 Bitwarden,我们直接使用 Fail2ban 自带的 /etc/fail2ban/filter.d/bitwarden.conf
文件,不需要做任何修改。
创建文件:
复制并粘帖如下内容:
先打开文件监控:
然后尝试用错误的登录信息登录网页密码库,Fail2Ban 如果生效的话,将在 fail2ban.log
文件监控窗口显示相关的警告信息,类似于: INFO [bitwarden] Found 110.238.14.224 - 2021-08-03 20:15:08
,当一定时间内达到设置的失败次数时:NOTICE [bitwarden] Ban 110.238.14.224
,如下图:
同时查看系统的当前 iptables,在最下面会显示 f2b-bitwarden 封禁的 IP:
如果您的 IP 被 ban,浏览器刷新时将无法再次打开网页密码库。
Fail2ban 常用命令:
sudo systemctl start fail2ban
#启动 Fail2ban
sudo systemctl stop fail2ban
#停止 Fail2ban
sudo systemctl restart fail2ban
#重启 Fail2ban
sudo fail2ban-client ping
#检查 Fail2ban 是否正常运行(正常将显示 pong
)
参数解释:
failregex = ^.*Invalid admin token\. IP: <ADDR>.*$
#查找日志记录中错误记录正则表达式
ignoreregex =
#忽略日志记录中错误记录正则表达式
filter = bitwarden
#对应的筛选器名称
action = iptables[name=bitwarden, port=443, protocol=tcp]
#动作参数
logpath = /root/bwdata/logs/identity/Identity/log.txt
#日志文件的路径
maxretry = 3
#IP 被 ban 前允许失败的次数
bantime = 43200
#IP 被 ban 的时长(秒),-1
表示永 ban
findtime = 3600
#此时长(秒)内达到 maxretry
次就 ban IP
ignoreip = xxx.xxx.xxx.xxxx
#不受限制的 IP
参考,或(推荐)。
更多详细信息,请参考。
设置 后,可以在您设置的 n 次错误登录后自动阻止登录的 IP 地址,防止攻击者暴力破解您的密码库登录,以增强您的 Bitwarden 的安全性。
为了使 Fail2ban 对 IP 拦截更准确,如果您的域名使用 解析,需要设置其代理状态为 DNS only
,而不要设置为 Proxied
。
下面的 jail 文件中 的 action =
语句根据 CentOS 7 使用的是自带的 防火墙,如果使用 iptables,写法应有所不同。
参考资料:
这里以我的 上的 CentOS 7 with Firewalld 服务器为例。
参看章节。