Distribuzione di un cluster di bilanciamento del carico VPN ASA
In questo articolo, vorrei fornire istruzioni dettagliate su come implementare rapidamente lo schema più scalabile al momento. VPN di accesso remoto accesso alla base AnyConnect e Cisco ASA - Cluster di bilanciamento del carico VPN.
Introduzione: Molte aziende in tutto il mondo, vista l'attuale situazione con COVID-19, si stanno impegnando per trasferire i propri dipendenti al lavoro a distanza. A causa della transizione di massa al lavoro remoto, il carico sui gateway VPN esistenti delle aziende sta aumentando notevolmente ed è richiesta una capacità molto rapida di scalarli. D'altra parte, molte aziende sono costrette a padroneggiare frettolosamente da zero il concetto di lavoro a distanza.
Ho preparato una guida dettagliata per una semplice implementazione del cluster di bilanciamento del carico VPN come tecnologia VPN più scalabile.
L'esempio seguente sarà abbastanza semplice in termini di algoritmi di autenticazione e autorizzazione utilizzati, ma sarà una buona opzione per un avvio rapido (che attualmente non è sufficiente per molti) con la possibilità di un adattamento approfondito alle proprie esigenze durante la distribuzione processi.
Brevi informazioni: La tecnologia VPN Load Balancing Cluster non è un failover e non è una funzione di clustering nel suo senso nativo, questa tecnologia può combinare modelli ASA completamente diversi (con alcune restrizioni) per bilanciare il carico delle connessioni VPN ad accesso remoto. Non c'è sincronizzazione di sessioni e configurazioni tra i nodi di tale cluster, ma è possibile bilanciare automaticamente il carico delle connessioni VPN e garantire la tolleranza agli errori delle connessioni VPN fino a quando almeno un nodo attivo rimane nel cluster. Il carico nel cluster viene bilanciato automaticamente in base al carico di lavoro dei nodi in base al numero di sessioni VPN.
Per il failover di nodi specifici del cluster (se richiesto), è possibile utilizzare un filer, in modo che la connessione attiva venga gestita dal nodo primario del filer. Il fileover non è una condizione necessaria per garantire la tolleranza ai guasti all'interno del cluster Load-Balancing, il cluster stesso, in caso di guasto di un nodo, trasferirà la sessione utente su un altro nodo live, ma senza salvare lo stato della connessione, che è appunto fornito dal depositante. Di conseguenza, è possibile, se necessario, combinare queste due tecnologie.
Un cluster di bilanciamento del carico VPN può contenere più di due nodi.
Il cluster di bilanciamento del carico VPN è supportato su ASA 5512-X e versioni successive.
Poiché ogni ASA all'interno del cluster di bilanciamento del carico VPN è un'unità indipendente in termini di impostazioni, eseguiamo tutti i passaggi di configurazione individualmente su ogni singolo dispositivo.
Distribuiamo istanze ASAv dei modelli di cui abbiamo bisogno (ASAv5/10/30/50) dall'immagine.
Assegniamo le interfacce INSIDE/OUTSIDE alle stesse VLAN (Outside nella propria VLAN, INSIDE nella propria, ma generalmente all'interno del cluster, vedi topologia), è importante che interfacce dello stesso tipo siano nello stesso segmento L2.
Licenze:
Al momento l'installazione di ASAv non avrà alcuna licenza e sarà limitata a 100kbps.
Per installare una licenza, devi generare un token nel tuo Smart-Account: https://software.cisco.com/ -> Licenze software intelligenti
Nella finestra che si apre, fai clic sul pulsante Nuovo gettone
Assicurati che nella finestra che si apre ci sia un campo attivo e che sia spuntato un segno di spunta Consenti funzionalità controllate dall'esportazione… Senza questo campo attivo, non sarai in grado di utilizzare le funzioni di crittografia avanzata e, di conseguenza, VPN. Se questo campo non è attivo, contatta il team del tuo account con una richiesta di attivazione.
Dopo aver fatto clic sul pulsante Crea token, verrà creato un token che utilizzeremo per ottenere una licenza per ASAv, copialo:
Ripetere i passaggi C, D, E per ogni ASAv distribuito.
Per semplificare la copia del token, consentiamo temporaneamente telnet. Configuriamo ogni ASA (l'esempio sotto illustra le impostazioni su ASA-1). telnet non funziona con l'esterno, se ne hai davvero bisogno, cambia il livello di sicurezza da 100 a esterno, quindi restituiscilo.
!
ciscoasa(config)# int gi0/0
ciscoasa(config)# nameif outside
ciscoasa(config)# ip address 192.168.31.30 255.255.255.0
ciscoasa(config)# no shut
!
ciscoasa(config)# int gi0/1
ciscoasa(config)# nameif inside
ciscoasa(config)# ip address 192.168.255.2 255.255.255.0
ciscoasa(config)# no shut
!
ciscoasa(config)# telnet 0 0 inside
ciscoasa(config)# username admin password cisco priv 15
ciscoasa(config)# ena password cisco
ciscoasa(config)# aaa authentication telnet console LOCAL
!
ciscoasa(config)# route outside 0 0 192.168.31.1
!
ciscoasa(config)# wr
!
Per registrare un token nel cloud Smart-Account, è necessario fornire l'accesso a Internet per ASA, dettagli qui.
In breve, ASA è necessario:
accesso tramite HTTPS a Internet;
sincronizzazione dell'ora (più correttamente, tramite NTP);
server DNS registrato;
Telenettiamo al nostro ASA e definiamo le impostazioni per attivare la licenza tramite Smart-Account.
!
ciscoasa(config)# clock set 19:21:00 Mar 18 2020
ciscoasa(config)# clock timezone MSK 3
ciscoasa(config)# ntp server 192.168.99.136
!
ciscoasa(config)# dns domain-lookup outside
ciscoasa(config)# DNS server-group DefaultDNS
ciscoasa(config-dns-server-group)# name-server 192.168.99.132
!
! Проверим работу DNS:
!
ciscoasa(config-dns-server-group)# ping ya.ru
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 87.250.250.242, timeout is 2 seconds:
!!!!!
!
! Проверим синхронизацию NTP:
!
ciscoasa(config)# show ntp associations
address ref clock st when poll reach delay offset disp
*~192.168.99.136 91.189.94.4 3 63 64 1 36.7 1.85 17.5
* master (synced), # master (unsynced), + selected, - candidate, ~ configured
!
! Установим конфигурацию нашей ASAv для Smart-Licensing (в соответствии с Вашим профилем, в моем случае 100М для примера)
!
ciscoasa(config)# license smart
ciscoasa(config-smart-lic)# feature tier standard
ciscoasa(config-smart-lic)# throughput level 100M
!
! В случае необходимости можно настроить доступ в Интернет через прокси используйте следующий блок команд:
!call-home
! http-proxy ip_address port port
!
! Далее мы вставляем скопированный из портала Smart-Account токен (<token>) и регистрируем лицензию
!
ciscoasa(config)# end
ciscoasa# license smart register idtoken <token>
Verifichiamo che il dispositivo abbia registrato correttamente una licenza e che siano disponibili opzioni di crittografia:
Imposta una VPN SSL di base su ciascun gateway
Successivamente, configura l'accesso tramite SSH e ASDM:
ciscoasa(config)# ssh ver 2
ciscoasa(config)# aaa authentication ssh console LOCAL
ciscoasa(config)# aaa authentication http console LOCAL
ciscoasa(config)# hostname vpn-demo-1
vpn-demo-1(config)# domain-name ashes.cc
vpn-demo-1(config)# cry key gen rsa general-keys modulus 4096
vpn-demo-1(config)# ssh 0 0 inside
vpn-demo-1(config)# http 0 0 inside
!
! Поднимем сервер HTTPS для ASDM на порту 445 чтобы не пересекаться с SSL-VPN порталом
!
vpn-demo-1(config)# http server enable 445
!
Affinché ASDM funzioni, devi prima scaricarlo dal sito Web cisco.com, nel mio caso è il seguente file:
Affinché il client AnyConnect funzioni, è necessario caricare un'immagine su ciascun ASA per ciascun sistema operativo desktop client utilizzato (previsto per l'utilizzo di Linux/Windows/MAC), sarà necessario un file con Pacchetto di distribuzione headend Nel titolo:
I file scaricati possono essere caricati, ad esempio, su un server FTP e caricati su ogni singolo ASA:
Configuriamo ASDM e certificato autofirmato per SSL-VPN (si consiglia di utilizzare un certificato attendibile in produzione). L'FQDN impostato dell'indirizzo del cluster virtuale (vpn-demo.ashes.cc), così come ogni FQDN associato all'indirizzo esterno di ciascun nodo del cluster, deve risolversi nella zona DNS esterna all'indirizzo IP dell'interfaccia OUTSIDE (o all'indirizzo mappato se viene utilizzato il port forwarding udp/443 (DTLS) e tcp/443(TLS)). Informazioni dettagliate sui requisiti per il certificato sono specificate nella sezione Verifica del certificato documentazione.
!
vpn-demo-1(config)# crypto ca trustpoint SELF
vpn-demo-1(config-ca-trustpoint)# enrollment self
vpn-demo-1(config-ca-trustpoint)# fqdn vpn-demo.ashes.cc
vpn-demo-1(config-ca-trustpoint)# subject-name cn=*.ashes.cc, ou=ashes-lab, o=ashes, c=ru
vpn-demo-1(config-ca-trustpoint)# serial-number
vpn-demo-1(config-ca-trustpoint)# crl configure
vpn-demo-1(config-ca-crl)# cry ca enroll SELF
% The fully-qualified domain name in the certificate will be: vpn-demo.ashes.cc
Generate Self-Signed Certificate? [yes/no]: yes
vpn-demo-1(config)#
!
vpn-demo-1(config)# sh cry ca certificates
Certificate
Status: Available
Certificate Serial Number: 4d43725e
Certificate Usage: General Purpose
Public Key Type: RSA (4096 bits)
Signature Algorithm: SHA256 with RSA Encryption
Issuer Name:
serialNumber=9A439T02F95
hostname=vpn-demo.ashes.cc
cn=*.ashes.cc
ou=ashes-lab
o=ashes
c=ru
Subject Name:
serialNumber=9A439T02F95
hostname=vpn-demo.ashes.cc
cn=*.ashes.cc
ou=ashes-lab
o=ashes
c=ru
Validity Date:
start date: 00:16:17 MSK Mar 19 2020
end date: 00:16:17 MSK Mar 17 2030
Storage: config
Associated Trustpoints: SELF
CA Certificate
Status: Available
Certificate Serial Number: 0509
Certificate Usage: General Purpose
Public Key Type: RSA (4096 bits)
Signature Algorithm: SHA1 with RSA Encryption
Issuer Name:
cn=QuoVadis Root CA 2
o=QuoVadis Limited
c=BM
Subject Name:
cn=QuoVadis Root CA 2
o=QuoVadis Limited
c=BM
Validity Date:
start date: 21:27:00 MSK Nov 24 2006
end date: 21:23:33 MSK Nov 24 2031
Storage: config
Associated Trustpoints: _SmartCallHome_ServerCA
Non dimenticare di specificare la porta per verificare che ASDM funzioni, ad esempio:
Eseguiamo le impostazioni di base del tunnel:
Rendiamo disponibile la rete aziendale attraverso il tunnel e lasciamo che Internet passi direttamente (non è il metodo più sicuro se non ci sono protezioni sull'host che si connette, è possibile penetrare attraverso un host infetto e visualizzare i dati aziendali, opzione tunnelall con policy split-tunnel consentirà a tutto il traffico host di entrare nel tunnel. Tuttavia tunnel diviso consente di scaricare il gateway VPN e non elaborare il traffico Internet dell'host)
Emettiamo gli indirizzi dalla sottorete 192.168.20.0/24 agli host nel tunnel (pool da 10 a 30 indirizzi (per il nodo n. 1)). Ogni nodo del cluster VPN deve avere il proprio pool.
Effettueremo l'autenticazione di base con un utente creato localmente sull'ASA (questo non è raccomandato, questo è il metodo più semplice), è meglio eseguire l'autenticazione tramite LDAP/RAGGIO, o meglio ancora, cravatta Autenticazione a più fattori (AMF), Ad esempio Cisco DUO.
(OPZIONALE): Nell'esempio precedente, abbiamo utilizzato un utente locale sull'ITU per autenticare gli utenti remoti, che ovviamente, tranne che in laboratorio, è scarsamente applicabile. Darò un esempio di come adattare rapidamente l'impostazione per l'autenticazione a RAGGIO server, usato come esempio Motore di servizi di identità Cisco:
Questa integrazione ha permesso non solo di integrare velocemente la procedura di autenticazione con il servizio directory AD, ma anche di distinguere se il computer connesso appartiene ad AD, di capire se tale dispositivo è aziendale o personale e di valutare lo stato del dispositivo connesso .
Configuriamo Transparent NAT in modo che il traffico tra il client e le risorse della rete aziendale non venga scarabocchiato:
vpn-demo-1(config-network-object)# subnet 192.168.20.0 255.255.255.0
!
vpn-demo-1(config)# nat (inside,outside) source static any any destination static vpn-users vpn-users no-proxy-arp
(OPZIONALE): Per esporre i nostri clienti a Internet tramite l'ASA (quando si utilizza tunnelall opzioni) utilizzando PAT, oltre che uscire dalla stessa interfaccia OUTSIDE da cui sono collegati, è necessario effettuare le seguenti impostazioni
Quando si utilizza un cluster, è estremamente importante consentire alla rete interna di capire quale ASA instradare il traffico di ritorno agli utenti, per questo è necessario ridistribuire i percorsi / 32 indirizzi rilasciati ai client.
Al momento non abbiamo ancora configurato il cluster, ma disponiamo già di gateway VPN funzionanti che possono essere collegati individualmente tramite FQDN o IP.
Vediamo il client connesso nella tabella di routing del primo ASA:
Affinché il nostro intero cluster VPN e l'intera rete aziendale conoscano il percorso verso il nostro client, ridistribuiremo il prefisso del client in un protocollo di routing dinamico, ad esempio OSPF:
Ora abbiamo un instradamento verso il client dal secondo gateway ASA-2 e gli utenti connessi a diversi gateway VPN all'interno del cluster possono, ad esempio, comunicare direttamente tramite un softphone aziendale, così come il traffico di ritorno dalle risorse richieste dall'utente vieni al gateway VPN desiderato:
Passiamo alla configurazione del cluster di bilanciamento del carico.
L'indirizzo 192.168.31.40 verrà utilizzato come IP virtuale (VIP - tutti i client VPN si connetteranno inizialmente ad esso), da questo indirizzo il cluster master effettuerà un REDIRECT verso un nodo del cluster meno carico. Non dimenticare di scrivere record DNS avanti e indietro sia per ogni indirizzo esterno/FQDN di ogni nodo del cluster, sia per VIP.
Verifichiamo il funzionamento del cluster con due client connessi:
Rendiamo l'esperienza del cliente più comoda con il profilo AnyConnect caricato automaticamente tramite ASDM.
Diamo un nome al profilo in modo conveniente e vi associamo la nostra policy di gruppo:
Dopo la successiva connessione del client, questo profilo verrà automaticamente scaricato e installato nel client AnyConnect, quindi se hai bisogno di connetterti, devi solo selezionarlo dall'elenco:
Poiché abbiamo creato questo profilo su un solo ASA utilizzando ASDM, non dimenticare di ripetere i passaggi sugli altri ASA nel cluster.
Conclusione: Pertanto, abbiamo implementato rapidamente un cluster di diversi gateway VPN con bilanciamento del carico automatico. L'aggiunta di nuovi nodi al cluster è facile, con un semplice ridimensionamento orizzontale mediante la distribuzione di nuove macchine virtuali ASAv o l'utilizzo di ASA hardware. Il client AnyConnect ricco di funzionalità può migliorare notevolmente la connessione remota sicura utilizzando il Postura (stime statali), utilizzato in modo più efficace in combinazione con il sistema di controllo centralizzato e contabilità degli accessi Motore dei servizi di identità.