Eu tenho um sistema OpenVPN em funcionamento no Ubuntu 12.04 e gostaria de adicionar o Google Authenticator para segurança extra.
Esta é minha configuração atual do openvpn:
dev tun proto udp porta 1096 ca ubuserv04-ca.crt cert ubuserv04.crt chave ubuserv04.key dh dh1024.pem servidor 10.10.0.0 255.255.255.0 pressione "redirecionar-gateway def1" pressione "rota 192.168.0.0 255.255.255.0" pressione "dhcp-option DNS 8.8.8.8" pressione "dhcp-option DNS 8.8.4.4" flutuador log-append /var/log/openvpn-otp-1096-status.log
(Esta é apenas uma configuração de teste, eu sei que devo alterar certos aspectos, mas isso funciona por enquanto.)
No cliente eu tenho:
dev tun cliente proto udp remote my.server.fqdn 1096 resolver-repetir infinito ca ubuserv04-ca.crt cert user1.crt chave user1.key verbo 3
A configuração acima funciona bem: sem erros, rápido, estável.
Eu tentei várias instruções para obter o Google Authenticator em execução, mas sempre acabo solucionando problemas secundários nesses artigos. Não quero me autenticar no banco de dados de usuário / senha local do servidor, apenas no sistema que já possuo e no Google Authenticator.
Eu tenho o Google Authenticator em execução; Eu o instalei usando o apt-get install libpam-google-authenticator e o usei antes para autenticar sessões ssh. Isso funcionou bem, mas agora desativei isso porque é apenas um servidor de teste e esse teste específico foi concluído.
Por favor, seja específico. Eu sei que devo adicionar um plug-in à configuração ovpn do meu servidor e que devo adicionar algo ao /etc/pam.d/openvpn, mas o que exatamente?
Qualquer ajuda seria muito apreciada!
/informação extra
Segui este artigo: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu Em vez de compilar a partir da fonte, instalei o Google Authenticator com o apt -get instale o libpam-google-authenticator. Também li, mas não usei neste caso, estes artigos: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ e http : //zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . E eu li o PAM, como sugerido;)
Agora, aqui estão alguns desenvolvimentos interessantes.
/etc/pam.d/openvpn tem isso:
conta [sucesso = 2 new_authtok_reqd = feito padrão = ignorar] pam_unix.so conta [sucesso = 1 new_authtok_reqd = feito padrão = ignorar] pam_winbind.so requisito da conta pam_deny.so conta necessária pam_permit.so autenticação necessária pam_google_authenticator.so
Conforme o howto, copiei o original de /etc/pam.d/common-account e adicionei a última linha. Agora, se eu comentar a última linha, a conexão OpenVPN será bem-sucedida. Se a última linha não for comentada, no entanto, /var/log/auth.log registra isso:
O PAM não pode dlopen (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: símbolo indefinido: pam_get_item PAM adicionando módulo defeituoso: pam_google_authenticator.so
e /var/log/openvpn-otp-1096.log registra isso:
PLUGIN_CALL: a função do plug-in PLUGIN_AUTH_USER_PASS_VERIFY falhou com o status 1: /usr/lib/openvpn/openvpn-auth-pam.so Erro de autenticação TLS: falha na verificação de nome de usuário / senha de autenticação para pares e-usando o contexto SSL / TLS AUTH-PAM: BACKGROUND: o usuário 'martin' falhou ao autenticar: o módulo é desconhecido
O problema parece estar entre o PAM e o Google Authenticator.
O Google lista problemas com outros plugins, mas não consigo encontrar informações sobre o Google Authenticator especificamente.
libpam-google-authenticator
é para autenticar usando o Google Authenticator no PAM. Isso não é útil no OpenVPN, pois você está usando certificados lá. Eu sugiro que você leia sobre o que é o PAM - você entenderá que ele não tem nada a ver com o OpenVPN no seu caso.