Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)

Necesitatea de a oferi acces la distanță la un mediu corporativ apare din ce în ce mai des, indiferent dacă utilizatorii sau partenerii dvs. au nevoie de acces la un anumit server din organizația dvs.

În aceste scopuri, majoritatea companiilor folosesc tehnologia VPN, care s-a dovedit a fi o modalitate sigură de a oferi acces la resursele locale ale organizației.

Compania mea nu a făcut excepție și noi, la fel ca mulți alții, folosim această tehnologie. Și, ca mulți alții, folosim Cisco ASA 55xx ca gateway de acces la distanță.

Pe măsură ce numărul utilizatorilor de la distanță crește, este necesar să se simplifice procedura de eliberare a acreditărilor. Dar, în același timp, acest lucru trebuie făcut fără a compromite siguranța.

Pentru noi înșine, am găsit o soluție în utilizarea autentificării cu doi factori pentru conectarea prin Cisco SSL VPN, folosind parole unice. Și această publicație vă va spune cum să organizați o astfel de soluție cu timp minim și costuri zero pentru software-ul necesar (cu condiția să aveți deja Cisco ASA în infrastructură).

Piața este plină de soluții în cutie pentru generarea de parole unice, oferind în același timp o mulțime de opțiuni pentru obținerea acestora, fie că este trimiterea parolei prin SMS sau utilizarea token-urilor, atât hardware, cât și software (de exemplu, pe un telefon mobil). Dar dorința de a economisi bani și dorința de a economisi bani pentru angajatorul meu, în criza actuală, m-au obligat să găsesc o modalitate gratuită de implementare a unui serviciu de generare a parolelor unice. Ceea ce, deși gratuit, nu este cu mult inferior soluțiilor comerciale (aici ar trebui să facem o rezervare, menționând că acest produs are și variantă comercială, dar am convenit că costurile noastre, în bani, vor fi zero).

Deci, avem nevoie de:

- Imagine Linux cu un set de instrumente încorporat - multiOTP, FreeRADIUS și nginx, pentru accesarea serverului prin web (http://download.multiotp.net/ - Am folosit o imagine gata făcută pentru VMware)
— Server Active Directory
— Cisco ASA în sine (pentru comoditate, folosesc ASDM)
— Orice simbol software care acceptă mecanismul TOTP (eu, de exemplu, folosesc Google Authenticator, dar același FreeOTP va face)

Nu voi intra în detalii despre cum se desfășoară imaginea. Ca rezultat, veți primi Debian Linux cu multiOTP și FreeRADIUS deja instalate, configurate pentru a funcționa împreună și o interfață web pentru administrarea OTP.

Pasul 1. Initiam sistemul si il configuram pentru reteaua ta
În mod implicit, sistemul vine cu acreditări root root. Cred că toată lumea a ghicit că ar fi o idee bună să schimbi parola utilizatorului root după prima conectare. De asemenea, trebuie să modificați setările de rețea (în mod implicit este „192.168.1.44” cu gateway-ul „192.168.1.1”). După aceea, puteți reporni sistemul.

Să creăm un utilizator în Active Directory otp, cu parola MySuperPassword.

Pasul 2. Configurați conexiunea și importați utilizatorii Active Directory
Pentru a face acest lucru, avem nevoie de acces la consolă și direct la fișier multiotp.php, folosind care vom configura setările de conexiune la Active Directory.

Accesați directorul /usr/local/bin/multiotp/ și executați pe rând următoarele comenzi:

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

Stabilește dacă este necesar un cod suplimentar (permanent) la introducerea unui cod unic (0 sau 1)

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

Stabilește dacă este necesară o parolă de domeniu la introducerea unui PIN unic (0 sau 1)

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

Este indicat tipul de server LDAP (0 = server LDAP obișnuit, în cazul nostru 1 = Active Directory)

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

Specifică formatul în care se va prezenta numele de utilizator (această valoare va afișa doar numele, fără domeniul)

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

Același lucru, doar pentru un grup

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

Specifică o metodă pentru a determina dacă un utilizator aparține unui grup

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

Ar trebui să folosesc o conexiune securizată la serverul LDAP (desigur, da!)

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

Port pentru conectarea la serverul LDAP

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

Adresa serverului dvs. Active Directory

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

Indicăm de unde să începem căutarea utilizatorilor din domeniu

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

Specificați un utilizator care are drepturi de căutare în Active Directory

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

Specificați parola utilizatorului pentru a vă conecta la Active Directory

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

Setarea timpului de expirare pentru conectarea la Active Directory

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

Am stabilit o limită de timp pentru operația de import de utilizator

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

Activarea configurației conexiunii Active Directory

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

Importăm utilizatori din Active Directory

Pasul 3. Generați un cod QR pentru token
Totul aici este extrem de simplu. Deschideți interfața web a serverului OTP în browser, conectați-vă (nu uitați să schimbați parola implicită pentru administrator!) și faceți clic pe butonul „Imprimare”:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
Rezultatul acestei acțiuni va fi o pagină care conține două coduri QR. Îl ignorăm cu îndrăzneală pe primul dintre ele (în ciuda inscripției atractive Google Authenticator / Authenticator / 2 Steps Authenticator) și din nou scanăm cu îndrăzneală al doilea cod într-un token software de pe telefon:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
(da, am stricat în mod deliberat codul QR pentru a-l face ilizibil).

După finalizarea acestor acțiuni, o parolă de șase cifre va începe să fie generată în aplicația dvs. la fiecare treizeci de secunde.

Pentru a fi sigur, îl puteți verifica în aceeași interfață:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
Prin introducerea numelui de utilizator și a parolei unice din aplicația de pe telefon. Ați primit un răspuns pozitiv? Deci mergem mai departe.

Pasul 4. Configurare suplimentară și testare a funcționării FreeRADIUS
După cum am menționat mai sus, multiOTP este deja configurat să funcționeze cu FreeRADIUS, tot ce rămâne este să rulați teste și să adăugați informații despre gateway-ul nostru VPN la fișierul de configurare FreeRADIUS.

Ne întoarcem la consola serverului, la director /usr/local/bin/multiotp/, introduce:

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

Inclusiv logare mai detaliată.

În fișierul de configurare al clienților FreeRADIUS (/etc/freeradius/clinets.conf) comentați toate rândurile legate de localhost și adăugați două intrări:

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

- pentru test

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

— pentru gateway-ul nostru VPN.

Reporniți FreeRADIUS și încercați să vă conectați:

radtest username 100110 localhost 1812 testing321

unde nume de utilizator = nume de utilizator, 100110 = parola dată nouă de aplicația de pe telefon, localhost = adresa serverului RADIUS, 1812 — port server RADIUS, testing321 — Parola client al serverului RADIUS (pe care am specificat-o în configurare).

Rezultatul acestei comenzi va fi afișat aproximativ după cum urmează:

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

Acum trebuie să ne asigurăm că utilizatorul este autentificat cu succes. Pentru a face acest lucru, ne vom uita la jurnalul multiotp în sine:

tail /var/log/multiotp/multiotp.log

Și dacă ultima intrare există:

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

Apoi totul a mers bine și putem finaliza

Pasul 5: Configurați Cisco ASA
Să fim de acord că avem deja un grup configurat și politici de acces prin VPN SLL, configurate împreună cu Active Directory și trebuie să adăugăm autentificare cu doi factori pentru acest profil.

1. Adăugați un nou grup de servere AAA:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
2. Adăugați serverul nostru multiOTP la grup:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
3. Edităm profilul de conexiune, setând grupul de servere Active Directory ca server principal de autentificare:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
4. În filă Avansat -> Autentificare Selectăm și grupul de servere Active Directory:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
5. În filă Avansat -> Secundar autentificare, selectați grupul de servere creat în care este înregistrat serverul multiOTP. Rețineți că numele de utilizator al sesiunii este moștenit de la grupul principal de servere AAA:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
Aplicați setările și

Pasul 6, alias ultimul
Să verificăm dacă autentificarea cu doi factori funcționează pentru SLL VPN:

Accesați 2FA (autentificare cu doi factori pentru ASA SSL VPN)
Voila! Când vă conectați prin Cisco AnyConnect VPN Client, vi se va cere și o a doua parolă unică.

Sper că acest articol va ajuta pe cineva și că va oferi cuiva de gândit cum să folosească acest lucru, gratuit Server OTP, pentru alte sarcini. Distribuie in comentarii daca vrei.

Sursa: www.habr.com

Adauga un comentariu