OPNsense 管理登录启用 TOTP:先测试、再切换与保留恢复入口
给防火墙管理界面加上动态码,关键不只是打开一个认证选项。完整过程应当是:建立认证服务,为用户绑定共享密钥,用测试器确认“动态码+密码”有效,再把管理界面切到这个服务。顺序颠倒,很容易在配置尚未验证时把自己锁在门外。
本文依据 OPNsense 官方 Configure 2FA TOTP & Google Authenticator 编译,并合并系统双因素认证说明。原页没有可确认的个人署名,维护方为 OPNsense / Deciso B.V.。核对日期为 2026 年 10 月 8 日;当前官方文档构建标识为 e90042d(不是 OPNsense 软件版本)。下文仅经静态审查,未操作真实防火墙。

先确定保护的是哪一条登录路径
TOTP(基于时间的一次性密码)使用共享密钥和当前时间计算动态码,OPNsense 支持 RFC 6238。知道账号密码是一项条件,持有能计算动态码的令牌是另一项条件。认证器可以是 Google Authenticator,也可以是与 TOTP 兼容的其他应用或硬件令牌;已有令牌的种子需要采用 Base32 格式。
操作教程开头使用了“所有服务”的宽泛表述,但官方系统说明明确列出例外:控制台和 SSH 访问不由这里的 TOTP 机制覆盖。支持范围包括网页管理界面、Captive Portal、OpenVPN、IPsec 和缓存代理等,但各服务仍需使用相应的认证配置。本文只改变网页管理登录,不能据此宣称 SSH 或所有 VPN 连接已经启用双因素认证。
编者补充:开始前确认有可用的独立管理恢复入口,例如经过验证的本地控制台或带外管理方式;保留当前已登录的管理会话,并保存当前配置备份。备份文件是否含有敏感配置,应按设备实际导出内容处理。恢复入口本身也需要访问控制,不能为了回退而把管理口开放到不可信网络。
第一步:添加本地 TOTP 认证服务
进入 System → Access → Servers,使用添加服务器的按钮。按钮所在位置可能随界面版本变化,以当前页面标签为准。按官方示例填写:
| 字段 | 示例值 | 说明 |
|---|---|---|
| Descriptive name | TOTP Server | 可自行选择有辨识度的名称。 |
| Type | Local+Timebased One Time Password | 本地账号与基于时间的一次性密码组合认证。 |
| Token length | 6 | 对应教程中的 Google Authenticator 六位动态码。 |
| Time window | 留空 | 官方 Google Authenticator 示例未填写自定义值。 |
| Grace period | 留空 | 同样保留示例默认设置。 |
“留空”是这份教程的配置方式,并不表示所有 TOTP 硬件和组织策略都应使用相同参数。若已有令牌使用不同位数或时间参数,需要先核对其规格,再通过测试器验证。不要为了让错误配置“能够登录”而随意扩大接受时间范围。
第二步:准备认证器
官方教程使用 Google Authenticator:在设备对应的应用商店中找到并安装应用。原页也列出 FreeOTP,并以 SailOTP 展示扫码过程。本文保留这些名称作为原教程使用的兼容应用示例,不把历史平台清单当成 2026 年的兼容性保证。
认证器和防火墙都依赖时间。编者补充:应先检查两端的时间与时区显示是否正常,以及各自的时间同步状态。遇到动态码持续失败时,先核对时钟、种子、令牌参数和拼接顺序,再调查其他原因。
第三步:新建或编辑用户并生成种子
进入 System → Access → Users。新建用户时填写用户名、密码和其他必要字段;已有用户则打开编辑页面。在 OTP seed 下选择 Generate new (160bit) secret,然后保存。
如果需要使用已有 TOTP 令牌,官方说明允许直接把其种子填入对应字段,前提是种子已经转换为 Base32。不要把某一时刻的六位动态码填入种子字段:动态码会变,种子才是计算这些动态码的长期秘密。
编者补充:认证与授权是两回事。给新用户配置 TOTP 并不会自动赋予管理权限;应按实际职责配置必要的组和权限。为管理账号启用前,需要确认该账号具备完成后续验证和回退所需的权限。
第四步:在认证器中绑定这个种子
保存后重新打开刚才的用户。页面会显示二维码。打开兼容认证器,添加新令牌,扫描二维码;也可以手工输入种子。
官方以 SailOTP 举例:下拉打开应用菜单,选择添加令牌;点击扫码,扫描 OPNsense 显示的二维码;在识别结果页面核对密钥与 OTP 参数是否符合配置,确认后点击 Add。回到应用首页后,便能看到按时间变化的动态码,教程示例每 30 秒更新一次。
种子和二维码必须按长期认证秘密保护。拿到它们的人可以计算动态码。不要把真实二维码放入工单、公开截图、文章配图或聊天记录;若将种子备份用于恢复,应使用受控的安全存储。本文配图只说明步骤,不包含任何可用种子、二维码或真实凭据。
第五步:先用测试器验证
进入 System → Access → Tester,选择刚才建立的认证服务,填写目标用户名。在密码字段里同时输入动态码和账号密码。官方默认顺序是动态码在前,密码在后,中间不插入分隔符:
OTP_CODEPASSWORD
这里的 OTP_CODE 和 PASSWORD 都是格式占位符。实际输入应替换成认证器当时显示的动态码和该用户的真实密码。认证服务也支持相反的拼接顺序;如果配置为密码在前,就应使用:
PASSWORDOTP_CODE
点击测试。只有在出现认证成功的结果后,才继续切换网页认证。如果失败,核对选择的服务器、用户名、账号密码、种子、动态码是否已经临近过期,以及服务所配置的前后顺序。不要把测试失败理解成应该立即退出并重新登录;这恰恰是保持现有会话、修正配置的时机。

