Google-аутентификатор с openvpn - AUTH: получено управляющее сообщение: AUTH_FAILED
Я пытаюсь настроить MFA с помощью Google authenticator для моей установки 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. Я видел много разных способов ввода комбинации имени пользователя и пароля в процессе подключения к 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
дает разные результаты для двух методов входа в систему выше.
Я получил эти сообщения о состоянии, пытаясь различные комбинации паролей + OTP.
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. Я не следовал методу, который оправдывался использованием makefile и добавлением параметров конфигурации для pam.
Спасибо!
3 ответа
Также попробуйте добавить это к /etc/pam.d/openvpn
auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass
Файл.google_authenticator должен иметь разрешение 0600, но ваш дом должен быть 0711 (если вы не настроили группы правильно, то 0710). Были такие же проблемы только вчера. Если у вас есть SELinux mage, то это тоже не мешает.
Убедитесь, что /home/user
каталог по крайней мере +x
так что все может прочитать файл.google_authenticator в домашнем каталоге.