使用适用于 Windows 的 OpenVPN 客户端时,我只需使用用户名和密码即可登录 OpenVPN 服务器。我不知道如何在 Ubuntu 中实现同样的效果。似乎需要某种证书。
知道如何仅使用用户名和密码通过 OpenVPN 服务器进行身份验证吗?
答案1
您可以使用用户名/密码进行身份验证,无需服务器/CA 证书。但是,我强烈推荐配置它来验证它和您的 CA 证书以防止中间人攻击。
无需任何服务器验证,任何人都可以冒充您的 OpenVPN 服务器并接受您的用户名/密码。结果:
- 攻击者可以拦截所有流量。由于您没有验证所连接的服务器,因此任何人都可以在公共网络(或攻击者控制的私有网络)中声称自己是您的服务器。
- 攻击者知道您的用户名/密码组合。如果您在其他事情上也使用相同的密码,那就太糟糕了。
在网络管理器中,它无需 CA 证书即可正常工作,如下所示,但请不要这样使用它!如果您在 Windows 上不使用任何服务器/CA 证书,那么您很容易受到上述攻击。
答案2
我在这里找到了答案:http://openvpn.net/index.php/open-source/documentation/howto.html#auth
请记住,您仍然需要有服务器证书
使用用户名/密码验证作为客户端验证的唯一形式
默认情况下,使用 auth-user-pass-verify 或服务器上的用户名/密码检查插件将启用双重身份验证,要求客户端证书和用户名/密码身份验证都成功才能对客户端进行身份验证。
虽然从安全角度来看不建议这样做,但也可以禁用客户端证书,并强制仅进行用户名/密码验证。在服务器上:
client-cert-not-required 这样的配置通常还应该设置:
username-as-common-name 将告诉服务器使用用户名进行索引,因为它将使用通过客户端证书进行身份验证的客户端的通用名称。
请注意,client-cert-not-required 不会消除对服务器证书的需求,因此,连接到使用 client-cert-not-required 的服务器的客户端可以从客户端配置文件中删除 cert 和 key 指令,但不会删除 ca 指令,因为客户端需要验证服务器证书。