2FAuth--双因素身份验证器
1. 前言
这期我们来聊一聊二步验证。
双重认证Two-factor authentication,缩写为"2FA",又称为双重验证、双因子认证、双因素认证,也有叫两步验证2-Step Verification,是多重要素验证中的一个特例,使用两种不同的元素,基于时间随机生成一串验证码用于和服务器验证的技术,来确认用户的身份。
强烈建议每个人都用二步验证!二步验证可以大大降低网络钓鱼攻击的成功率,减少盗号风险,即使我们的密码泄露,黑客没有第二个验证因素,仍然无法访问我们的账户。虽然二步验证不能提供100%的安全保障,但与单一密码相比,它显著增强了账户的安全性。
市面上有非常多的免费的两步验证工具,如 Google Authenticator、Authy,安卓用户可选择Aegis。
下面介绍一下几个常用的工具:
- Google Authenticator:谷歌出品,支持Android与iOS客户端,支持云同步(不建议开启,有泄漏的风险)。
- Aegis:免费开源的二次验证(2FA)应用,可导入导出,加密,自定义图标,夜间主题,选中高亮,不支持云同步,安卓专用(强烈推荐)。
- Authy:适用于Android、iOS、Windows、Apple Watch、桌面程序等全平台,也支持账号登录,缺点是不支持导出。
- Microsoft Authenticator:本人目前在用、Aegis作为备份。
今天我们来介绍自建2FA,把2FA账户存储在我们自己的独立数据库中,轻松备份和恢复,解决手机丢失后无法访问2FA账户的问题。
2. 项目展示
展示一些2FAuth项目的主要界面:
3. 什么是 2FAuth?
2FAuth
是一种基于 Web
的自托管替代方案,可替代 Google Authenticator
等一次性密码 (OTP
) 生成器,专为移动设备和桌面设备设计。
近年来,双因素身份验证变得非常流行,2FA
现在是不可避免且至关重要的。往常我们一般使用移动端应用,如 Microsoft Authenticator
或 Authy
。
2FAuth
旨在通过干净、简洁的界面简化 2FA
的使用和管理,无论您使用什么设备。在没有智能手机的情况下在电脑前处理代码请求?没问题,只需在浏览器选项卡中打开 2FAuth
实例即可!
4. 相关地址
- 2fa GitHub仓库:https://github.com/Bubka/2FAuth
- 2fa 官方文档:https://docs.2fauth.app/
- 官方demo:https://demo.2fauth.app
5. 安装 2FAuth
5.1 群晖 Docker 安装
在群晖的 Docker 注册表中搜索 2fauth
,选择第一个 2fauth/2fauth
,版本选择 latest
。
卷配置
在 docker
文件夹中,创建一个新文件夹 2fauth
,并在其中建一个子文件夹 data
,记得给 data
目录新增 Everyone
的读写权限。
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/2fauth/data | /2fauth | 存放数据库、日志文件等 |
端口设置
本地端口只需不冲突即可,不确定的话可以用命令查看端口占用。
环境变量
建议改 APP_KEY
,这是数据库和会话的加密秘钥,使用 32
个字符的字符串。
5.2 命令行安装
如果熟悉命令行,可以用 docker cli
进行安装:
# 新建文件夹 2fauth 和 子目录
mkdir -p /volume1/docker/2fauth/data
# 进入 2fauth 目录
cd /volume1/docker/2fauth
# 修改目录所有者和权限
chown 1000:1000 data
chmod 700 data
# 运行容器
docker run -d \
--restart unless-stopped \
--name 2fauth \
-p 8040:8000 \
-v $(pwd)/data:/2fauth \
-e AUTHENTICATION_GUARD=web-guard \
2fauth/2fauth
5.3 docker-compose安装
使用 docker-compose
:
version: '3'
services:
2fauth:
image: 2fauth/2fauth
container_name: 2fauth
restart: unless-stopped
ports:
- 8040:8000
volumes:
- ./data:/2fauth
environment:
- AUTHENTICATION_GUARD=web-guard
执行以下命令启动:
# 一键启动
docker-compose up -d
6. 运行与使用
6.1 反向代理设置
因为需要用到 https
协议,建议使用 npm + tailscale
方案做反代设置,这样安全性更高。
6.2 桌面端网页
在浏览器中输入 http://你的域名
即可访问登录界面,第一次需要先注册,按照红框中的要求设置密码。
6.3 移动端网页
用移动端浏览器打开 http://你的域名
,允许摄像头使用即可开始使用。
7. 常见问题及注意点
7.1 关闭注册
可以在设置中关闭注册功能。
7.2 数据库加密
在 2FAuth
的设置 > 选项部分中勾选“保护敏感数据”启用加密功能。
警告
强烈建议在启用加密时备份.env
文件中定义的APP_KEY
值(或整个文件)。如果丢失此密钥,则无法生成一次性密码,且无法恢复。
8. 结尾
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区交流探讨。有能力的同学也欢迎积极加入到 项目 中贡献自己的力量!
参考资料
- GitHub 项目地址:Bubka/2FAuth
- 官方文档地址:2FAuth Docs