Hack's

Openvpn com google authenticator

suporte de autenticação de dois fatores utilizado pelo Google, pode ser usado também no serviço de OpenVPN do Linux. Dentro das configurações do servidor, pode-se usar a biblioteca do PAM, onde este fará a interação com a biblioteca do Google para autenticar o usuário, sem a necessitando de acesso a internet para concluir o acesso do usuário ao recurso.

Instalação do módulo PAM de autenticação do Google, para o correto funcionamento do modulo, o analista deve instalar o pacote “pam-devel”
# yum install pam-devel

Realizar o download da libpam do Google no link http://code.google.com/p/google-authenticator/

# cd /home/ec2-user/google-authenticator-master/libpam
# ./bootstrap.sh && ./configure && make && make install

A biblioteca do Google deve estar instalada na pasta:
/usr/local/lib/security/pam_google_authenticator.so

Para o Selinux não apresentar alertas deveremos executar o comando;
#restorecon -RFv /usr/local/lib/security/

Deve-se criar um arquivo de configuração no PAM, onde este deverá ser usado no processo de autenticação pelo aplicativo.
# cat /etc/pam.d/openvpn
auth   requisite    /usr/local/lib/security/pam_google_authenticator.so   forward_pass
auth   required pam_unix.so use_first_pass

script de autenticação do openvpn com o PAM, é comum estar disponível na documentação do servidor, sendo assim basta copiar para pasta do serviço;
# cp /usr/share/doc/openvpn-2.3.8/sample/sample-scripts/auth-pam.pl/etc/openvpn/ auth2-pam.pl
# chmod 755 /etc/openvpn/auth2-pam.pl

Para o funcionamento do script de autenticação do PAM, instale o modulo do perl
# yum install perl-Authen-PAM

Dentro do script deve ser alterado o campo serviço, onde tem login (arquivo de login configurado no PAM) para o OPENVPN (criado anteriormente).
# vim /etc/openvpn/auth-pam.pl
… … …
# Identify service type to PAM
$service = “openvpn”;
… … …

No servidor adicione a linha seguinte nas configurações do serviço.
# vim /etc/openvpn/openvpn.conf
… … …
auth-user-pass-verify auth-pam.pl via-file
script-security 2

Para continuar o processo de configuração, deve ser instalado no dispositivo o App da Google no dispositivo que vai ser utilizado pelo usuário: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2

A configuração do usuário para autenticação usando a ferramenta do Google, necessita logar no shell linux com o usuário e executar:
$ google-authenticator
No terminal deve aparecer um QR Code para configuração do aplicativo do Google

qr(1)

Neste momento a configuração deve ser realizada no dispositivo, adicionando uma conta nova e utilizando o QR Code para realizar o sincronismo dos dados.
Responda os questionamentos usando a letra “Y”, logo após deve concluir com a informação de que foi criado um arquivo no /home do usuário, um arquivo:
“/home/$user/.google_authenticator”

Este arquivo contém códigos de emergência para login sem usar o App da Google no celular. Devido a isso deve-se melhorar a segurança deste diretório.
Para o Selinux não apresentar alertas deveremos executar o comando:
semanage fcontext -a -t openvpn_etc_rw_t “/home/lauro/.google_authenticator”

Teste de autenticação
Para o teste dos módulos do PAM existe uma ferramenta necessária para isto, o PAMTESTER, para instalar basta:
# yum install pamtester

Para testar a autenticação do modulo do PAM (login), modulo mais básico do PAM
# pamtester login lauro authenticate
Password: 123456
pamtester: successfully authenticated

Depois de criar o arquivo no PAM com o modulo de autenticação do Google, poderemos testa-lo.
# vim /etc/pam.d/openvpn
auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass
# pamtester openvpn lauro authenticate
Password & verification code: 123456 + [6 digitos da senha temporaria]
pamtester: successfully authenticated

acabou 🙂 !!!

Standard