No. Por supuesto que no puedes hacer eso. Esto derrotaría el propósito mismo de 2FA. Su servidor debe tener una forma de verificar las credenciales del usuario, y esta información no debe enviarse a través de la red (es decir, no puede usar únicamente el archivo client.ovpn).
Si bien no necesariamente tiene que crear usuarios de Unix, debe permitir que sus usuarios instalen sus códigos de verificación en el servidor. Puede usar sftp con usuarios virtuales utilizando su certificado ya emitido, https con autorización del lado del cliente (mutuo), CIFS (samba), o bien viejo ftp con extensión TLS o cualquier otra forma que le permita al servidor conocer los códigos de verificación creados por los usuarios . El canal de comunicación debe ser seguro (cifrado || local).
Naturalmente, si sus usuarios cargan sus propios archivos, no puede usar las credenciales basadas en archivos agregados que usa openvpn-otp. Afortunadamente, tenemos otra opción (y mucho mejor) mediante el uso de linux excelente módulo de seguridad pam.
En primer lugar, debe recopilar los archivos de usuario creados por google-authenticator en un directorio mediante uno de los métodos mencionados anteriormente. En nuestro caso será / etc / google-auth.
Usted debe cumplir sola identificación de usuario para todos los archivos aquí, porque no tiene usuarios reales. Deja que sea abierto . Los permisos deben ser 0400 (-r --------). A Pam no le gustan las credenciales legibles del mundo / grupo (ciertamente). Puede aplicar esto fácilmente con samba, apache, ftp o, en el peor de los casos, utilizando una pestaña cron (no recomendado).
Para fines de prueba, solo haga esto:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
Después de eso, le pide a openvpn que se autentique contra libpam, que tiene su propio módulo de autenticación de google. Agregue esto a su archivo de servidor openvpn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Esto dice que usaremos el método de autenticación de pam con la identificación de pam auth openvpn .
Ahora, cree la configuración de pam para openvpn. Edite /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Aquí decimos que sin una autenticación exitosa de Google fallamos de inmediato (requisito), estamos usando un archivo secreto especial en lugar del predeterminado $ HOME / .google_authenticator (secret =) y accedemos a los archivos como usuario openvpn ya que no hay un usuario real asociado con nuestros usuarios En la siguiente línea, solo decimos que permitimos que todos se conecten después de una autenticación exitosa. Por supuesto, debe implementar su propia política de permisos aquí. Puede controlar los usuarios permitidos por archivo, mysql db o ldap con los respectivos módulos pam.
Agregue esto a su archivo de cliente openvpn
auth-user-pass
auth-nocache
reneg-sec 0
Usamos auth-user-pass para permitir que el cliente openvpn solicite nombre de usuario y contraseña. No nos gusta el almacenamiento en caché ("contraseña" está cambiando) y la renegociación periódica es mala para nosotros por la misma razón.
Después de eso, debería poder conectarse sin openvpn-otp. Tenga en cuenta que este es un método mucho más flexible, ya que puede implementar reglas muy complejas en los archivos de control de pam si lo desea. Puede habilitar / deshabilitar usuarios basados en su directorio mysql o ldap sin tocar esos certificados, por ejemplo.