我一直在我的华硕 N66U 路由器上使用 Shibby 的 Tomato 版本(64k NVRAM 版本)来运行 OpenVPN 服务器。
我很好奇是否可以设置这个 OpenVPN 服务器来要求同时提供证书和在允许用户访问之前,必须输入用户名/密码。
我注意到在填写证书详细信息时有一个“质询密码”条目,但每个人都说将其留空“否则”;我不知道为什么,也找不到解释。此外,我在 Google 上搜索过这个问题,并注意到人们谈论 OpenVPN 的 PAM 模块,以便通过用户名/密码进行身份验证,但出现了是一个非此即彼的选择;换句话说,我可以通过用户名/密码强制进行身份验证或者证书。我想要两者。
这可能吗?如果可以,怎么做?
答案1
您正在寻找的 OpenVPN 功能将允许服务器根据以下信息对客户端进行身份验证两个都他们的证书和凭据是auth-user-pass-verify
。此功能允许服务器将远程用户提供的用户名/密码传递给执行身份验证的脚本。此时,您可以根据您想要的任何内容验证凭据——PAM、RADIUS、LDAP、烟雾信号等。
我对“Tomato”固件一无所知,所以我甚至不会尝试在这里一步一步地指导你。我做了一些快速搜索,我怀疑你可以使用 OpenVPN“自定义配置”选项来包含参考auth-user-pass-verify
。你需要一个脚本来执行身份验证。
进行一些搜索,我想你会找到“番茄”特定的参考资料。
答案2
auth-user-pass-verify 是正确的做法。此外,您可以强制 auth-user 用户名必须是经过认证的 CN,您还可以强制 openvpn 每次只对每个证书建立一个连接。
这样,“模仿者”就必须拥有与证书 CN 相比正确的用户和正确的密码,并且必须在真正的所有者不在的时候登录。
此外,您可能考虑 IDS,根据您选择的 IDS,您甚至可以缩小范围,例如允许的外部 IP 范围、登录时间等等。
任何暴露的证书都应立即撤销。签名服务器应脱离网络 - 通过 USB 传输密钥 - 然后您便可获得真正严密的安全访问权限。
不,你不应该为证书设置密码。
- 容易被暴力破解。
- 您不能锁定用户(证书颁发机构仅限离线)。
- 人们经常丢失密码,迫使你每次都撤销并重新创建证书——如果存在大量证书,你有时可能会忘记撤销,这是一个很大的风险。
但如果您确实想要,您可以同时使用 auth-user 和 cert password,这样就不会出现后备或其他情况。
首先 openvpn 将使用证书密码解密私钥以建立连接 - 然后 auth-user 启动 serversidly - 如果凭证错误,您就出局了。
然而,如果攻击者获得了常规凭证,您就麻烦了,而且很有可能他也获得了证书密码。
因此,我在这里看不到真正的好处,只有很多的缺点和更安全的错误感觉。
答案3
我遵循了本教程(在我的华硕 N66U 上使用 TomatoUSB Shibby 1.28): http://www.dd-wrt.com/wiki/index.php/OpenVPN 这可能会对你有很大帮助。