我想设置 pfSense 来使用 OpenVPN 桥接两个网络。
但由于非安全原因,而非出于安全原因,要求用户的密码后面附加一个 6 位数字的后缀(遵循 RFC 6238 哈希算法,即 HMAC_SHA1)。
然后,OpenVPN 客户端在登录 pfSense OpenVPN 服务器时必须发送修改后的密码:
- 用户名:
billg
- 密码:
Tr0ub4dor&3
602738
(IE[password]
[6-digit OTP]
)
问题在于,RFC 6238 哈希算法的输入之一是当前时间(以持续 30 秒的刻度为单位);您可以从您最喜欢的 RFC 6238 工具中获取该时间:
测试
如果你能够做到以下几点,你有时就能让它发挥作用:
所有这些都在 pfSense WebGUI 中 30 秒内完成。并且有效:
但是,如果 pfSense 客户端或 OpenVPN 服务器(也是 pfSense)断开连接,则 pfSense 站点到站点无法重新建立连接。
研究成果
pfSense 在充当 VPN 服务器时,使用本地 RADIUS 服务器,可以配置用户要求 2FA使用基于时间的一次性密码:
但是在 pfSense 中保存的 TOTP 秘密是这样的:
- A客户可以从外部连接到本地服务器
- 但并非如此客户可以从本地服务器连接到外部
我希望当地的 用户管理器到:
- 此外还可以配置用户的用户名/密码
- 以及他们的证书
- 以及证书的私钥
- 和 SSH 密钥
- 和 IPsec 预共享密钥
他们将能够为密码后缀生成器输入秘密。
但事实并非如此。
问题
如何让 pfSense 包含使用 RFC 6238 哈希算法生成的 6 位密码后缀?
笔记:显然我所描述的不是 2FA,因为没有第二个因素。