Desplegament d'un clúster d'equilibri de càrrega VPN ASA

En aquest article, m'agradaria proporcionar instruccions pas a pas sobre com podeu implementar ràpidament l'esquema més escalable del moment. VPN d'accés remot basat en l'accés AnyConnect i Cisco ASA - Clúster d'equilibri de càrrega VPN.

Introducció: Moltes empreses d'arreu del món, davant la situació actual amb la COVID-19, estan fent esforços per traslladar els seus empleats al treball a distància. A causa de la transició massiva al treball remot, la càrrega de les passarel·les VPN existents de les empreses està augmentant de manera crítica i es requereix una capacitat molt ràpida per escalar-les. D'altra banda, moltes empreses es veuen obligades a dominar precipitadament el concepte de treball remot des de zero.

Per ajudar les empreses a aconseguir un accés VPN convenient, segur i escalable per als empleats en el menor temps possible, Cisco concedeix una llicència al client VPN SSL AnyConnect, ric en funcions, durant un màxim de 13 setmanes. També podeu fer una prova ASAv (ASA virtual per a hipervisors VMWare/Hyper-V/KVM i plataformes de núvol AWS/Azure) de socis autoritzats o posant-vos en contacte amb els representants de Cisco que treballen amb vosaltres..

El procediment per emetre llicències AnyConnect COVID-19 es descriu aquí.

He preparat una guia pas a pas per a un desplegament senzill del clúster d'equilibri de càrrega VPN com a tecnologia VPN més escalable.

L'exemple següent serà força senzill pel que fa als algorismes d'autenticació i autorització utilitzats, però serà una bona opció per a un inici ràpid (que actualment no és suficient per a molts) amb la possibilitat d'adaptar-se en profunditat a les vostres necessitats durant el desplegament. procés.

Informació breu: La tecnologia VPN Load Balancing Cluster no és una funció de migració per error ni una funció de clustering en el seu sentit natiu, aquesta tecnologia pot combinar models ASA completament diferents (amb certes restriccions) per tal d'equilibrar la càrrega de connexions VPN d'accés remot. No hi ha sincronització de sessions i configuracions entre els nodes d'aquest clúster, però és possible equilibrar automàticament les connexions VPN i garantir la tolerància a errors de les connexions VPN fins que almenys un node actiu roman al clúster. La càrrega del clúster s'equilibra automàticament en funció de la càrrega de treball dels nodes pel nombre de sessions VPN.

Per a la migració per error de nodes específics del clúster (si cal), es pot utilitzar un fitxer, de manera que la connexió activa serà gestionada pel node principal del fitxer. La superació de fitxers no és una condició necessària per garantir la tolerància a errors dins del clúster d'equilibri de càrrega, el propi clúster, en cas d'error del node, transferirà la sessió de l'usuari a un altre node en directe, però sense desar l'estat de connexió, que és precisament. proporcionat pel fitxer. En conseqüència, és possible, si cal, combinar aquestes dues tecnologies.

Un clúster d'equilibri de càrrega VPN pot contenir més de dos nodes.

El clúster d'equilibri de càrrega VPN és compatible amb ASA 5512-X i superior.

Com que cada ASA dins del clúster d'equilibri de càrrega VPN és una unitat independent pel que fa a la configuració, realitzem tots els passos de configuració individualment a cada dispositiu individual.

Detalls de la tecnologia aquí

La topologia lògica de l'exemple donat:

Desplegament d'un clúster d'equilibri de càrrega VPN ASA

