Implementazione del concetto di accesso remoto altamente sicuro

Continua la serie di articoli sul tema dell'organizzazione VPN di accesso remoto access Non posso fare a meno di condividere un'interessante esperienza di implementazione configurazione VPN altamente sicura. Un cliente ha lanciato un compito non banale (ci sono inventori nei villaggi russi), ma Challenge Accepted è stato implementato in modo creativo. Il risultato è un concetto interessante con le seguenti caratteristiche:

  1. Diversi fattori di protezione contro la sostituzione del dispositivo terminale (con un vincolo rigido per l'utente);
    • Valutazione della conformità del PC dell'utente con l'UDID assegnato del PC consentito nella base di autenticazione;
    • Con MFA utilizzando l'UDID del PC dal certificato per l'autenticazione secondaria tramite Cisco DUO (Puoi fregare qualsiasi SAML / Radius compatibile);
  2. Autenticazione a più fattori:
    • Certificato utente con validazione del campo e autenticazione secondaria per uno di essi;
    • Login (non modificabile, ricavato dal certificato) e password;
  3. Stima dello stato dell'host che si connette (Postura)

Componenti della soluzione utilizzati:

  • Cisco ASA (Gateway VPN);
  • Cisco ISE (Autenticazione/Autorizzazione/Contabilità, Stima dello Stato, CA);
  • Cisco DUO (autenticazione a più fattori) (Puoi fregare qualsiasi SAML / Radius compatibile);
  • Cisco AnyConnect (agente multiuso per workstation e sistemi operativi mobili);

Partiamo dalle richieste del cliente:

  1. L'utente deve essere in grado di scaricare il client AnyConnect dal gateway VPN tramite la sua autenticazione Login/Password, tutti i moduli AnyConnect necessari devono essere installati automaticamente in conformità con la politica dell'utente;
  2. L'utente dovrebbe essere in grado di emettere automaticamente un certificato (per uno degli scenari, lo scenario principale è l'emissione manuale e la compilazione su un PC), ma ho implementato l'emissione automatica per una dimostrazione (non è mai troppo tardi per rimuoverlo).
  3. L'autenticazione di base dovrebbe avvenire in più fasi, prima il certificato viene autenticato con l'analisi dei campi richiesti e dei loro valori, quindi il login / password, solo che questa volta il nome utente specificato nel campo del certificato dovrebbe essere sostituito nella finestra di login Nome del soggetto (CN) senza possibilità di modifica.
  4. È necessario assicurarsi che il dispositivo da cui si accede sia un laptop aziendale fornito all'utente per l'accesso remoto e nient'altro. (Diverse varianti sono state apportate per soddisfare questo requisito)
  5. Lo stato del dispositivo di connessione dovrebbe essere valutato (in questa fase, il PC) con un controllo di tutta la corposa tabella dei requisiti del cliente (riassuntiva):
    • File e loro proprietà;
    • Voci di registro;
    • Patch del sistema operativo dall'elenco fornito (ulteriore integrazione SCCM);
    • Disponibilità di Anti-Virus di un determinato produttore e pertinenza delle firme;
    • Attività di alcuni servizi;
    • Presenza di determinati programmi installati;

Per cominciare, ti suggerisco di guardare sicuramente la dimostrazione video dell'implementazione risultante su YouTube (5 minuti).

Ora propongo di considerare i dettagli di implementazione non trattati nel video.

Prepariamo il profilo AnyConnect:

Un esempio di creazione di un profilo (in termini di voce di menu in ASDM) che ho fornito in precedenza nel mio articolo sull'impostazione Cluster di bilanciamento del carico VPN. Ora voglio notare separatamente le opzioni di cui abbiamo bisogno:

Nel profilo, specifica il gateway VPN e il nome del profilo per la connessione sul client finale:

Implementazione del concetto di accesso remoto altamente sicuro

Impostiamo l'emissione automatica di un certificato dal lato del profilo, specificando, in particolare, i parametri del certificato e, cosa tipica, prestiamo attenzione al campo Iniziali (I), dove viene inserito manualmente un valore specifico TU HAI FATTO macchina di prova (identificativo univoco del dispositivo generato dal client Cisco AnyConnect).

