Autenticación de dos factores en OpenVPN con el bot de Telegram

El artículo describe la configuración de un servidor OpenVPN para habilitar la autenticación de dos factores con un bot de Telegram que enviará una solicitud de confirmación al conectarse.

OpenVPN es un conocido servidor VPN gratuito y de código abierto que se utiliza ampliamente para organizar el acceso seguro de los empleados a los recursos internos de la organización.

Como autenticación para conectarse a un servidor VPN, generalmente se utiliza una combinación de una clave y un nombre de usuario/contraseña. Al mismo tiempo, la contraseña almacenada en el cliente convierte todo el conjunto en un único factor que no proporciona el nivel adecuado de seguridad. Un atacante, al obtener acceso a la computadora cliente, también obtiene acceso al servidor VPN. Esto es especialmente cierto para las conexiones desde máquinas que ejecutan Windows.

El uso del segundo factor reduce el riesgo de acceso no autorizado en un 99% y no complica en absoluto el proceso de conexión para los usuarios.

Permítanme hacer una reserva de inmediato: para la implementación deberá conectar un servidor de autenticación de terceros multifactor.ru, en el que podrá utilizar una tarifa gratuita para sus necesidades.

¿Cómo funciona?

  1. OpenVPN utiliza el complemento openvpn-plugin-auth-pam para la autenticación
  2. El complemento verifica la contraseña del usuario en el servidor y solicita el segundo factor a través del protocolo RADIUS en el servicio Multifactor.
  3. Multifactor envía un mensaje al usuario a través del bot de Telegram confirmando el acceso
  4. El usuario confirma la solicitud de acceso en el chat de Telegram y se conecta a la VPN

Instalación de un servidor OpenVPN

Hay muchos artículos en Internet que describen el proceso de instalación y configuración de OpenVPN, por lo que no los duplicaremos. Si necesita ayuda, hay varios enlaces a tutoriales al final del artículo.

Configurando el multifactor

Ir Sistema de control multifactor, vaya a la sección "Recursos" y cree una nueva VPN.
Una vez creado, tendrás dos opciones disponibles: Identificador NAS и Secreto compartido, serán necesarios para la configuración posterior.

Autenticación de dos factores en OpenVPN con el bot de Telegram

En la sección "Grupos", vaya a la configuración del grupo "Todos los usuarios" y elimine la marca "Todos los recursos" para que solo los usuarios de un determinado grupo puedan conectarse al servidor VPN.

Cree un nuevo grupo "Usuarios de VPN", desactive todos los métodos de autenticación excepto Telegram e indique que los usuarios tienen acceso al recurso VPN creado.

Autenticación de dos factores en OpenVPN con el bot de Telegram

En la sección "Usuarios", cree usuarios que tendrán acceso a la VPN, agréguelos al grupo "Usuarios de VPN" y envíeles un enlace para configurar el segundo factor de autenticación. El inicio de sesión del usuario debe coincidir con el inicio de sesión en el servidor VPN.

Autenticación de dos factores en OpenVPN con el bot de Telegram

Configurar un servidor OpenVPN

Abre el archivo /etc/openvpn/servidor.conf y agregue un complemento para la autenticación usando el módulo PAM

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

El complemento se puede ubicar en el directorio. /usr/lib/openvpn/plugins/ o /usr/lib64/openvpn/plugins/ dependiendo de su sistema.

A continuación necesitas instalar el módulo pam_radius_auth.

$ sudo yum install pam_radius

Abra el archivo para editarlo /etc/pam_radius.conf y especifique la dirección del servidor RADIUS del Multifactor

radius.multifactor.ru   shared_secret   40

donde:

  • radio.multifactor.ru — dirección del servidor
  • share_secret: copia del parámetro de configuración de VPN correspondiente
  • 40 segundos: tiempo de espera para esperar una solicitud con un margen grande

Los servidores restantes deben eliminarse o comentarse (ponga un punto y coma al principio)

A continuación, cree un archivo para openvpn de tipo servicio.

$ sudo vi /etc/pam.d/openvpn

y escríbelo en

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

La primera línea conecta el módulo PAM pam_radius_auth con los parámetros:

  • skip_passwd: desactiva la transmisión de la contraseña del usuario al servidor RADIUS Multifactor (no necesita saberlo).
  • client_id: reemplace [NAS-Identifier] con el parámetro correspondiente de la configuración de recursos VPN.
    Todos los parámetros posibles se describen en documentación para el módulo.

La segunda y tercera líneas incluyen la verificación del sistema del inicio de sesión, la contraseña y los derechos de usuario en su servidor junto con un segundo factor de autenticación.

Reiniciar OpenVPN

$ sudo systemctl restart openvpn@server

Configuración del cliente

Incluir una solicitud de inicio de sesión de usuario y contraseña en el archivo de configuración del cliente.

auth-user-pass

Проверка

Inicie el cliente OpenVPN, conéctese al servidor, ingrese su nombre de usuario y contraseña. El bot de Telegram enviará una solicitud de acceso con dos botones

Autenticación de dos factores en OpenVPN con el bot de Telegram

Un botón permite el acceso, el segundo lo bloquea.

Ahora puede guardar de forma segura su contraseña en el cliente; el segundo factor protegerá de manera confiable su servidor OpenVPN contra el acceso no autorizado.

Si algo no funciona

Comprueba secuencialmente que no te has perdido nada:

  • Hay un usuario en el servidor con OpenVPN con una contraseña establecida
  • El servidor tiene acceso a través del puerto UDP 1812 a la dirección radio.multifactor.ru
  • Los parámetros NAS-Identifier y Shared Secret están especificados correctamente
  • Se creó un usuario con el mismo inicio de sesión en el sistema Multifactor y se le otorgó acceso al grupo de usuarios de VPN.
  • El usuario ha configurado el método de autenticación vía Telegram

Si no has configurado OpenVPN antes, lee articulo extendido.

Las instrucciones están hechas con ejemplos en CentOS 7.

Fuente: habr.com

Añadir un comentario