Назад | Перейти на главную страницу

Google-аутентификатор с openvpn - AUTH: получено контрольное сообщение: AUTH_FAILED

Я пытаюсь настроить MFA с аутентификатором Google для моей установки OpenVPN в Ubuntu 16.04. Теперь OpenVPN работает нормально, пока я не добавлю Google Authenticator.

Мой файл server.conf выглядит следующим образом:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
client-to-client
keepalive 10 120
tls-auth ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA256
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 3
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
reneg-sec 0

Мой client.conf выглядит следующим образом:

client
dev tun
proto udp
remote 10.1.0.2 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3
cipher AES-128-CBC
auth SHA256
key-direction 1
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
auth-user-pass
auth-nocache
reneg-sec 0

Кроме того, в /etc/pam.d я клонировал общие учетные записи, чтобы создать файл openvpn со следующими строками:

account requisite                       pam_deny.so
account required                        pam_permit.so
auth requisite pam_google_authenticator.so  secret=/home/${USER}/.google_authenticator

Теперь я создал необходимые профили пользователей для каждого клиента, подключающегося к серверу VPN, например client1, client2 и client3 в Ubuntu. Теперь представьте, что client1 пытается подключиться к серверу VPN. Я вошел в систему как client1 в системе на стороне клиента и пытаюсь подключиться к VPN-серверу.

Я получаю следующее,

Enter Auth Username: ******
Enter Auth Password: ************* ( Password for local user profile? + OTP)

После этого я получаю

[server] Peer Connection Initiated with [AF_INET]10.1.0.2:1194
SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
AUTH: Received control message: AUTH_FAILED
TCP/UDP: Closing socket
SIGTERM[soft,auth-failure] received, process exiting

Теперь я не был уверен, почему я получаю ошибку AUTH failed. Я видел много разных способов ввода комбинации имени пользователя и пароля в процессе подключения к серверу VPN.

    Method 1 - username ; password (local account password + OTP)
    Method 2 - username ; password (local account password) +
               separate prompt section which asks for Google authenticator OTP
    Method 3 - username ; OTP

Мне никогда не предлагалось отдельное приглашение Google Authenticator с просьбой ввести OTP отдельно. Итак, я попробовал метод 1 и попробовал метод 2, ожидая приглашения аутентификатора Google, которое так и не появилось.

Вопрос 1. Как правильно использовать учетные данные для входа в Google Authenticator. Мне что-то здесь не хватает, что может быть причиной того, что мне не предлагается отдельно ввести OTP?

Еще я заметил, что

sudo systemctl status openvpn@server

дает разные результаты для двух вышеуказанных методов входа.

Я получил эти статусные сообщения, когда пытался использовать разные комбинации паролей и одноразовых паролей.

openvpn(pam_google_authenticator)[15305]: Invalid verification code
openvpn(pam_google_authenticator)[15305]: Did not receive verification code from user
openvpn(pam_google_authenticator)[15305]: Failed to compute location of secret file

Вопрос 2: Может ли кто-нибудь объяснить мне, что означают эти статусные сообщения с точки зрения моих входных данных.

Вопрос 3: Как мне запустить MFA.

К вашему сведению, я использовал libpam-google-Authenticator. Я не следовал методу, который требовал использования make-файла и добавления параметров конфигурации для pam.

Спасибо!

Файл .google_authenticator должен иметь разрешение 0600, но ваш дом должен быть 0711 (если вы не правильно настроили группы, то 0710). Только вчера были те же проблемы. Если у вас есть SELinux mage, убедитесь, что это тоже не мешает.

Также попробуйте добавить это в /etc/pam.d/openvpn

auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass

Убедитесь, что /home/user каталог не менее +x чтобы все могли читать файл .google_authenticator в домашнем каталоге.