Desplegament principal:

  1. Despleguem instàncies ASAv de les plantilles que necessitem (ASAv5/10/30/50) a partir de la imatge.

  2. Assignem les interfícies INSIDE / OUTSIDE a les mateixes VLAN (Fora en la seva pròpia VLAN, INSIDE en la seva pròpia, però generalment dins del clúster, vegeu la topologia), és important que les interfícies del mateix tipus estiguin al mateix segment L2.

  3. Llicències:

    • De moment la instal·lació d'ASAV no tindrà cap llicència i estarà limitada a 100 kbps.
    • Per instal·lar una llicència, heu de generar un testimoni al vostre compte intel·ligent: https://software.cisco.com/ -> Llicència de programari intel·ligent
    • A la finestra que s'obre, feu clic al botó Token nou

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Assegureu-vos que a la finestra que s'obre hi ha un camp actiu i una marca de verificació està marcada Permet la funcionalitat controlada per exportació… Sense aquest camp actiu, no podreu utilitzar les funcions de xifratge fort i, en conseqüència, VPN. Si aquest camp no està actiu, poseu-vos en contacte amb l'equip del vostre compte amb una sol·licitud d'activació.

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Després de prémer el botó Crea un testimoni, es crearà un testimoni que farem servir per obtenir una llicència per ASAv, copieu-lo:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Repetiu els passos C,D,E per a cada ASAv desplegat.
    • Per facilitar la còpia del testimoni, permetem temporalment telnet. Configurem cada ASA (l'exemple següent il·lustra la configuració de l'ASA-1). telnet no funciona amb l'exterior, si realment ho necessiteu, canvieu el nivell de seguretat a 100 a l'exterior i torneu-lo a tornar.

    !
    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 registrar un testimoni al núvol Smart-Account, heu de proporcionar accés a Internet per a ASA, detalls aquí.

    En resum, cal ASA:

    • accés via HTTPS a Internet;
    • sincronització horària (més correctament, mitjançant NTP);
    • servidor DNS registrat;
      • Ens connectem al nostre ASA i fem la configuració per activar la llicència mitjançant 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>

    • Comprovem que el dispositiu ha registrat correctament una llicència i les opcions de xifratge estan disponibles:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

  4. Configureu un SSL-VPN bàsic a cada passarel·la

    • A continuació, configureu l'accés mitjançant SSH i 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 
    !

    • Perquè l'ASDM funcioni, primer l'has de descarregar des del lloc web cisco.com, en el meu cas és el següent fitxer:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Perquè el client AnyConnect funcioni, heu de carregar una imatge a cada ASA per a cada sistema operatiu d'escriptori client utilitzat (planificat per utilitzar Linux / Windows / MAC), necessitareu un fitxer amb Paquet de desplegament de capçalera En el títol:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Els fitxers descarregats es poden carregar, per exemple, a un servidor FTP i pujar a cada ASA individual:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Configurem ASDM i certificat autofirmat per a SSL-VPN (es recomana utilitzar un certificat de confiança en producció). El FQDN establert de l'adreça del clúster virtual (vpn-demo.ashes.cc), així com cada FQDN associat a l'adreça externa de cada node del clúster, s'ha de resoldre a la zona DNS externa amb l'adreça IP de la interfície EXTERIOR (o a l'adreça assignada si s'utilitza el reenviament de ports udp/443 (DTLS) i tcp/443(TLS)). A l'apartat s'especifica informació detallada sobre els requisits del certificat Verificació del certificat documentació.

    !
    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               

    • No us oblideu d'especificar el port per comprovar que l'ASDM funciona, per exemple:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Realitzem la configuració bàsica del túnel:
    • Posem la xarxa corporativa disponible a través del túnel i deixem que Internet vagi directament (no és el mètode més segur si no hi ha proteccions a l'amfitrió que es connecta, és possible penetrar a través d'un amfitrió infectat i mostrar dades corporatives, opció). Split-tunnel-policy tunnelall permetrà que tot el trànsit d'acollida entri al túnel. no obstant túnel dividit permet descarregar la passarel·la VPN i no processar el trànsit d'Internet de l'amfitrió)
    • Emetem adreces de la subxarxa 192.168.20.0/24 als amfitrions del túnel (agrupament de 10 a 30 adreces (per al node #1)). Cada node del clúster VPN ha de tenir el seu propi grup.
    • Realitzarem l'autenticació bàsica amb un usuari creat localment a l'ASA (això no es recomana, aquest és el mètode més fàcil), és millor fer l'autenticació mitjançant LDAP/RADIUS, o millor encara, corbata Autenticació multifactor (MFA), Per exemple Cisco DUO.

    !
    vpn-demo-1(config)# ip local pool vpn-pool 192.168.20.10-192.168.20.30 mask 255.255.255.0
    !
    vpn-demo-1(config)# access-list split-tunnel standard permit 192.168.0.0 255.255.0.0
    !
    vpn-demo-1(config)# group-policy SSL-VPN-GROUP-POLICY internal
    vpn-demo-1(config)# group-policy SSL-VPN-GROUP-POLICY attributes
    vpn-demo-1(config-group-policy)# vpn-tunnel-protocol ssl-client 
    vpn-demo-1(config-group-policy)# split-tunnel-policy tunnelspecified
    vpn-demo-1(config-group-policy)# split-tunnel-network-list value split-tunnel
    vpn-demo-1(config-group-policy)# dns-server value 192.168.99.132
    vpn-demo-1(config-group-policy)# default-domain value ashes.cc
    vpn-demo-1(config)# tunnel-group DefaultWEBVPNGroup general-attributes
    vpn-demo-1(config-tunnel-general)#  default-group-policy SSL-VPN-GROUP-POLICY
    vpn-demo-1(config-tunnel-general)#  address-pool vpn-pool
    !
    vpn-demo-1(config)# username dkazakov password cisco
    vpn-demo-1(config)# username dkazakov attributes
    vpn-demo-1(config-username)# service-type remote-access
    !
    vpn-demo-1(config)# ssl trust-point SELF
    vpn-demo-1(config)# webvpn
    vpn-demo-1(config-webvpn)#  enable outside
    vpn-demo-1(config-webvpn)#  anyconnect image disk0:/anyconnect-win-4.8.03036-webdeploy-k9.pkg
    vpn-demo-1(config-webvpn)#  anyconnect enable
    !

    • (OPCIONAL): En l'exemple anterior, hem utilitzat un usuari local a la ITU per autenticar usuaris remots, cosa que, per descomptat, excepte al laboratori, és poc aplicable. Donaré un exemple de com adaptar ràpidament la configuració per a l'autenticació RADIUS servidor, per exemple utilitzat Motor de serveis d'identitat de Cisco:

    vpn-demo-1(config-aaa-server-group)# dynamic-authorization
    vpn-demo-1(config-aaa-server-group)# interim-accounting-update
    vpn-demo-1(config-aaa-server-group)# aaa-server RADIUS (outside) host 192.168.99.134
    vpn-demo-1(config-aaa-server-host)# key cisco
    vpn-demo-1(config-aaa-server-host)# exit
    vpn-demo-1(config)# tunnel-group DefaultWEBVPNGroup general-attributes
    vpn-demo-1(config-tunnel-general)# authentication-server-group  RADIUS 
    !

    Aquesta integració va permetre no només integrar ràpidament el procediment d'autenticació amb el servei de directori AD, sinó també distingir si l'ordinador connectat pertany a AD, entendre si aquest dispositiu és corporatiu o personal i avaluar l'estat del dispositiu connectat. .

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Configurem NAT transparent perquè el trànsit entre el client i els recursos de la xarxa de la xarxa corporativa no s'escrigui:

    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

    • (OPCIONAL): Per tal d'exposar els nostres clients a Internet a través de l'ASA (en utilitzar tunelall opcions) utilitzant PAT, així com sortir per la mateixa interfície EXTERIOR des de la qual es connecten, cal que realitzeu la configuració següent

    vpn-demo-1(config-network-object)# nat (outside,outside) source dynamic vpn-users interface
    vpn-demo-1(config)# nat (inside,outside) source dynamic any interface
    vpn-demo-1(config)# same-security-traffic permit intra-interface 
    !

    • Quan s'utilitza un clúster, és extremadament important habilitar la xarxa interna per entendre quin ASA ha d'encaminar el trànsit de retorn als usuaris, per a això cal redistribuir les rutes / 32 adreces emeses als clients.
      De moment, encara no hem configurat el clúster, però ja disposem de passarel·les VPN en funcionament que es poden connectar individualment mitjançant FQDN o IP.

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Veiem el client connectat a la taula d'encaminament del primer ASA:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Per tal que tot el nostre clúster VPN i tota la xarxa corporativa coneguin la ruta al nostre client, redistribuirem el prefix del client en un protocol d'encaminament dinàmic, per exemple OSPF:

    !
    vpn-demo-1(config)# route-map RMAP-VPN-REDISTRIBUTE permit 1
    vpn-demo-1(config-route-map)#  match ip address VPN-REDISTRIBUTE
    !
    vpn-demo-1(config)# router ospf 1
    vpn-demo-1(config-router)#  network 192.168.255.0 255.255.255.0 area 0
    vpn-demo-1(config-router)#  log-adj-changes
    vpn-demo-1(config-router)#  redistribute static metric 5000 subnets route-map RMAP-VPN-REDISTRIBUTE

    Ara tenim una ruta al client des de la segona passarel·la ASA-2 i els usuaris connectats a diferents passarel·les VPN dins del clúster poden, per exemple, comunicar-se directament a través d'un softphone corporatiu, així com retornar el trànsit dels recursos sol·licitats per l'usuari. arriba a la passarel·la VPN desitjada:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

  5. Passem a la configuració del clúster d'equilibri de càrrega.

    L'adreça 192.168.31.40 s'utilitzarà com a IP virtual (VIP: tots els clients VPN s'hi connectaran inicialment), des d'aquesta adreça el clúster mestre farà una REDIRECTA a un node de clúster menys carregat. No t'oblidis d'escriure Registre DNS cap endavant i cap enrere tant per a cada adreça externa/FQDN de cada node del clúster, com per a VIP.

    vpn-demo-1(config)# vpn load-balancing
    vpn-demo-1(config-load-balancing)# interface lbpublic outside
    vpn-demo-1(config-load-balancing)# interface lbprivate inside
    vpn-demo-1(config-load-balancing)# priority 10
    vpn-demo-1(config-load-balancing)# cluster ip address 192.168.31.40
    vpn-demo-1(config-load-balancing)# cluster port 4000
    vpn-demo-1(config-load-balancing)# redirect-fqdn enable
    vpn-demo-1(config-load-balancing)# cluster key cisco
    vpn-demo-1(config-load-balancing)# cluster encryption
    vpn-demo-1(config-load-balancing)# cluster port 9023
    vpn-demo-1(config-load-balancing)# participate
    vpn-demo-1(config-load-balancing)#

    • Comprovem el funcionament del clúster amb dos clients connectats:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    • Fem que l'experiència del client sigui més còmoda amb el perfil AnyConnect carregat automàticament mitjançant ASDM.

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Anomenem el perfil d'una manera còmoda i hi associem la nostra política de grup:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Després de la següent connexió del client, aquest perfil es descarregarà i s'instal·larà automàticament al client AnyConnect, així que si us cal connectar, només cal que seleccioneu-lo de la llista:

    Desplegament d'un clúster d'equilibri de càrrega VPN ASA

    Com que només hem creat aquest perfil en un ASA mitjançant ASDM, no us oblideu de repetir els passos a les altres ASA del clúster.

Conclusió: Així, vam desplegar ràpidament un clúster de diverses passarel·les VPN amb equilibri automàtic de càrrega. Afegir nous nodes al clúster és fàcil, amb un escalat horitzontal senzill desplegant noves màquines virtuals ASAv o utilitzant ASA de maquinari. El client AnyConnect, ric en funcions, pot millorar considerablement la connexió remota segura utilitzant el Postura (estimacions de l'estat), més eficaçment utilitzat conjuntament amb el sistema de control centralitzat i comptabilitat d'accés Motor de serveis d'identitat.

Font: www.habr.com

Afegeix comentari