第六步:切换网页管理认证
系统默认通过 Local Database 验证用户。进入 System → Settings → Administration 的 Authentication 区域,将网页管理使用的认证服务改成刚才通过测试的 TOTP 服务。官方教程的目标是让本地用户不能绕过双因素认证直接进入网页管理界面;若同时保留可绕过 TOTP 的网页认证路径,就没有达到这一目标。

设置提示:截图中的 Disable integrated authentication 复选框未勾选;官方教程正文没有把这个选项状态列为单独配置步骤。不要仅凭截图把此状态当成适用于所有版本的建议。切换后要按当前版本确认目标登录路径确实经过 TOTP,并通过独立会话测试。
编者补充:保留当前管理会话,在另一个独立浏览器会话中进行新的登录验证,确认目标用户能按新方式登录并拥有正确权限。验证成功以后,再结束旧会话。如果部署允许保留多种认证服务,应按当前版本的实际行为核对回退和旁路,不要仅凭列表中已经出现 TOTP 服务就判定配置完成。
第七步:日常登录与恢复准备
日常登录时,打开认证器,读取当前动态码,按照已配置的顺序与密码拼接,填入同一个密码字段。教程中的动态码每 30 秒变化;等待下一组新码再输入,通常比在临近过期时匆忙提交更容易排查问题。
官方七步教程没有展开设备丢失后的具体恢复命令。编者补充:应在切换前记录经过验证的恢复入口、配置备份位置和管理责任人。设备丢失或时间异常时,通过受控的独立入口恢复认证配置;本文不提供未经版本验证的控制台改密或配置编辑命令。控制台与 SSH 不在本 TOTP 覆盖范围内,既是恢复设计要考虑的条件,也是必须另外加固的入口。
版本与核验说明
本文读取的是 2026 年 10 月 8 日可访问的滚动文档,法律页的页眉构建标识为 e90042d;这不是已实测的软件版本或教程发布日期。系统说明中的“从 16.1.14 起支持”是历史起点,不是建议安装的版本。旧页面有关手机平台及按钮位置的描述可能过时,应以实际使用版本核对。本文没有修改认证配置、生成密钥或进行成功登录测试。
OPNsense 文档页的版权归属及两条款 BSD 文档许可见官方法律声明;为方便保留许可条件,本文也在下方附上完整文档许可文本,并随出版包附带文本副本。本文为经授权的中文译编;源文截图按单图核验后复用,不把“部分图片为 CC0”误称为所有图片均为 CC0。保留原作者与官方来源,不代表 OPNsense / Deciso 官方背书。原创流程图由未完纪绘制;OPNsense 商标归其权利人所有。
OPNsense 文档许可原文
以下为官方法律声明中“Documentation Copyright”一节的完整两条款 BSD 文档许可。该许可仅说明 OPNsense 文档条款;并不取代图片或商标各自的权利声明。
Deciso B.V. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPNSENSE DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.











暂无评论内容