Implementazione del concetto di accesso remoto altamente sicuro

Qui voglio fare una digressione lirica, poiché questo articolo descrive il concetto, a scopo dimostrativo, ecco l'UDID per l'emissione di un certificato nel campo Iniziali del profilo AnyConnect. Ovviamente, nella vita reale, se lo fai, tutti i client riceveranno un certificato con lo stesso UDID in questo campo e nulla funzionerà per loro, perché hanno bisogno dell'UDID del loro particolare PC. AnyConnect, purtroppo, non implementa ancora la sostituzione del campo UDID nel profilo di richiesta certificato tramite la variabile d'ambiente, come, ad esempio, fa con la variabile % UTENTE%.

Va notato che il cliente (in questo scenario) prevede inizialmente di emettere manualmente i certificati con l'UDID specificato a tali PC protetti da solo, il che non è un problema per lui. Tuttavia, per la maggior parte di noi, vogliamo l'automazione (beh, per me, questo è sicuro =)).

Ed è quello che posso offrire in termini di automazione. Se non è ancora possibile emettere un certificato automaticamente, AnyConnect sostituendo dinamicamente l'UDID, allora c'è un altro modo che richiederà un po 'di pensiero creativo e mani abili: ti dirò il concetto. Per prima cosa, diamo un'occhiata a come viene formato l'UDID su diversi sistemi operativi dall'agente AnyConnect:

  • Windows - Hash SHA-256 della combinazione della chiave di registro DigitalProductID e Machine SID
  • OSX - SHA-256 hash PlatformUUID
  • Linux - Hash SHA-256 dell'UUID della partizione root.
  • apple iOS - SHA-256 hash PlatformUUID
  • Android – Vedi documento su collegamento

Di conseguenza, creiamo uno script per il nostro sistema operativo Windows aziendale, con questo script calcoliamo localmente l'UDID da input noti e formiamo una richiesta per l'emissione di un certificato inserendo questo UDID nel campo richiesto, a proposito, puoi anche utilizzare una macchina certificato emesso da AD (aggiungendo allo schema la doppia autenticazione tramite certificato certificato multiplo).

Prepariamo le impostazioni dal lato Cisco ASA:

Creiamo un TrustPoint per il server ISE CA, rilascerà i certificati ai client. Non prenderò in considerazione la procedura di importazione di Key-Chain, un esempio è descritto nel mio articolo di configurazione Cluster di bilanciamento del carico VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Impostiamo la distribuzione sul gruppo tunnel in base alle regole in conformità con i campi nel certificato utilizzato per l'autenticazione. Inoltre, il profilo AnyConnect, che abbiamo creato nell'ultima fase, è configurato qui. Si prega di notare che io uso il valore SECUREBANK-RA, per trasferire gli utenti con un certificato emesso a un gruppo di tunnel SECURE-BANCA-VPN, tieni presente che ho questo campo nella colonna della richiesta di certificato del profilo 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
!

Imposta un server di autenticazione. Nel mio caso, questo è ISE per la prima fase di autenticazione e DUO (Radius Proxy) come 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
!

Creiamo criteri di gruppo e gruppi di tunnel e i loro componenti ausiliari:

gruppo tunnel PredefinitoWEBVPNGroup servirà principalmente per scaricare il client VPN AnyConnect ed emettere un certificato utente utilizzando la funzione SCEP-Proxy dell'ASA, per questo abbiamo attivato le opportune opzioni sia sul gruppo tunnel stesso che sulla policy di gruppo associata AC Scaricae sul profilo AnyConnect caricato (campi di emissione del certificato, ecc.). Anche in questa politica di gruppo indichiamo la necessità di scaricare Modulo Postura ISE.

