Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)

La necesidad de proporcionar acceso remoto a un entorno corporativo surge cada vez con más frecuencia, sin importar si son sus usuarios o socios los que necesitan acceso a un servidor particular de su organización.

Para estos fines, la mayoría de las empresas utilizan la tecnología VPN, que ha demostrado ser una forma segura y protegida de proporcionar acceso a los recursos locales de la organización.

Mi empresa no fue la excepción y nosotros, como muchos otros, utilizamos esta tecnología. Y, como muchos otros, utilizamos Cisco ASA 55xx como puerta de enlace de acceso remoto.

A medida que aumenta el número de usuarios remotos, es necesario simplificar el procedimiento de emisión de credenciales. Pero al mismo tiempo, esto debe hacerse sin comprometer la seguridad.

Para nosotros, encontramos una solución al utilizar la autenticación de dos factores para conectarnos a través de Cisco SSL VPN, utilizando contraseñas de un solo uso. Y esta publicación le dirá cómo organizar una solución de este tipo en un tiempo mínimo y sin costos para el software necesario (siempre que ya tenga Cisco ASA en su infraestructura).

El mercado está repleto de soluciones en caja para generar contraseñas de un solo uso, al tiempo que ofrece muchas opciones para obtenerlas, ya sea enviando la contraseña por SMS o utilizando tokens, tanto de hardware como de software (por ejemplo, en un teléfono móvil). Pero el deseo de ahorrar dinero y el deseo de ahorrar dinero para mi empleador, en la crisis actual, me obligaron a encontrar una forma gratuita de implementar un servicio para generar contraseñas de un solo uso. Que, si bien es gratuito, no es muy inferior a las soluciones comerciales (aquí conviene hacer una reserva, señalando que este producto también tiene una versión comercial, pero acordamos que nuestros costos, en dinero, serán cero).

Entonces, necesitaremos:

- Una imagen de Linux con un conjunto de herramientas incorporado: multiOTP, FreeRADIUS y nginx, para acceder al servidor a través de la web (http://download.multiotp.net/ - Usé una imagen ya preparada para VMware)
— Servidor de Directorio Activo
— El propio Cisco ASA (para mayor comodidad, uso ASDM)
— Cualquier token de software que admita el mecanismo TOTP (yo, por ejemplo, uso Google Authenticator, pero el mismo FreeOTP servirá)

No entraré en detalles de cómo se desarrolla la imagen. Como resultado, recibirá Debian Linux con multiOTP y FreeRADIUS ya instalados, configurados para trabajar juntos y una interfaz web para la administración de OTP.

Paso 1. Iniciamos el sistema y lo configuramos para su red
De forma predeterminada, el sistema viene con credenciales de root. Creo que todos adivinaron que sería una buena idea cambiar la contraseña del usuario root después del primer inicio de sesión. También debe cambiar la configuración de red (de forma predeterminada es '192.168.1.44' con la puerta de enlace '192.168.1.1'). Luego puede reiniciar el sistema.

Creemos un usuario en Active Directory OTP, con contraseña MiSuperContraseña.

Paso 2. Configurar la conexión e importar usuarios de Active Directory
Para hacer esto, necesitamos acceso a la consola y directamente al archivo. multiotp.php, mediante el cual configuraremos los ajustes de conexión a Active Directory.

ir al directorio /usr/local/bin/multiotp/ y ejecute los siguientes comandos a su vez:

./multiotp.php -config default-request-prefix-pin=0

Determina si se requiere un pin adicional (permanente) al ingresar un pin único (0 o 1)

./multiotp.php -config default-request-ldap-pwd=0

Determina si se requiere una contraseña de dominio al ingresar un PIN de un solo uso (0 o 1)

./multiotp.php -config ldap-server-type=1

Se indica el tipo de servidor LDAP (0 = servidor LDAP normal, en nuestro caso 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Especifica el formato en el que se presentará el nombre de usuario (este valor mostrará solo el nombre, sin el dominio)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Lo mismo, solo para un grupo.

./multiotp.php -config ldap-group-attribute="memberOf"

Especifica un método para determinar si un usuario pertenece a un grupo.

./multiotp.php -config ldap-ssl=1

¿Debo utilizar una conexión segura al servidor LDAP (¡por supuesto que sí!)

./multiotp.php -config ldap-port=636

Puerto para conectarse al servidor LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

La dirección de su servidor de Active Directory

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Indicamos por dónde empezar a buscar usuarios en el dominio.

./multiotp.php -config ldap-bind-dn="[email protected]"

Especifique un usuario que tenga derechos de búsqueda en Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Especifique la contraseña de usuario para conectarse a Active Directory

./multiotp.php -config ldap-network-timeout=10

Configurar el tiempo de espera para conectarse a Active Directory

./multiotp.php -config ldap-time-limit=30

Establecemos un límite de tiempo para la operación de importación de usuarios.

./multiotp.php -config ldap-activated=1

Activar la configuración de conexión de Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Importamos usuarios desde Active Directory

Paso 3. Genera un código QR para el token
Todo aquí es extremadamente simple. Abra la interfaz web del servidor OTP en el navegador, inicie sesión (¡no olvide cambiar la contraseña predeterminada del administrador!) y haga clic en el botón "Imprimir":

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
El resultado de esta acción será una página que contiene dos códigos QR. Ignoramos audazmente el primero de ellos (a pesar de la atractiva inscripción Google Authenticator / Authenticator / 2 Steps Authenticator), y nuevamente escaneamos audazmente el segundo código en un token de software en el teléfono:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
(sí, estropeé deliberadamente el código QR para hacerlo ilegible).

Luego de completar estas acciones, se comenzará a generar una contraseña de seis dígitos en tu aplicación cada treinta segundos.

Sin duda, puedes comprobarlo en la misma interfaz:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
Ingresando su nombre de usuario y contraseña de un solo uso desde la aplicación en su teléfono. ¿Recibiste una respuesta positiva? Entonces seguimos adelante.

Paso 4. Configuración adicional y prueba del funcionamiento de FreeRADIUS
Como mencioné anteriormente, multiOTP ya está configurado para funcionar con FreeRADIUS, solo queda ejecutar pruebas y agregar información sobre nuestra puerta de enlace VPN al archivo de configuración de FreeRADIUS.

Volvemos a la consola del servidor, al directorio /usr/local/bin/multiotp/, ingresar:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Incluyendo un registro más detallado.

En el archivo de configuración de clientes FreeRADIUS (/etc/freeradius/clinets.conf) comenta todas las líneas relacionadas con localhost y agregue dos entradas:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- para prueba

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

– para nuestra puerta de enlace VPN.

Reinicie FreeRADIUS e intente iniciar sesión:

radtest username 100110 localhost 1812 testing321

donde nombre de usuario = nombre de usuario, 100110 = contraseña que nos proporciona la aplicación en el teléfono, localhost = dirección del servidor RADIUS, 1812 — Puerto del servidor RADIUS, testing321 — Contraseña del cliente del servidor RADIUS (que especificamos en la configuración).

El resultado de este comando será aproximadamente el siguiente:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Ahora debemos asegurarnos de que el usuario esté autenticado correctamente. Para hacer esto, miraremos el registro del propio multiotp:

tail /var/log/multiotp/multiotp.log

Y si la última entrada es:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Entonces todo salió bien y podemos completar.

Paso 5: configurar Cisco ASA
Aceptemos que ya tenemos un grupo configurado y políticas para el acceso a través de SLL VPN, configurado en conjunto con Active Directory, y necesitamos agregar autenticación de dos factores para este perfil.

1. Agregue un nuevo grupo de servidores AAA:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
2. Agregue nuestro servidor multiOTP al grupo:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
3. editamos perfil de conexión, configurando el grupo de servidores de Active Directory como el servidor de autenticación principal:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
4. lengüeta Avanzado -> Autenticación Seleccionamos también el grupo de servidores de Active Directory:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
5. lengüeta Avanzado -> Secundario autenticación, seleccione el grupo de servidores creado en el que está registrado el servidor multiOTP. Tenga en cuenta que el nombre de usuario de la sesión se hereda del grupo de servidores AAA principal:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
Aplicar la configuración y

Paso 6, también conocido como el último
Comprobemos si la autenticación de dos factores funciona para SLL VPN:

Vaya a 2FA (autenticación de dos factores para ASA SSL VPN)
¡Voilá! Al conectarse a través del cliente VPN Cisco AnyConnect, también se le solicitará una segunda contraseña de un solo uso.

Espero que este artículo ayude a alguien y que le dé a alguien algo en que pensar sobre cómo utilizarlo. libre Servidor OTP, para otras tareas. Comparte en los comentarios si lo deseas.

Fuente: habr.com

Añadir un comentario