Google-authenticator with openvpn - AUTH: mensagem de controle recebida: AUTH_FAILED

1

Estou tentando configurar o MFA com o Google authenticator para minha configuração do OpenVPN no Ubuntu 16.04. Agora o OpenVPN funciona bem até eu incluir o Google Authenticator no mix.

Meu arquivo server.conf é o seguinte:

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

Meu arquivo client.conf é o seguinte:

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

Além disso, em /etc/pam.d eu clonei contas comuns para criar um arquivo openvpn com as seguintes linhas:

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

Agora criei os perfis de usuário necessários para cada cliente que se conecta ao servidor VPN, digamos client1, client2 e client3 no Ubuntu. Agora, considere que o client1 está tentando se conectar ao servidor VPN. Eu estou logado como client1 no sistema do lado do cliente e tente se conectar ao servidor VPN.

Eu recebo o seguinte,

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

Depois desse ponto, recebo

[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

Agora eu não sabia por que estava recebendo o erro AUTH com falha. Eu tinha visto muitas maneiras diferentes em que a combinação de nome de usuário / senha poderia ser inserida durante o processo de conexão com o servidor 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

Nunca fui solicitado com um aviso separado do Google Authenticator solicitando a OTP separadamente. Então eu tentei o método 1 e tentei o método 2 esperando por um prompt do autenticador do Google que nunca apareceu.

Pergunta 1: qual é a maneira correta de usar as credenciais de login do Google Authenticator. Estou faltando alguma coisa aqui, o que pode ser o motivo de eu não ser solicitado pelo OTP separadamente?

Outra coisa que observei é que

sudo systemctl status openvpn@server

fornece resultados diferentes para os dois métodos de login acima.

Eu recebi essas mensagens de status enquanto tentava uma combinação diferente de combinações de senha + 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

Pergunta 2: Alguém pode me explicar o que essas mensagens de status significam em termos de minhas entradas de login?

Pergunta 3: Como posso colocar o MFA em funcionamento?

FYI Eu usei o libpam-google-authenticator. Eu não segui o método que garantia usar o makefile e adicionar parâmetros de configuração para o pam.

Obrigado!

    
por Arjun Balakrishnan 22.08.2017 / 18:17

3 respostas

0

Verifique se o diretório /home/user é pelo menos +x para que as coisas possam ler o arquivo .google_authenticator no diretório inicial.

    
por 22.08.2017 / 18:53
0

Além disso, tente adicionar isso em /etc/pam.d/openvpn

auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass
    
por 22.08.2017 / 19:57
0
O arquivo

.google_authenticator deve ter 0600 perm, mas sua casa deve ser 0711 (a menos que você defina grupos corretamente, em seguida, 0710). Tive os mesmos problemas ontem mesmo. Se você tiver o SELinux mage, também não está no caminho.

    
por 31.01.2018 / 08:49