Implementarea conceptului de acces la distanță foarte sigur

Continuarea seriei de articole pe tema organizarii VPN cu acces la distanță acces Nu pot să nu împărtășesc experiența mea interesantă de implementare configurație VPN extrem de sigură. Un client a prezentat o sarcină nebanală (există inventatori în satele rusești), dar Provocarea a fost acceptată și implementată în mod creativ. Rezultatul este un concept interesant cu următoarele caracteristici:

  1. Mai mulți factori de protecție împotriva înlocuirii dispozitivului terminal (cu obligație strictă pentru utilizator);
    • Evaluarea conformității PC-ului utilizatorului cu UDID-ul atribuit PC-ului permis în baza de date de autentificare;
    • Cu MFA folosind UDID-ul PC din certificat pentru autentificare secundară prin Cisco DUO (Puteți atașa orice compatibil SAML/Radius);
  2. Autentificare multifactor:
    • Certificat de utilizator cu verificare pe teren și autentificare secundară față de unul dintre ei;
    • Login (neschimbabil, preluat din certificat) si parola;
  3. Estimarea stării gazdei de conectare (Posture)

Componentele soluției utilizate:

  • Cisco ASA (VPN Gateway);
  • Cisco ISE (Autentificare / Autorizare / Contabilitate, Evaluare de Stat, CA);
  • Cisco DUO (Autentificare cu mai mulți factori) (Puteți atașa orice compatibil SAML/Radius);
  • Cisco AnyConnect (agent multifuncțional pentru stațiile de lucru și sistemul de operare mobil);

Să începem cu cerințele clientului:

  1. Utilizatorul trebuie, prin autentificarea sa de autentificare/parolă, să poată descărca clientul AnyConnect de pe gateway-ul VPN; toate modulele AnyConnect necesare trebuie instalate automat în conformitate cu politica utilizatorului;
  2. Utilizatorul ar trebui să poată emite automat un certificat (pentru unul dintre scenarii, scenariul principal este emiterea și încărcarea manuală pe un computer), dar am implementat eliberarea automată pentru demonstrație (nu este niciodată prea târziu pentru ao elimina).
  3. Autentificarea de bază trebuie să aibă loc în mai multe etape, mai întâi există autentificarea prin certificat cu analiza câmpurilor necesare și a valorilor acestora, apoi autentificare/parolă, doar că de această dată trebuie introdus în fereastra de autentificare numele de utilizator specificat în câmpul certificat. Numele subiectului (CN) fără posibilitatea de a edita.
  4. Trebuie să vă asigurați că dispozitivul de pe care vă conectați este laptopul corporativ eliberat utilizatorului pentru acces de la distanță și nu altceva. (Au fost făcute mai multe opțiuni pentru a satisface această cerință)
  5. Starea dispozitivului de conectare (în această etapă PC) ar trebui evaluată cu o verificare a unui întreg tabel consistent de cerințe ale clienților (rezumat):
    • Fișierele și proprietățile acestora;
    • Înregistrări în registru;
    • Patch-uri OS din lista furnizată (integrare SCCM ulterioară);
    • Disponibilitatea Anti-Virus de la un anumit producător și relevanța semnăturilor;
    • Activitatea anumitor servicii;
    • Disponibilitatea anumitor programe instalate;

Pentru început, vă sugerez să vă uitați cu siguranță la demonstrația video a implementării rezultate pe Youtube (5 minute).

Acum propun să luăm în considerare detaliile de implementare care nu sunt acoperite în videoclip.

Să pregătim profilul AnyConnect:

Am dat anterior un exemplu de creare a unui profil (în ceea ce privește un element de meniu în ASDM) în articolul meu despre setare Cluster de echilibrare a încărcăturii VPN. Acum aș dori să notez separat opțiunile de care vom avea nevoie:

În profil, vom indica gateway-ul VPN și numele profilului pentru conectarea la clientul final:

Implementarea conceptului de acces la distanță foarte sigur

Să configuram emiterea automată a unui certificat din partea de profil, indicând, în special, parametrii certificatului și, în mod caracteristic, să fim atenți la câmp Inițiale (I), unde o anumită valoare este introdusă manual AI FACUT mașină de testare (identificatorul unic de dispozitiv care este generat de clientul Cisco AnyConnect).

Implementarea conceptului de acces la distanță foarte sigur

