Verifique se o diretório /home/user
é pelo menos +x
para que as coisas possam ler o arquivo .google_authenticator no diretório inicial.
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!
Verifique se o diretório /home/user
é pelo menos +x
para que as coisas possam ler o arquivo .google_authenticator no diretório inicial.
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
.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.