gruppo tunnel SECURE-BANCA-VPN verrà utilizzato automaticamente dal client durante l'autenticazione con il certificato emesso nel passaggio precedente, poiché, secondo la mappa dei certificati, la connessione cadrà su questo gruppo di tunnel. Ti parlerò di opzioni interessanti qui:

  • gruppo di server di autenticazione secondario DUO # Imposta l'autenticazione secondaria sul server DUO (Radius Proxy)
  • username-dal-certificato-CN # Utilizzare il campo CN del certificato per l'autenticazione primaria per ereditare l'accesso dell'utente
  • nome-utente-secondario-dal-certificato I # Per l'autenticazione secondaria sul server DUO, utilizzare il nome utente estratto e i campi Iniziali (I) del certificato.
  • client di pre-compilazione del nome utente # rende il nome utente precompilato nella finestra di autenticazione senza possibilità di modifica
  • client secondario-pre-compila-username nascondi uso-comune-password push # Nascondi la finestra di inserimento login/password per l'autenticazione secondaria DUO e usa il metodo di notifica (sms/push/telefono) invece del campo password per richiedere l'autenticazione - doc qui

!
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
!

Successivamente, passiamo a ISE:

Abbiamo impostato un utente locale (puoi anche usare AD / LDAP / ODBC, ecc.), Per semplicità, ho creato un utente locale nell'ISE stesso e l'ho assegnato al campo descrizione ID PC da cui gli è consentito accedere tramite VPN. Nel caso di utilizzo dell'autenticazione locale su ISE, sarò limitato a un solo dispositivo, poiché non ci sono molti campi, ma nei database di autenticazione di terze parti non avrò tali restrizioni.

Implementazione del concetto di accesso remoto altamente sicuro

Diamo un'occhiata alla politica di autorizzazione, è divisa in quattro fasi della connessione:

  • fase 1 - Politica per il download dell'agente AnyConnect e l'emissione di un certificato
  • fase 2 — Accesso al criterio di autenticazione principale (dal certificato)/password + certificato con convalida UDID
  • fase 3 - Autenticazione secondaria tramite Cisco DUO (MFA) tramite UDID come nome utente + valutazione dello stato
  • fase 4 - Autorizzazione finale nello stato:
    • Conforme;
    • Convalida UDID (dal certificato + associazione al login),
    • Cisco DUO AMF
    • Autenticazione di accesso;
    • Autenticazione del certificato;

Implementazione del concetto di accesso remoto altamente sicuro

Diamo un'occhiata a una condizione interessante UUID_VALIDATO, sembra solo che l'utente autenticato provenga davvero da un PC con un UDID associato consentito nel campo Descrizione account, le condizioni sono le seguenti:

Implementazione del concetto di accesso remoto altamente sicuro

Il profilo di autorizzazione utilizzato nelle fasi 1,2,3 è simile al seguente:

Implementazione del concetto di accesso remoto altamente sicuro

È possibile controllare esattamente come arriva l'UDID dal client AnyConnect osservando i dettagli della sessione del client in ISE. Vedremo in dettaglio che AnyConnect attraverso il meccanismo ACIDO invia non solo i dati sulla piattaforma, ma anche l'UDID del dispositivo as Cisco-AV-PAIR:

Implementazione del concetto di accesso remoto altamente sicuro

Prestare attenzione al certificato rilasciato all'utente e al campo Iniziali (I), che viene utilizzato per prenderlo come accesso per l'autenticazione secondaria MFA su Cisco DUO:

Implementazione del concetto di accesso remoto altamente sicuro

Sul lato DUO Radius Proxy, possiamo vedere chiaramente nel registro come va la richiesta di autenticazione, va usando l'UDID come nome utente:

Implementazione del concetto di accesso remoto altamente sicuro

Dal portale DUO, vediamo un evento di autenticazione riuscito:

Implementazione del concetto di accesso remoto altamente sicuro

E nelle proprietà dell'utente che ho impostato ALIAS, che ho usato per accedere, a sua volta, questo è l'UDID del PC consentito per l'accesso:

Implementazione del concetto di accesso remoto altamente sicuro

Di conseguenza, abbiamo ottenuto:

  • Autenticazione a più fattori di utenti e dispositivi;
  • Protezione contro la sostituzione del dispositivo dell'utente;
  • Valutazione dello stato del dispositivo;
  • Potenziale per un maggiore controllo con il certificato del computer di dominio, ecc.;
  • Protezione completa di un posto di lavoro remoto con moduli di sicurezza distribuiti automaticamente;

Collegamenti ad articoli della serie Cisco VPN:

Fonte: habr.com

Aggiungi un commento