Tengo un sistema OpenVPN que funciona en Ubuntu 12.04 y me gustaría agregar Google Authenticator para mayor seguridad.
Esta es mi configuración actual de openvpn:
Dev Tun proto udp puerto 1096 ca ubuserv04-ca.crt cert ubuserv04.crt clave ubuserv04.key dh dh1024.pem servidor 10.10.0.0 255.255.255.0 presione "redirect-gateway def1" empujar "ruta 192.168.0.0 255.255.255.0" presione "dhcp-option DNS 8.8.8.8" presione "dhcp-option DNS 8.8.4.4" flotador log-append /var/log/openvpn-otp-1096-status.log
(Esto es solo una configuración de prueba, sé que debería cambiar ciertos aspectos, pero esto funciona por ahora).
En el cliente tengo:
Dev Tun cliente proto udp remoto my.server.fqdn 1096 resolv-retry infinite ca ubuserv04-ca.crt cert user1.crt clave usuario1.clave verbo 3
La configuración anterior funciona bien: sin errores, rápida, estable.
He intentado varios procedimientos para ejecutar Google Authenticator, pero siempre termino solucionando problemas secundarios en esos artículos. No quiero autenticarme en la base de datos de usuario / contraseña local del servidor, solo el sistema que ya tengo instalado más Google Authenticator.
Tengo Google Authenticator ejecutándose; Lo instalé usando apt-get install libpam-google-authenticator y lo he usado antes para autenticar sesiones ssh. Eso funcionó bien, pero ahora lo he deshabilitado porque es solo un servidor de prueba y esa prueba en particular se terminó.
Por favor sea especifico. Sé que debo agregar un complemento a la configuración ovpn de mi servidor y que debo agregar algo a /etc/pam.d/openvpn, pero ¿qué es exactamente?
Cualquier ayuda sería muy apreciada!
/Información extra
He seguido este artículo: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu En lugar de compilar desde la fuente, he instalado Google Authenticator con apt -Instale libpam-google-authenticator. También he leído, pero no utilizado en este caso, estos artículos: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ y http : //zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . Y he leído sobre PAM, como se sugiere;)
Ahora, aquí hay algunos desarrollos interesantes.
/etc/pam.d/openvpn tiene esto:
cuenta [éxito = 2 new_authtok_reqd = hecho predeterminado = ignorar] pam_unix.so cuenta [éxito = 1 new_authtok_reqd = hecho predeterminado = ignorar] pam_winbind.so cuenta requerida pam_deny.so cuenta requerida pam_permit.so se requiere autenticación pam_google_authenticator.so
Según el tutorial, copié el original de /etc/pam.d/common-account y agregué la última línea. Ahora, si comento la última línea, la conexión OpenVPN tiene éxito. Sin embargo, si la última línea no está comentada, /var/log/auth.log registra esto:
PAM no se puede abrir (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: símbolo indefinido: pam_get_item PAM que agrega un módulo defectuoso: pam_google_authenticator.so
y /var/log/openvpn-otp-1096.log registra esto:
PLUGIN_CALL: la función del complemento PLUGIN_AUTH_USER_PASS_VERIFY falló con el estado 1: /usr/lib/openvpn/openvpn-auth-pam.so Error de autenticación TLS: error de autenticación de nombre de usuario / contraseña para el igual Uso de contexto SSL / TLS AUTH-PAM: ANTECEDENTES: el usuario 'martin' no pudo autenticarse: el módulo es desconocido
El problema parece estar entre PAM y Google Authenticator.
Google enumera problemas con otros complementos, pero realmente no puedo encontrar información sobre Google Authenticator específicamente.
fuente
libpam-google-authenticator
es para autenticar usando Google Authenticator en PAM. Esto no sirve de nada en OpenVPN ya que está utilizando certificados allí. Le sugiero que lea sobre qué es PAM: comprenderá que no tiene nada que ver con OpenVPN en su caso.Respuestas:
Ok, Google es mi amigo.
Hice esto:
Agregue esto a Makefile, justo después de la licencia:
Entonces
Además, asegúrese de que /home/username/.google_authenticator no tenga ningún derecho, excepto derechos de lectura para el usuario que lo va a usar.
Ahora necesito ingresar mi nombre de usuario que es mi nombre de usuario local en el servidor (mi cuenta shell) como mi nombre de usuario OpenVPN y el código de 6 dígitos de Google Authenticator como contraseña.
Ahora funciona.
Gracias por su tiempo a todos :)
(¿Cómo puedo marcar esta publicación como resuelta? ¿Acabo de editar el título del tema?)
fuente
Si solo desea autenticación OTP para OpenVPN, hay un complemento OTP OpenVPN nativo disponible. Es compatible con las claves secretas de Google Authenticator. Todos los secretos se almacenan en un solo archivo de texto y no hay necesidad de configurar PAM o crear directorios de usuarios.
Compruébalo: https://github.com/evgeny-gridasov/openvpn-otp
fuente