Aici vreau să fac o digresiune lirică, deoarece acest articol descrie conceptul; în scop demonstrativ, UDID-ul pentru eliberarea unui certificat este introdus în câmpul Inițiale din profilul AnyConnect. Desigur, în viața reală, dacă faci asta, atunci toți clienții vor primi un certificat cu același UDID în acest domeniu și nimic nu va funcționa pentru ei, deoarece au nevoie de UDID-ul PC-ului lor specific. AnyConnect, din păcate, nu implementează încă înlocuirea câmpului UDID în profilul cererii de certificat printr-o variabilă de mediu, așa cum face, de exemplu, cu o variabilă %UTILIZATOR%.

Este de remarcat faptul că clientul (din acest scenariu) plănuiește inițial să emită în mod independent certificate cu un anumit UDID în modul manual pentru astfel de PC-uri protejate, ceea ce nu este o problemă pentru el. Cu toate acestea, pentru cei mai mulți dintre noi dorim automatizare (ei bine, pentru mine este adevărat =)).

Și asta este ceea ce pot oferi în ceea ce privește automatizarea. Dacă AnyConnect nu este încă capabil să elibereze automat un certificat prin înlocuirea dinamică a UDID-ului, atunci există o altă modalitate care va necesita puțină gândire creativă și mâini pricepute - vă voi spune conceptul. Mai întâi, să ne uităm la modul în care UDID-ul este generat pe diferite sisteme de operare de către agentul AnyConnect:

  • ferestre din — SHA-256 hash al combinației dintre DigitalProductID și cheia de registru Machine SID
  • OSX — SHA-256 hash PlatformUUID
  • Linux — SHA-256 hash al UUID-ului partiției rădăcină.
  • Apple a iOS — SHA-256 hash PlatformUUID
  • Android – Vezi documentul de pe legătură

În consecință, creăm un script pentru sistemul nostru de operare Windows corporativ, cu acest script calculăm local UDID-ul utilizând intrări cunoscute și formăm o cerere de eliberare a unui certificat introducând acest UDID în câmpul obligatoriu, apropo, puteți folosi și o mașină certificat emis de AD (prin adăugarea de autentificare dublă folosind un certificat la schemă Certificat multiplu).

Să pregătim setările din partea Cisco ASA:

Să creăm un TrustPoint pentru serverul ISE CA, acesta va fi cel care va emite certificate clienților. Nu voi lua în considerare procedura de import Key-Chain; un exemplu este descris în articolul meu despre configurare Cluster de echilibrare a încărcăturii VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Configuram distribuția pe Tunnel-Group pe baza regulilor în conformitate cu câmpurile din certificatul care este utilizat pentru autentificare. Profilul AnyConnect pe care l-am făcut în etapa anterioară este de asemenea configurat aici. Vă rugăm să rețineți că folosesc valoarea SECUREBANK-RA, pentru a transfera utilizatorii cu un certificat emis către un grup de tunel SECURITATE-BANCA-VPN, vă rugăm să rețineți că am acest câmp în coloana de solicitare a certificatului de profil AnyConnect.

tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
 subject-name attr ou eq securebank-ra
!
webvpn
 anyconnect profiles SECUREBANK disk0:/securebank.xml
 certificate-group-map OU-Map 6 SECURE-BANK-VPN
!

Configurarea serverelor de autentificare. În cazul meu, acesta este ISE pentru prima etapă de autentificare și DUO (Radius Proxy) ca MFA.

! CISCO ISE
aaa-server ISE protocol radius
 authorize-only
 interim-accounting-update periodic 24
 dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
 key *****
!
! DUO RADIUS PROXY
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
 timeout 60
 key *****
 authentication-port 1812
 accounting-port 1813
 no mschapv2-capable
!

Creăm politici de grup și grupuri de tuneluri și componentele lor auxiliare:

Grup tunel ImplicitWEBVPNGroup va fi folosit în primul rând pentru a descărca clientul AnyConnect VPN și a emite un certificat de utilizator utilizând funcția SCEP-Proxy a ASA; pentru aceasta avem opțiunile corespunzătoare activate atât pe grupul de tunel în sine, cât și pe politica de grup asociată AC-Descărcare, și pe profilul AnyConnect încărcat (câmpuri pentru emiterea unui certificat etc.). Tot în această politică de grup indicăm necesitatea descărcarii Modulul de postură ISE.

