Как использовать Google Authenticator с сервером OpenVPN в Ubuntu 12.04

У меня есть работающая система OpenVPN в Ubuntu 12.04, и я хотел бы добавить Google Authenticator для дополнительной безопасности.

Это моя текущая конфигурация openvpn:

dev tun
proto udp
port 1096
ca ubuserv04-ca.crt
cert ubuserv04.crt
key ubuserv04.key
dh dh1024.pem
server 10.10.0.0 255.255.255.0
push "redirect-gateway def1"
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
float
log-append /var/log/openvpn-otp-1096-status.log

(Это всего лишь тестовая настройка, я знаю, что я должен изменить некоторые ее аспекты, но пока это работает.)

Вкл. у меня есть клиент:

dev tun
client
proto udp
remote my.server.fqdn 1096
resolv-retry infinite
ca ubuserv04-ca.crt
cert user1.crt
key user1.key
verb 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 Вместо компиляции из исходного кода я установил Google Authenticator с помощью apt-get install 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 имеет следующее:

account [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so 
account [success=1 new_authtok_reqd=done default=ignore]    pam_winbind.so 
account requisite           pam_deny.so
account required            pam_permit.so
auth required pam_google_authenticator.so

Согласно инструкции, я скопировал оригинал из /etc/pam.d/common-account и добавил последнюю строку. Теперь, если я прокомментирую последнюю строку, соединение OpenVPN будет успешным. Если последняя строка не закомментирована, то /var/log/auth.log записывает это:

PAM unable to dlopen(pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: undefined symbol: pam_get_item
PAM adding faulty module: pam_google_authenticator.so

и /var/log/openvpn-otp-1096.log записывает это:

[ 114]

Кажется, проблема между PAM и Google Authenticator.

Google перечисляет проблемы с другими плагинами, но я не могу найти информацию, касающуюся Google Authenticator, в частности.

8
задан 29 May 2013 в 14:43

2 ответа

Если вы просто хотите OTP-аутентификацию для OpenVPN, есть собственный плагин OTP OpenVPN. Он совместим с секретными ключами Google Authenticator. Все секреты хранятся в одном текстовом файле, и нет необходимости настраивать PAM или создавать пользовательские каталоги.

Проверьте это: https://github.com/evgeny-gridasov/openvpn-otp

0
ответ дан 29 May 2013 в 14:43

Хорошо, Google мой друг.

Я сделал это:

# apt-get purge libpam-google-authenticator
# download https://code.google.com/p/google-authenticator/downloads/list
# apt-get install libpam-dev

Добавьте это в Makefile, сразу после лицензии:

LDFLAGS="-lpam"

Затем

# make
# make install
# service openvpn restart

Также убедитесь, что / home / username / .google_authenticator не имеет никаких прав, кроме прав на чтение для пользователя, который будет его использовать.

Теперь мне нужно ввести мое имя пользователя, то есть локальное имя пользователя на сервере (мою учетную запись оболочки), в качестве моего имени пользователя OpenVPN и 6-значный код Google Authenticator в качестве пароля.

Теперь это работает.

Спасибо всем за потраченное время:)

(Как я могу пометить этот пост как решенный? Я просто редактирую заголовок темы?)

0
ответ дан 29 May 2013 в 14:43

Другие вопросы по тегам:

Похожие вопросы: