前置校验:先排除假性不支持问题
先做3步排查,避免浪费时间做额外改造:
以上步骤都验证后确认系统无MFA能力,再选择以下对应方案落地。
方案1:网关层前置MFA(零改造成本,首选方案)
无需修改原有档案系统的任何代码和配置,在访问链路前加一层带MFA能力的网关即可,适合所有部署场景。
实操步骤:
- 在和档案系统同网段的服务器上安装Nginx Proxy Manager开源网关,执行以下命令:
```
安装docker和docker-compose环境
curl -fsSL https://get.docker.com | bash
systemctl enable --now docker
新建配置存储目录
mkdir -p /opt/npm && cd /opt/npm
生成启动配置文件
cat > docker-compose.yml << EOF
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
EOF
启动网关服务
docker-compose up -d
```
- 访问
http://网关服务器IP:81,用默认账号admin@example.com、密码changeme登录,第一时间修改管理员账号密码
- 新增代理主机:目标地址填写原有档案系统的内网IP+端口,勾选「Block Common Exploits」,绑定你单位档案系统的访问域名
- 进入「Access Lists」菜单新建访问规则,选择「Add Protection」→「Two Factor Authentication」,启用TOTP认证,按用户批量导入或让用户自行绑定微信/支付宝/Google Authenticator
- 最后一定要在档案系统的服务器上配置防火墙规则,关闭原系统的外网访问权限,只允许网关IP访问系统端口,避免用户绕开MFA直接登录
方案2:统一身份认证对接(适合多系统共存场景)

如果单位同时有OA、CRM、财务系统等多个业务系统,用该方案可实现一次MFA认证登录所有系统,无需每个系统单独配置。
实操步骤:
- 部署开源统一身份认证系统Authelia,执行以下命令:
```
mkdir -p /opt/authelia && cd /opt/authelia
cat > docker-compose.yml << EOF
version: '3.3'
services:
authelia:
image: authelia/authelia
volumes:
- ./config:/config
ports:
- 9091:9091
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
EOF
```
- 在config目录下新建
configuration.yml配置文件,直接复制以下内容修改对应参数即可:
```
theme: light
default_redirection_url: https://你的档案系统域名
totp:
issuer: 你的单位全称
period: 30
skew: 1
authentication_backend:
file:
path: /config/users_database.yml
access_control:
default_policy: two_factor
rules:
- domain: "你的档案系统域名"
policy: two_factor
session:
secret: 用openssl rand -hex 32命令生成的随机字符串
expiration: 1h
inactivity: 5m
domain: 你单位的根域名
storage:
encryption_key: 用openssl rand -hex 32生成的另一组随机字符串
local:
path: /config/db.sqlite3
```
- 生成用户配置文件users_database.yml,用户密码用
authelia hash-password 初始密码命令生成哈希值填入即可
- 将Authelia和方案1的Nginx Proxy Manager对接,后续所有业务系统的访问都先经过Authelia做MFA验证,实现单点登录
方案3:服务器层面登录限制(适合纯内网部署场景)
如果档案系统只在内网使用,不想修改访问链路,可通过VPN+防火墙规则实现MFA访问限制。
实操步骤:
- 在内网服务器上部署WireGuard VPN,执行一键安装脚本:
```
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh && ./wireguard-install.sh
```
按提示完成安装后,配置TOTP认证插件,要求所有用户连接VPN必须输入动态验证码
- 在档案系统的服务器上配置防火墙规则,只允许VPN的IP段访问系统端口:
```
先允许VPN端口访问,避免自己被拦截
ufw allow 51820/udp
关闭原系统端口的所有访问
ufw deny 档案系统端口/tcp
允许VPN网段访问系统端口
ufw allow in from 10.0.0.0/24 to any port 档案系统端口
ufw enable
```
- 注意配置防火墙前一定要确认VPN服务正常运行,管理员预留本地登录服务器的权限,避免配置错误导致无法访问系统
落地验证 Checklist
- ✅ 所有访问路径都已覆盖MFA,没有可绕开的入口
- ✅ 测试3个普通用户账号,都能正常完成MFA验证后登录系统
- ✅ 输错动态码时100%无法进入系统,验证失败5次自动锁定15分钟
- ✅ 管理员预留了应急绕过MFA的通道,避免MFA服务故障时无法登录
应急方案:如果MFA服务故障,直接临时关闭网关的MFA配置或者放开原系统的端口访问权限,等故障修复后再恢复配置即可。