Como usar o Google Authenticator com o servidor OpenVPN no Ubuntu 12.04

7

Eu tenho um sistema OpenVPN funcional no Ubuntu 12.04 e gostaria de adicionar o Google Authenticator para segurança extra.

Esta é a minha configuração atual do openvpn:

dev tun
proto udp
port 1096
ca ubuserv04-ca.crt
cert ubuserv04.crt
key ubuserv04.key
dh dh1024.pem
server 10.10.0.0 255.255.255.0
push "redirect-gateway def1"
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
float
log-append /var/log/openvpn-otp-1096-status.log

(Esta é apenas uma configuração de teste, eu sei que devo mudar alguns aspectos, mas isso funciona por enquanto.)

No cliente, tenho:

dev tun
client
proto udp
remote my.server.fqdn 1096
resolv-retry infinite
ca ubuserv04-ca.crt
cert user1.crt
key user1.key
verb 3

A configuração acima funciona bem: sem erros, rápido, estável.

Já experimentei vários howtos para ativar o Google Authenticator, mas acabo sempre solucionando problemas secundários nesses artigos. Não quero autenticar o banco de dados de usuário / senha local do servidor, apenas o sistema que já possuo e o Google Authenticator.

Eu tenho o Google Authenticator em execução; Eu instalei-o usando o apt-get install libpam-google-authenticator e usei-o antes para autenticar sessões ssh. Isso funcionou bem, mas eu já desabilitei isso porque é apenas um servidor de teste e esse teste em particular foi concluído.

Por favor, seja específico. Eu sei que devo adicionar um plugin à configuração do 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

Eu segui este artigo: link Em vez de compilar a partir da fonte, instalei o Google Authenticator com o apt-get install libpam-google-authenticator. Eu também li, mas não usei neste caso, estes artigos: link e link . E eu li sobre o PAM, como sugerido;)

Agora, aqui estão alguns desenvolvimentos interessantes.

/etc/pam.d/openvpn tem isso:

account [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so 
account [success=1 new_authtok_reqd=done default=ignore]    pam_winbind.so 
account requisite           pam_deny.so
account required            pam_permit.so
auth required pam_google_authenticator.so

De acordo com 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 estiver comentado, o /var/log/auth.log registra isso:

PAM unable to dlopen(pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: undefined symbol: pam_get_item
PAM adding faulty module: pam_google_authenticator.so

e /var/log/openvpn-otp-1096.log registram isso:

PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib/openvpn/openvpn-auth-pam.so
TLS Auth Error: Auth Username/Password verification failed for peer
e-using SSL/TLS context
AUTH-PAM: BACKGROUND: user 'martin' failed to authenticate: Module is unknown

O problema parece estar entre o PAM e o Google Authenticator.

O Google lista problemas com outros plug-ins, mas não consigo encontrar informações sobre o Google Authenticator especificamente.

    
por Forkbeard 29.05.2013 / 09:07

2 respostas

2

Ok, o Google é meu amigo.

Eu fiz isso:

# apt-get purge libpam-google-authenticator
# download https://code.google.com/p/google-authenticator/downloads/list
# apt-get install libpam-dev

Adicione isto ao Makefile, logo após a licença:

LDFLAGS="-lpam"

Então

# make
# make install
# service openvpn restart

Além disso, certifique-se de que /home/username/.google_authenticator não tenha direitos, exceto os direitos de leitura do usuário que vai usá-lo.

Agora preciso inserir meu nome de usuário como meu nome de usuário local no servidor (minha conta shell) como meu nome de usuário do OpenVPN e o código de 6 dígitos do Google Authenticator como senha.

Agora funciona.

Obrigado a todos pelo seu tempo:)

(Como posso marcar esta postagem como resolvida? Acabei de editar o título do tópico?)

    
por Forkbeard 29.05.2013 / 13:28
1

Se você quiser apenas a autenticação OTP para o OpenVPN, existe um plugin OTP OpenVPN nativo disponível. É compatível com as chaves secretas do Google Authenticator. Todos os segredos são armazenados em um único arquivo de texto e não há necessidade de configurar o PAM ou criar diretórios de usuários.

Confira: link

    
por egridasov 03.04.2014 / 03:40