如何在Ubuntu 12.04上的OpenVPN服务器上使用Google Authenticator


9

我在Ubuntu 12.04上有一个可以正常使用的OpenVPN系统,并且我想添加Google Authenticator以获得额外的安全性。

这是我当前的openvpn配置:

开发屯
原始udp
1096端口
ca ubuserv04-ca.crt
证书ubuserv04.crt
键ubuserv04.key
dh dh1024.pem
服务器10.10.0.0 255.255.255.0
推送“重定向网关def1”
推送“路由192.168.0.0 255.255.255.0”
推送“ dhcp-option DNS 8.8.8.8”
推送“ dhcp-option DNS 8.8.4.4”
浮动
日志追加/var/log/openvpn-otp-1096-status.log

(这只是一个测试设置,我知道我应该更改它的某些方面,但是现在可以使用。)

在客户端上,我有:

开发屯
客户
原始udp
远程my.server.fqdn 1096
解析无限
ca ubuserv04-ca.crt
cert user1.crt
关键user1.key
动词3

上面的设置工作正常:没有错误,快速,稳定。

我已经尝试了几种方法来使Google Authenticator运行,但是每次我都会对这些文章中的附带问题进行故障排除。我不想使用服务器的本地用户/密码数据库进行身份验证,而只想使用已经存在的系统以及Google Authenticator进行身份验证。

我正在运行Google Authenticator;我使用apt-get install libpam-google-authenticator安装了它,并在验证ssh会话之前使用了它。效果很好,但是我现在禁用了它,因为它只是测试服务器,并且特定的测试已完成。

请具体说明。我知道我应该在服务器的ovpn配置中添加一个插件,并且应该在/etc/pam.d/openvpn中添加一些内容,但是究竟是什么呢?

任何帮助将不胜感激!

/额外信息

我关注了这篇文章:http : //www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu 而不是从源代码进行编译,我使用apt安装了Google Authenticator -获取安装libpam-google-authenticator。我还阅读了以下文章,但在本例中未使用:http : //www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/http ://zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/。我已经按照建议阅读了PAM;)

现在,这是一些有趣的发展。

/etc/pam.d/openvpn具有以下内容:

帐户[成功= 2 new_authtok_reqd =完成默认=忽略] pam_unix.so 
帐户[成功= 1 new_authtok_reqd =完成默认=忽略] pam_winbind.so 
帐户必填pam_deny.so
需要帐户pam_permit.so
需要验证pam_google_authenticator.so

按照howto,我从/etc/pam.d/common-account复制了原始文件并添加了最后一行。现在,如果我将最后一行注释掉,则OpenVPN连接成功。但是,如果最后一行未注释掉,则/var/log/auth.log记录以下内容:

PAM无法dlopen(pam_google_authenticator.so):/lib/security/pam_google_authenticator.so:未定义的符号:pam_get_item
PAM添加了错误的模块:pam_google_authenticator.so

和/var/log/openvpn-otp-1096.log记录以下内容:

PLUGIN_CALL:插件函数PLUGIN_AUTH_USER_PASS_VERIFY失败,状态为1:/usr/lib/openvpn/openvpn-auth-pam.so
TLS身份验证错误:对等方的身份验证用户名/密码验证失败
电子使用SSL / TLS上下文
AUTH-PAM:背景:用户“马丁”身份验证失败:模块未知

问题似乎出在PAM和Google Authenticator之间。

Google列出了其他插件的问题,但是我真的找不到关于Google Authenticator的信息。


“我已经尝试了几种方法来使Google Authenticator运行”。您能链接到其中一些吗?确切地说,您已经尝试了什么方法,如果其他用户想出您已经尝试过的方法,那将是很可悲的。顺便说一句,libpam-google-authenticator是用于在PAM中使用Google Authenticator进行身份验证。这在OpenVPN中没有用,因为您在此处使用证书。我建议您阅读什么是PAM-您将了解,它与您的情况与OpenVPN无关。
gertvdijk

@“这在OpenVPN中没有用,因为您正在那里使用证书。” 没关系。您可以通过PAM使用来自Google Authenticator的证书和一次性密码作为OpenVPN中进行身份验证的第二个因素。
该死的码头站

在原始问题中添加其他信息。不知道我是否在做正确的事……
Forkbeard

@gertvdijk:我明白您的意思,但我想同时使用证书和一次性密码。对我来说,分别使用这两种方法似乎更安全。
叉子

嗯,这似乎是Google Authenticator中的错误。使用LDFLAGS =“-lpam”进行构建应该会有所帮助,但我不确定该怎么做,Howtoforge上的示例(原始问题的链接)不起作用,URL返回
404。– Forkbeard

Answers:


2

好的,Google是我的朋友。

我这样做:

#apt-get清除libpam-google-authenticator
#下载https://code.google.com/p/google-authenticator/downloads/list
#apt-get安装libpam-dev

在许可证之后,将其添加到Makefile中:

LDFLAGS =“-lpam”

然后

#使
#进行安装
#服务openvpn重新启动

另外,请确保/home/username/.google_authenticator除了将要使用它的用户的读取权限外,没有其他任何权限。

现在,我需要输入我的用户名,即我在服务器上的本地用户名(我的Shell帐户)作为我的OpenVPN用户名,并输入Google Authenticator 6位代码作为密码。

现在可以了。

谢谢大家的时间:)

(如何将该帖子标记为已解决?我是否只编辑主题标题?)


2

如果您只想对OpenVPN进行OTP身份验证,则可以使用本机OTP OpenVPN插件。它与Google Authenticator私钥兼容。所有机密信息都存储在一个文本文件中,无需配置PAM或创建用户目录。

检查一下:https : //github.com/evgeny-gridasov/openvpn-otp


感谢您的答复,egridasov。由于我现在有一个可以正常工作的设置,因此我不会尝试它,但是我可以在其他系统上试用一下。reneg-sec 0位对我特别有用,我一直在绞尽脑汁,了解如何在3600秒后不断开连接
Forkbeard 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.