Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)

La necessitat de proporcionar accés remot a un entorn corporatiu sorgeix cada cop més sovint, ja siguin els vostres usuaris o socis que necessiten accés a un servidor concret de la vostra organització.

Amb aquests propòsits, la majoria de les empreses utilitzen la tecnologia VPN, que s'ha demostrat com una forma segura de proporcionar accés als recursos locals de l'organització.

La meva empresa no és una excepció i nosaltres, com molts altres, utilitzem aquesta tecnologia. I, com molts altres, utilitzem Cisco ASA 55xx com a passarel·la d'accés remot.

Amb l'augment del nombre d'usuaris remots, cal facilitar el procediment d'emissió de credencials. Però al mateix temps, això s'ha de fer sense comprometre la seguretat.

Per nosaltres mateixos, hem trobat una solució per utilitzar l'autenticació de dos factors per connectar-nos mitjançant Cisco SSL VPN, utilitzant contrasenyes d'un sol ús. I aquesta publicació us indicarà com organitzar aquesta solució amb un temps mínim i zero costos per al programari necessari (sempre que ja tingueu Cisco ASA a la vostra infraestructura).

El mercat està ple de solucions en caixes per generar contrasenyes d'un sol ús, alhora que ofereix moltes opcions per obtenir-les, ja sigui enviant una contrasenya per SMS o utilitzant fitxes, tant de maquinari com de programari (per exemple, en un telèfon mòbil). Però el desig d'estalvi i el desig d'estalviar diners per al meu empresari, en l'actual crisi, em van fer trobar una manera gratuïta d'implementar un servei de generació de contrasenyes d'un sol ús. Que, tot i ser gratuït, no és gaire inferior a les solucions comercials (cal destacar aquí que aquest producte també té una versió comercial, però vam coincidir que els costos, en termes de diners, seran zero).

Per tant, necessitem:

- Una imatge de Linux amb un conjunt d'eines integrats: multiOTP, FreeRADIUS i nginx, per accedir al servidor a través del web (http://download.multiotp.net/ - Vaig utilitzar una imatge ja feta per a VMware)
— Servidor Active Directory
- En realitat Cisco ASA (jo, per comoditat, faig servir ASDM)
- Qualsevol testimoni de programari que admeti el mecanisme TOTP (jo, per exemple, faig servir Google Authenticator, però ho farà el mateix FreeOTP)

No entraré en els detalls del desplegament de la imatge. Com a resultat, obtindreu Debian Linux amb multiOTP i FreeRADIUS ja instal·lats, configurats per funcionar conjuntament i una interfície web per a l'administració d'OTP.

Pas 1. Iniciem el sistema i el configurem per a la nostra xarxa
De manera predeterminada, el sistema ve amb credencials root root. Crec que tothom va endevinar que seria bo canviar la contrasenya de l'usuari root després del primer inici de sessió. També heu de canviar la configuració de la xarxa (el valor predeterminat és '192.168.1.44' amb la passarel·la '192.168.1.1'). Després d'això, podeu reiniciar el sistema.

Crear un usuari a Active Directory OTP, amb contrasenya MySuperPassword.

Pas 2. Configureu la connexió i importeu usuaris d'Active Directory
Per fer-ho, necessitem accedir a la consola, i directament al fitxer multiotp.php, mitjançant el qual configurarem la configuració per connectar-nos a Active Directory.

Vés al directori /usr/local/bin/multiotp/ i executeu les ordres següents una per una:

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

Determina si cal un pin addicional (permanent) quan s'introdueix un pin únic (0 o 1)

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

Determina si cal una contrasenya de domini quan s'introdueix un pin únic (0 o 1)

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

S'especifica el tipus de servidor LDAP (0 = servidor LDAP normal, en el nostre cas 1 = Active Directory)

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

Especifica el format en què es representarà el nom d'usuari (aquest valor només generarà el nom d'usuari, sense el domini)

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

El mateix, només pel grup

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

Especifica el mètode per determinar si un usuari pertany a un grup

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

Si s'utilitza una connexió segura al servidor LDAP (sí, és clar!)

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

Port per connectar-se al servidor LDAP

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

Adreça del vostre servidor d'Active Directory

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

Especifiqueu on començar a cercar usuaris al domini

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

