Ir a 2FA (autenticación de dous factores para ASA SSL VPN)

A necesidade de proporcionar acceso remoto a un entorno corporativo está xurdindo cada vez con máis frecuencia, sen importar se son os seus usuarios ou socios os que precisan acceder a un servidor determinado da súa organización.

Para estes efectos, a maioría das empresas usan tecnoloxía VPN, que demostrou ser unha forma fiable de proporcionar acceso aos recursos locais da organización.

A miña empresa non foi unha excepción, e nós, como moitos outros, utilizamos esta tecnoloxía. E, como moitos outros, usamos Cisco ASA 55xx como pasarela de acceso remoto.

A medida que aumenta o número de usuarios remotos, hai que simplificar o procedemento de emisión de credenciais. Pero ao mesmo tempo, isto debe facerse sen comprometer a seguridade.

Para nós mesmos, atopamos unha solución ao usar a autenticación de dous factores para conectarse mediante Cisco SSL VPN, utilizando contrasinais únicos. E esta publicación indicarache como organizar tal solución cun tempo mínimo e cero custos para o software necesario (sempre que xa teñas Cisco ASA na túa infraestrutura).

O mercado está repleto de solucións en caixas para xerar contrasinais únicos, ao tempo que ofrece moitas opcións para obtelos, xa sexa enviando o contrasinal por SMS ou utilizando tokens, tanto de hardware como de software (por exemplo, nun teléfono móbil). Pero as ganas de aforrar cartos e as ganas de aforrar para o meu empresario, na actual crise, obrigáronme a buscar un xeito gratuíto de implantar un servizo de xeración de contrasinais únicos. O que, aínda que gratuíto, non é moi inferior ás solucións comerciais (aquí debemos facer unha reserva, sinalando que este produto tamén ten versión comercial, pero acordamos que os nosos custos, en diñeiro, serán cero).

Entón, necesitamos:

