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

9

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

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

Dev Tun
прото удп
порт 1096
ca ubuserv04-ca.crt
cert ubuserv04.crt
ключ ubuserv04.key
dh dh1024.pem
сервер 10.10.0.0 255.255.255.0
нажать "redirect-gateway def1"
нажать «маршрут 192.168.0.0 255.255.255.0»
нажмите "dhcp-option DNS 8.8.8.8"
нажмите "dhcp-option DNS 8.8.4.4"
поплавок
log-append /var/log/openvpn-otp-1096-status.log

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

На клиенте у меня есть:

Dev Tun
клиент
прото удп
удаленный 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 Вместо компиляции из источника я установил Google Authenticator с apt -установите 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 = сделано по умолчанию = игнорировать] pam_unix.so 
account [success = 1 new_authtok_reqd = сделано по умолчанию = игнорировать] pam_winbind.so 
реквизиты учетной записи pam_deny.so
требуется учетная запись pam_permit.so
требуется авторизация pam_google_authenticator.so

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

PAM не может получить ответ (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: ФОН: пользователь 'martin' не смог аутентифицироваться: модуль неизвестен

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

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

Вилобородый
источник
«Я попробовал несколько способов запуска Google Authenticator». Не могли бы вы дать ссылку на некоторые из них? То, что вы пробовали, довольно расплывчато, и было бы грустно, если бы другие пользователи предложили подходы, которые вы уже пробовали. Кстати, libpam-google-authenticatorдля аутентификации с помощью Google Authenticator в PAM. Это бесполезно в OpenVPN, так как вы используете там сертификаты. Я предлагаю вам прочитать о том, что такое PAM - вы поймете, что это не имеет ничего общего с OpenVPN в вашем случае.
gertvdijk
@ "В OpenVPN это бесполезно, так как вы используете там сертификаты." Это нормально. Вы можете использовать сертификаты и одноразовый пароль от Google Authenticator через PAM как второй фактор для аутентификации в OpenVPN.
Черт, Терминал
Добавление дополнительной информации к исходному вопросу. Не уверен, что я делаю это правильно ...
Forkbeard
@gertvdijk: Я понимаю, что это избыточно, но я хотел бы использовать оба сертификата и одноразовый пароль. Мне кажется безопаснее использовать каждый из этих методов индивидуально.
Форкбород
Хм, похоже, это ошибка в Google Authenticator. Сборка с LDFLAGS = "- lpam" должна помочь, но я не уверен, как это сделать, пример с Howtoforge (ссылка в оригинальном вопросе) не работает, URL возвращает 404.
Forkbeard

Ответы:

2

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

Я сделал это:

# apt-get purge libpam-google-authenticator
# скачать https://code.google.com/p/google-authenticator/downloads/list
# apt-get install libpam-dev

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

LDFLAGS = "- LpAm"

затем

# делать
# сделать установку
# сервис openvpn restart

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

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

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

Спасибо всем за ваше время :)

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

Вилобородый
источник
2

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

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

egridasov
источник
Спасибо за ваш ответ, эгридасов. Поскольку у меня есть рабочая установка, я не собираюсь ее пробовать, но могу попробовать другую систему. 0 бит бита reneg-sec, который я считаю особенно полезным, я ломал голову над тем, как заставить соединение не прерываться через 3600 секунд
Forkbeard