Especifiqueu un usuari que tingui drets de cerca a Active Directory

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

Especifiqueu la contrasenya d'usuari per connectar-vos a Active Directory

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

Configuració d'un temps d'espera per connectar-se a Active Directory

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

Establiu un límit de temps per a l'operació d'importació de l'usuari

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

Activeu la configuració de connexió de l'Active Directory

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

Importem usuaris d'Active Directory

Pas 3. Genereu un codi QR per al testimoni
Aquí tot és extremadament senzill. Obriu la interfície web del servidor OTP al navegador, inicieu sessió (no us oblideu de canviar la contrasenya predeterminada per a l'administrador!) i feu clic al botó "Imprimeix":

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
El resultat d'aquesta acció serà una pàgina que conté dos codis QR. Ignorem amb valentia el primer d'ells (malgrat l'atractiu inscripció Google Authenticator / Authenticator / 2 Steps Authenticator) i tornem a escanejar amb valentia el segon codi en un testimoni de programari al telèfon:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
(sí, he equivocat deliberadament el codi QR per fer-lo il·legible).

Després de realitzar aquestes accions a la vostra aplicació, cada trenta segons, es generarà una contrasenya de sis dígits.

Per a la fidelitat, podeu comprovar, a la mateixa interfície:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
Introduir el nom d'usuari i la contrasenya única des de l'aplicació al telèfon. Teniu una resposta positiva? Així que seguim endavant.

Pas 4. Configura i prova FreeRADIUS
Com he esmentat anteriorment, multiOTP ja està configurat per funcionar amb FreeRADIUS, queda per executar proves i afegir informació sobre la nostra passarel·la VPN al fitxer de configuració de FreeRADIUS.

Tornem a la consola del servidor, al directori /usr/local/bin/multiotp/, introduïu:

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

Incloent així un registre més detallat.

Al fitxer de configuració del client FreeRADIUS (/etc/freeradius/clinets.conf) comenta totes les línies relacionades amb localhost i afegiu dues entrades:

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

- per a la prova

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

- per a la nostra passarel·la VPN.

Reinicieu FreeRADIUS i proveu d'iniciar sessió:

radtest username 100110 localhost 1812 testing321

on nom d'usuari = nom d'usuari, 100110 = contrasenya que ens ha donat l'aplicació al telèfon, localhost = Adreça del servidor RADIUS, 1812 - Port del servidor RADIUS, testing321 — contrasenya del client del servidor RADIUS (que hem especificat a la configuració).

La sortida d'aquesta comanda serà una cosa com la següent:

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

Ara hem d'assegurar-nos que l'usuari s'ha autenticat correctament. Per fer-ho, mirarem el propi registre de multiotp:

tail /var/log/multiotp/multiotp.log

I si l'última entrada hi ha:

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

Llavors tot va anar bé, i podem actuar

Pas 5 Configureu Cisco ASA
Estem d'acord que ja tenim un grup configurat i polítiques d'accés mitjançant VPN SLL, configurats conjuntament amb Active Directory, i hem d'afegir una autenticació de dos factors per a aquest perfil.

1. Afegiu un nou grup de servidors AAA:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
2. Afegiu el nostre servidor multiOTP al grup:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
3. Regla perfil de connexió, configurant el grup de servidors d'Active Directory com a servidor d'autenticació principal:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
4. A la pestanya Avançat -> Autenticació també seleccioneu un grup de servidors d'Active Directory:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
5. A la pestanya Avançat -> Secundària autenticació seleccioneu el grup de servidors creat en el qual està registrat el servidor multiOTP. Tingueu en compte que el nom d'usuari de la sessió s'hereta del grup de servidors AAA principal:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
Aplica la configuració i

El pas 6 és l'últim
Comprovem si l'autenticació de dos factors per a SLL VPN ens funciona:

Aneu a 2FA (autenticació de dos factors per a VPN ASA SSL)
Voila! Quan us connecteu mitjançant el client VPN de Cisco AnyConnect, també es demanarà una segona contrasenya única.

Espero que aquest article ajudi a algú, i que doni a algú per pensar, com podeu utilitzar-ho, lliure Servidor OTP, per a altres tasques. Comparteix als comentaris si vols.

Font: www.habr.com

Afegeix comentari