У нас есть корпоративный VPN-сервер под управлением OpenVPN 2.3 на экземпляре AWS с Ubuntu 16.04 Xenial. Сервер был настроен с использованием Ansible playbook.
Я планирую перейти на Ubuntu 18.04 Bionic, который также обновляет OpenVPN до версии 2.4 (это желаемый побочный эффект, поскольку OpenVPN 2.3 устаревает). Итак, я создал тестовый экземпляр с Bionic и запустил для него сценарий Ansible. Конфигурация включает MFA через Google Authenticator, поэтому я также скопировал ~/.google_authenticator
файл со старого сервера и применен chmod 400
к нему.
Также было несколько проблем с совместимостью, которые мне пришлось решить до того, как новый сервер заработал:
openvpn-plugin-auth-pam.so
расположение файла изменилось, и теперь его полный путь не нужно указывать в конфиге сервера.CAP_AUDIT_WRITE
разрешение отсутствует в openvpn
systemd (подробнее см. Вот)Однако даже после этого аутентификация на новом сервере по-прежнему не работает. Вот что мой /etc/pam.d/openvpn
выглядит как:
auth required pam_google_authenticator.so
Если я заменю эту строку на auth required pam_permit.so
, Я успешно прошел аутентификацию (конечно, с любым паролем) и подключился, так что проблема определенно в том, где вмешивается MFA.
В то же время, pamtester
говорит мне, что pam_google_authenticator.so
работает отлично:
$ sudo pamtester openvpn vlad authenticate
Verification code:
pamtester: successfully authenticated
Вот что я вижу в системном журнале при попытке аутентификации на VPN-сервере:
Aug 16 15:17:39 ip-10-7-0-230 openvpn[10873]: AUTH-PAM: BACKGROUND: received command code: 0
Aug 16 15:17:39 ip-10-7-0-230 openvpn[10873]: AUTH-PAM: BACKGROUND: USER: vlad
Aug 16 15:17:39 ip-10-7-0-230 openvpn[10873]: AUTH-PAM: BACKGROUND: my_conv[0] query='login:' style=2
Aug 16 15:17:39 ip-10-7-0-230 openvpn[10873]: AUTH-PAM: BACKGROUND: user 'vlad' failed to authenticate: Authentication failure
В эта тема Я обнаружил, что строку в конфигурации сервера, которая вызывает модуль auth-pam, следует изменить с
plugin openvpn-plugin-auth-pam.so openvpn
кому:
plugin openvpn-plugin-auth-pam.so "openvpn login USERNAME password PASSWORD"
Однако ни один из них, похоже, не работает - я все еще получаю сообщение «Ошибка аутентификации».
Интересно, что тот же эксперимент с перестройкой сервера на базе Xenial сработал - так что проблема, похоже, либо в Ubuntu Bionic (какие-то дополнительные функции безопасности?), Либо в OpenVPN 2.4 (некоторые проблемы совместимости).
Есть ли у кого-нибудь идеи, как это исправить?
Обновить. Просто попробовал добавить nullok
к /etc/pam.d/openvpn
и удаление ~/.google_authenticator
файл. По-прежнему не работает, та же ошибка.