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:
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);
Autentificare multifactor:
Certificat de utilizator cu verificare pe teren și autentificare secundară față de unul dintre ei;
Login (neschimbabil, preluat din certificat) si parola;
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:
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;
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).
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.
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ță)
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:
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).
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ă.
Î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.
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 descriereUDID 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.
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;
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:
Profilul de autorizare utilizat la etapele 1,2,3 este următorul:
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:
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:
Pe partea DUO Radius Proxy din jurnal putem vedea clar cum se face cererea de autentificare, aceasta vine folosind UDID ca nume de utilizator:
Din portalul DUO vedem un eveniment de autentificare reușit:
Ș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:
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;