Grup tunel SECURITATE-BANCA-VPN va fi utilizat automat de către client la autentificarea cu certificatul eliberat în etapa anterioară, întrucât, în conformitate cu Harta Certificatelor, conexiunea se va încadra în mod specific pe acest grup de tunel. Vă voi spune despre opțiuni interesante aici:

  • grup de servere-autentificare secundară DUO # Setați autentificarea secundară pe serverul DUO (Radius Proxy)
  • nume de utilizator-din-certificatCN # Pentru autentificarea primară, folosim câmpul CN al certificatului pentru a moșteni autentificarea utilizatorului
  • nume-de-utilizator-secundar-din-certificat I # Pentru autentificarea secundară pe serverul DUO, folosim numele de utilizator extras și câmpurile Inițiale (I) ale certificatului.
  • client pre-completare nume de utilizator # faceți numele de utilizator pre-completat în fereastra de autentificare, fără a putea fi schimbat
  • secundar-pre-fill-username client ascunde folosire-common-parola push # Ascundem fereastra de autentificare/introducere a parolei pentru autentificarea secundară DUO și folosim metoda de notificare (sms/push/telefon) - andoc pentru a solicita autentificare în loc de câmpul de parolă aici

!
access-list posture-redirect extended permit tcp any host 72.163.1.80 
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 accounting-server-group ISE
 default-group-policy AC-DOWNLOAD
 scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
 authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 secondary-authentication-server-group DUO
 accounting-server-group ISE
 default-group-policy SECURE-BANK-VPN
 username-from-certificate CN
 secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
 authentication aaa certificate
 pre-fill-username client
 secondary-pre-fill-username client hide use-common-password push
 group-alias SECURE-BANK-VPN enable
 dns-group ASHES-DNS
!

În continuare trecem la ISE:

Configuram un utilizator local (puteti folosi AD/LDAP/ODBC, etc.), pentru simplitate, am creat un utilizator local in ISE si l-am atribuit in camp descriere UDID PC de la care i se permite să se conecteze prin VPN. Dacă folosesc autentificarea locală pe ISE, voi fi limitat la un singur dispozitiv, deoarece nu sunt multe câmpuri, dar în bazele de date de autentificare terță parte nu voi avea astfel de restricții.

Implementarea conceptului de acces la distanță foarte sigur

Să ne uităm la politica de autorizare, aceasta este împărțită în patru etape de conectare:

  • Etapa 1 — Politică pentru descărcarea agentului AnyConnect și emiterea unui certificat
  • Etapa 2 — Politică de autentificare primară Autentificare (din certificat)/Parolă + Certificat cu validare UDID
  • Etapa 3 — Autentificare secundară prin Cisco DUO (MFA) folosind UDID ca nume de utilizator + evaluare de stat
  • Etapa 4 — Autorizarea finală se află în starea:
    • Conform;
    • Validare UDID (din certificat + conectare),
    • Cisco DUO MFA;
    • Autentificare prin autentificare;
    • Certificat de autentificare;

Implementarea conceptului de acces la distanță foarte sigur

Să ne uităm la o condiție interesantă UUID_VALIDAT, se pare că utilizatorul de autentificare provine de fapt de la un computer cu un UDID permis asociat în câmp Descriere cont, condițiile arată astfel:

Implementarea conceptului de acces la distanță foarte sigur

Profilul de autorizare utilizat la etapele 1,2,3 este următorul:

Implementarea conceptului de acces la distanță foarte sigur

Puteți verifica exact cum ajunge UDID-ul de la clientul AnyConnect la noi, uitându-vă la detaliile sesiunii client în ISE. În detaliu vom vedea că AnyConnect prin mecanism ACIDEX trimite nu numai informații despre platformă, ci și UDID-ul dispozitivului ca Cisco-AV-PAIR:

Implementarea conceptului de acces la distanță foarte sigur

Să fim atenți la certificatul eliberat utilizatorului și la teren Inițiale (I), care este folosit pentru a-l lua ca login pentru autentificarea MFA secundară pe Cisco DUO:

Implementarea conceptului de acces la distanță foarte sigur

Pe partea DUO Radius Proxy din jurnal putem vedea clar cum se face cererea de autentificare, aceasta vine folosind UDID ca nume de utilizator:

Implementarea conceptului de acces la distanță foarte sigur

Din portalul DUO vedem un eveniment de autentificare reușit:

Implementarea conceptului de acces la distanță foarte sigur

Și în proprietățile utilizatorului am setat ALIAS, pe care l-am folosit pentru autentificare, la rândul său, acesta este UDID-ul PC-ului permis pentru autentificare:

Implementarea conceptului de acces la distanță foarte sigur

Ca rezultat am obtinut:

  • Autentificare multi-factor pentru utilizator și dispozitiv;
  • Protecție împotriva falsificării dispozitivului utilizatorului;
  • Evaluarea stării dispozitivului;
  • Potențial de control sporit cu certificat de mașină de domeniu etc.;
  • Protecție cuprinzătoare la distanță la locul de muncă cu module de securitate implementate automat;

Link-uri către articolele din seria Cisco VPN:

Sursa: www.habr.com

Adauga un comentariu