- Unha imaxe de Linux cun conxunto de ferramentas incorporado: multiOTP, FreeRADIUS e nginx, para acceder ao servidor a través da web (http://download.multiotp.net/ - Usei unha imaxe preparada para VMware)
— Servidor de Active Directory
— O propio Cisco ASA (por comodidade, uso ASDM)
— Calquera token de software que admita o mecanismo TOTP (eu, por exemplo, uso Google Authenticator, pero o mesmo FreeOTP fará)

Non entrarei en detalles de como se desenvolve a imaxe. Como resultado, recibirá Debian Linux con multiOTP e FreeRADIUS xa instalados, configurados para traballar xuntos e unha interface web para a administración de OTP.

Paso 1. Iniciamos o sistema e configuralo para a túa rede
Por defecto, o sistema inclúe as credenciais de root root. Creo que todos adiviñaron que sería unha boa idea cambiar o contrasinal do usuario root despois do primeiro inicio de sesión. Tamén cómpre cambiar a configuración da rede (por defecto é '192.168.1.44' coa pasarela '192.168.1.1'). Despois pode reiniciar o sistema.

Imos crear un usuario en Active Directory otp, con contrasinal MySuperPassword.

Paso 2. Configure a conexión e importe usuarios de Active Directory
Para iso, necesitamos acceder á consola, e directamente ao ficheiro multiotp.php, co cal configuraremos a configuración de conexión a Active Directory.

Ir ao directorio /usr/local/bin/multiotp/ e executa os seguintes comandos á súa vez:

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

Determina se é necesario un pin adicional (permanente) cando se introduce un pin único (0 ou 1)

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

Determina se é necesario un contrasinal de dominio ao introducir un PIN único (0 ou 1)

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

Indícase o tipo de servidor LDAP (0 = servidor LDAP normal, no noso caso 1 = Active Directory)

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

Especifica o formato no que presentar o nome de usuario (este valor mostrará só o nome, sen o dominio)

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

O mesmo, só para un grupo

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

Especifica un método para determinar se un usuario pertence a un grupo

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

Debo usar unha conexión segura co servidor LDAP (por suposto, si!)

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

Porto para conectarse ao servidor LDAP

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

O enderezo do servidor de Active Directory

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

Indicamos por onde comezar a buscar usuarios no dominio

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

Especifique un usuario que teña dereitos de busca en Active Directory

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

Especifique o contrasinal de usuario para conectarse a Active Directory

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

Configurando o tempo de espera para conectarse a Active Directory

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

Establecemos un límite de tempo para a operación de importación do usuario

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

Activando a configuración de conexión de Active Directory

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

Importamos usuarios de Active Directory

Paso 3. Xera un código QR para o token
Todo aquí é extremadamente sinxelo. Abra a interface web do servidor OTP no navegador, inicie sesión (non esqueza cambiar o contrasinal predeterminado para o administrador!) E faga clic no botón "Imprimir":

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
O resultado desta acción será unha páxina que contén dous códigos QR. Ignoramos con audacia o primeiro deles (a pesar da atractiva inscrición Google Authenticator / Authenticator / 2 Steps Authenticator), e de novo escaneamos con audacia o segundo código nun token de software no teléfono:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
(si, estraguei deliberadamente o código QR para facelo ilegible).

Despois de completar estas accións, comezará a xerarse un contrasinal de seis díxitos na súa aplicación cada trinta segundos.

Para estar seguro, podes comprobalo na mesma interface:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
Introducindo o seu nome de usuario e contrasinal único desde a aplicación no seu teléfono. Recibiches unha resposta positiva? Entón, imos adiante.

Paso 4. Configuración e proba adicional do funcionamento de FreeRADIUS
Como mencionei anteriormente, multiOTP xa está configurado para funcionar con FreeRADIUS, só queda realizar probas e engadir información sobre a nosa pasarela VPN ao ficheiro de configuración de FreeRADIUS.

Volvemos á consola do servidor, ao directorio /usr/local/bin/multiotp/, introduce:

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

Incluíndo un rexistro máis detallado.

No ficheiro de configuración de clientes de FreeRADIUS (/etc/freeradius/clinets.conf) comenta todas as liñas relacionadas con localhost e engade dúas entradas:

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

- para proba

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

- para a nosa pasarela VPN.

Reinicie FreeRADIUS e intente iniciar sesión:

radtest username 100110 localhost 1812 testing321

onde nome de usuario = nome de usuario, 100110 = contrasinal que nos proporcionou a aplicación no teléfono, localhost = enderezo do servidor RADIUS, 1812 - Porto do servidor RADIUS, proba321 — Contrasinal do cliente do servidor RADIUS (que especificamos na configuración).

O resultado deste comando sairá aproximadamente do seguinte xeito:

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

Agora temos que asegurarnos de que o usuario se autenticou correctamente. Para iso, miraremos o propio rexistro de multiotp:

tail /var/log/multiotp/multiotp.log

E se a última entrada hai:

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

Despois todo saíu ben e podemos completar

Paso 5: Configure Cisco ASA
Aceptemos que xa temos un grupo configurado e políticas de acceso mediante VPN SLL, configurados en conxunto con Active Directory, e necesitamos engadir unha autenticación de dous factores para este perfil.

1. Engade un novo grupo de servidores AAA:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
2. Engade o noso servidor multiOTP ao grupo:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
3. Editamos perfil de conexión, configurando o grupo de servidores de Active Directory como o servidor de autenticación principal:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
4. Na pestana Avanzado -> Autenticación Tamén seleccionamos o grupo de servidores de Active Directory:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
5. Na pestana Avanzado -> Secundario autenticación, seleccione o grupo de servidores creado no que está rexistrado o servidor multiOTP. Teña en conta que o nome de usuario da sesión herdase do grupo de servidores AAA principal:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
Aplicar a configuración e

Paso 6, tamén coñecido como o último
Comprobamos se a autenticación de dous factores funciona para SLL VPN:

Ir a 2FA (autenticación de dous factores para ASA SSL VPN)
Voila! Cando se conecte a través do cliente VPN Cisco AnyConnect, tamén se lle pedirá un segundo contrasinal único.

Espero que este artigo axude a alguén e lle dea a alguén que pensar sobre como usalo, de balde Servidor OTP, para outras tarefas. Comparte nos comentarios se queres.

Fonte: www.habr.com

Engadir un comentario