Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

În acest articol, aș dori să prezint un ghid pas cu pas despre cum să desfășuri rapid cea mai scalabilă arhitectură de până acum. Remote-Access VPN accesului pe baza AnyConnect și Cisco ASA – Cluster de balansare a încărcării VPN.

Introducere: Multe companii din întreaga lume, având în vedere situația actuală cu COVID-19, fac eforturi pentru a-și muta angajații în regim de lucru la distanță. Având în vedere amploarea tranziției către munca de acasă, sarcina pe gateway-urile VPN existente ale companiilor crește semnificativ și există o nevoie urgentă de a le scala rapid. Pe de altă parte, multe companii sunt nevoite să învețe rapid un concept precum munca de la distanță.

Pentru a ajuta afacerile să realizeze într-un timp scurt un acces VPN convenabil, sigur și scalabil pentru angajați, compania Cisco oferă, timp de până la 13 săptămâni, licențe pentru clientul multifuncțional SSL-VPN AnyConnect. De asemenea, se poate obține ASAv pentru testare (ASA virtuală pentru hypervisori VMWare/Hyper-V/KVM și platforme cloud AWS/Azure) de la parteneri autorizați sau contactând reprezentanții Cisco care colaborează cu dumneavoastră..

Procedura de emitere a licențelor AnyConnect COVID-19 este descrisă aici..

Am pregătit un ghid pas cu pas pentru o versiune simplă de desfășurare a clusterului de balansare a încărcării VPN, ca cea mai scalabilă tehnologie VPN.

Exemplul de mai jos va fi destul de simplu din punct de vedere al algoritmilor de autentificare și autorizare aplicați, dar va fi o opțiune bună pentru un început rapid (ceea ce acum lipsește multora) cu posibilitatea de adaptare în profunzime la nevoile proprii în timpul desfășurării.

Informații suplimentare: Tehnologia clusterului de balansare a încărcării VPN nu este failover și nu este o funcție de clusterizare în sensul său nativ; această tehnologie poate combina modele diferite de ASA (cu anumite limitări) pentru a echilibra sarcina conexiunilor VPN de acces la distanță. Sincronizarea sesiunilor și a configurațiilor între nodurile acestui cluster lipsește, dar este posibilă balansarea automată a sarcinii conexiunilor VPN și asigurarea redundanței conexiunilor VPN până când rămâne cel puțin un nod activ în cluster. Sarcina în cluster este echilibrată automat în funcție de gradul de utilizare al nodurilor, în funcție de numărul de sesiuni VPN.

Pentru a asigura redundanța nodurilor din cluster (dacă este necesar), se poate utiliza un failover, astfel încât conexiunea activă să fie gestionată de nodul principal al failover-ului. Failover-ul nu este o cerință necesară pentru asigurarea redundanței în cadrul clusterului de Load-Balancing; clusterul, în caz de defectare a unui nod, va transfera sesiunea utilizatorului pe un alt nod activ, însă fără păstrarea stării conexiunii, ceea ce este asigurat de failover. Prin urmare, aceste două tehnologii pot fi combinate dacă este nevoie.

Un cluster VPN Load-Balancing poate conține mai mult de două noduri.

Clusterul VPN Load-Balancing este acceptat pe ASA 5512-X și versiunile ulterioare.

Deoarece fiecare ASA din cadrul clusterului VPN Load-Balancing este o unitate independentă în ceea ce privește configurările efectuate, toate etapele de configurație se realizează individual pe fiecare dispozitiv în parte.

Detalii despre tehnologie aici

Topologia logică a exemplului prezentat:

Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

Desfășurarea inițială:

  1. Desfășurăm instanțele ASAv dorite din imagini (ASAv5/10/30/50).

  2. Atribuim interfețele INSIDE/OUTSIDE pe VLAN-uri identice (Outside în propriul VLAN, INSIDE în al său, dar comun în cadrul clusterului, vezi topologia); este important ca interfețele de același tip să fie în același segment L2.

  3. Licențe:

    • La instalarea inițială, ASAv nu va avea licențe și va fi limitată la o capacitate de 100kbit/sec.
    • Pentru a instala licența, trebuie să generați un token în contul dumneavoastră Smart-Account: https://software.cisco.com/ -> Licențiere Smart Software
    • În fereastra deschisă, apăsați butonul New Token

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Asigurați-vă că în fereastra deschisă există un câmp activ și este bifată opțiunea Allow export-controlled functionality… Fără acest câmp activ, nu veți putea utiliza funcțiile de criptare avansată și, prin urmare, VPN. Dacă acest câmp nu este activ, vă rugăm să contactați echipa dumneavoastră de suport pentru activare.

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • După ce ați apăsat butonul Creează token, se va crea un token pe care îl vom folosi pentru obținerea licenței pentru ASAv, îl vom copia:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Vom repeta pașii C,D,E pentru fiecare ASAv desfășurată.
    • Pentru a facilita copierea token-ului, vom permite temporar telnet. Vom configura fiecare ASA (exemplul de mai jos ilustrează setările pe ASA-1). telnet din exterior nu funcționează; dacă este absolut necesar, schimbați nivelul de securitate la 100 pe exterior, apoi reveniți la valoarea inițială.

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

    • Pentru a înregistra tokenul în cloudul Smart-Account, este necesar să oferiți acces la Internet pentru ASA, detalii aici.

    Pe scurt, ASA are nevoie de:

    • acces HTTPS la Internet;
    • sincronizare a timpului (optim prin NTP);
    • server DNS configurat;
      • Accesăm ASA prin telnet și configurăm setările pentru activarea licenței prin 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 
    !
    ! Să verificăm funcționarea 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:
    !!!!!
    !
    ! Să verificăm sincronizarea 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 (sincronizat), # master (nesincronizat), + selectat, - candidatul, ~ configurat
    !
    ! Să configurăm ASAv pentru Smart-Licensing (conform profilului dvs., în cazul meu 100M ca exemplu)
    !
    ciscoasa(config)# license smart
    ciscoasa(config-smart-lic)# feature tier standard
    ciscoasa(config-smart-lic)# throughput level 100M
    !
    ! Dacă este necesar, puteți configura accesul la Internet prin proxy folosind următorul bloc de comenzi:
    !call-home
    !  http-proxy ip_address port port
    !
    ! Apoi, inserăm tokenul copiat din portalul Smart-Account (<token>) și înregistrăm licența
    !
    ciscoasa(config)# end
    ciscoasa# license smart register idtoken <token>

    • Verificăm dacă dispozitivul a înregistrat cu succes licența și opțiunile de criptare sunt disponibile:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

  4. Configurăm SSL-VPN de bază pe fiecare gateway

    • Apoi configurăm accesul prin 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
    !
    ! Vom ridica serverul HTTPS pentru ASDM pe portul 445 pentru a nu se suprapune cu portalul SSL-VPN
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • Pentru a funcționa ASDM, trebuie să-l descărcați mai întâi de pe site-ul cisco.com, în cazul meu este următorul fișier:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Pentru a utiliza clientul AnyConnect, trebuie să descărcați pe fiecare ASA imaginea pentru fiecare sistem de operare desktop folosit (la planificarea utilizării Linux/Windows/MAC) va fi necesar un fișier cu Pachet de implementare Headend în nume:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Fișierele descărcate pot fi încărcate, de exemplu, pe un server FTP și transferate pe fiecare ASA în parte:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Configurăm ASDM și certificatul auto-semnat pentru SSL-VPN (în producție, se recomandă utilizarea unui certificat de încredere). FQDN-ul stabilit al adresei virtuale a clusterului (vpn-demo.ashes.cc), precum și fiecare FQDN asociat cu adresa externă a fiecărei noduri a clusterului trebuie să fie rezolvat în zona externă DNS pe adresa IP a interfeței OUTSIDE (sau pe adresa mapată, dacă este utilizată redirecționarea portului udp/443 (DTLS) și tcp/443 (TLS)). Informații detaliate despre cerințele pentru certificat sunt specificate în secțiunea Verificarea certificatului documentație.

    !
    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
    % Numele complet calificat al domeniului din certificat va fi: vpn-demo.ashes.cc
    Generați certificat auto-semnat? [yes/no]: yes
    vpn-demo-1(config)# 
    !
    vpn-demo-1(config)# sh cry ca certificates 
    Certificat
    Status: Disponibil
    Numărul de serie al certificatului: 4d43725e
    Utilizarea certificatului: Scop general
    Tipul cheii publice: RSA (4096 biți)
    Algoritmul de semnătură: SHA256 cu criptare RSA
    Numele emitentului: 
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Numele subiectului:
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Data de valabilitate: 
    data de început: 00:16:17 MSK Mar 19 2020
    data de sfârșit: 00:16:17 MSK Mar 17 2030
    Stocare: config
    Puncte de încredere asociate: SELF 
    
    Certificat CA
    Status: Disponibil
    Numărul de serie al certificatului: 0509
    Utilizarea certificatului: Scop general
    Tipul cheii publice: RSA (4096 biți)
    Algoritmul de semnătură: SHA1 cu criptare RSA
    Numele emitentului: 
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Numele subiectului: 
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Data de valabilitate: 
    data de început: 21:27:00 MSK Nov 24 2006
    data de sfârșit: 21:23:33 MSK Nov 24 2031
    Stocare: config
    Puncte de încredere asociate: _SmartCallHome_ServerCA               

    • Pentru a verifica funcționarea ASDM, nu uitați să specificați portul, de exemplu:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Să facem configurațiile de bază pentru tunel:
    • Vom face rețeaua corporativă disponibilă prin tunel, iar internetul va fi direcționat direct (cea mai puțin sigură metodă în absența măsurilor de protecție pe gazda conectată, este posibilă infiltrarea prin gazda infectată și scurgerea de date corporative, opțiunea split-tunnel-policy tunnelall va permite tot traficul gazdei în tunel. Cu toate acestea, Split-Tunnel oferă posibilitatea de a descărca gateway-ul VPN și de a nu procesa traficul Internetului gazdei)
    • Vom aloca gazdelor din tunel adrese din subrețeaua 192.168.20.0/24 (piscă de la 10 la 30 adrese (pentru nodul #1)). Fiecare nod din clusterul VPN trebuie să aibă propriul său pool.
    • Vom efectua autentificarea de bază cu un utilizator creat local pe ASA (acest lucru nu este recomandat, fiind cea mai simplă metodă), este mai bine să se folosească autentificarea prin LDAP/RADIUS, iar și mai bine este să legi Autentificarea Multi-Factor (MFA), de exemplu 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
    !

    • (OPȚIONAL): În exemplul de mai sus, am folosit un utilizator local pe MSE pentru a autentifica utilizatorii îndepărtați, ceea ce, bineînțeles, este slab aplicabil decât în laborator. Voi oferi un exemplu despre cum să adaptezi rapid configurația pentru autentificarea pe RADIUS server, folosind Cisco Identity Services Engine:

    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 
    !

    Această integrare a permis nu doar integrarea rapidă a procedurii de autentificare cu serviciul de directori AD, ci și discernerea apartenenței computerului conectat la AD, înțelegerea dacă este un dispozitiv corporativ sau personal și evaluarea stării dispozitivului conectat.

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Vom face configurarea Transparent NAT astfel încât traficul între client și resursele rețelei corporative să nu fie NAT-it:

    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

    • (OPȚIONAL): Pentru a lansa clienții noștri în Internet prin ASA (când se folosește tunnelall opțiuni) utilizând PAT și ieșind prin același interfață OUTSIDE, de unde se conectează, trebuie să facem următoarele setări

    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 
    !

    • Este extrem de important ca, atunci când se utilizează un cluster, rețeaua internă să înțeleagă pe care ASA să dirijeze traficul de întoarcere către utilizatori, pentru aceasta trebuie să realizăm redistribuția rutelor /32 de adrese emise clienților.
      În prezent, nu am configurat încă clusterul, dar avem deja gateway-uri VPN funcționale la care se poate conecta individual prin FQDN sau IP.

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    Vedem clientul conectat în tabela de rutare a primului ASA:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    Pentru ca întregul nostru cluster VPN și toată rețeaua corporativă să cunoască ruta către clientul nostru, vom realiza redistribuția prefixului clientului în protocolul de rutare dinamic, de exemplu 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

    Acum avem o rută către client de la al doilea gateway ASA-2, iar utilizatorii conectați la diferite gateway-uri VPN din cadrul clusterului pot, de exemplu, comunica direct prin software-ul corporativ, la fel cum traficul de întoarcere de la resursele solicitate de utilizatori va veni la gateway-ul VPN corect:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

  5. Trecem la configurarea Load-Balancing-ului clusterului.

    Adresa 192.168.31.40 va fi utilizată ca Virtual IP (VIP — la care se vor conecta inițial toți clienții VPN), iar de la această adresă, Masterul clusterului va face REDIRECT către un nod mai puțin încărcat al clusterului. Nu uitați să specificați înregistrarea DNS directă și inversă pentru fiecare adresă externă/FQDN a fiecărui nod al clusterului, precum și pentru 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)#

    • Verificăm funcționarea clusterului cu doi clienți conectați:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    • Vom noi îmbunătățim experiența utilizatorului prin încărcarea automată a profilului AnyConnect prin ASDM.

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    Numim profilul într-un mod convenabil și asociem politica noastră de grup cu acesta:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    După următoarea conectare a clientului, acest profil va fi descărcat automat și instalat în clientul AnyConnect, astfel încât, dacă este necesar, să îl poată selecta din listă:

    Desfășurarea unui cluster ASA VPN cu echilibrare a încărcării

    Dat fiind că, folosind ASDM, am creat acest profil doar pe un singur ASA, nu uitați să repetați pașii pe celelalte ASA din cluster.

Concluzie: Astfel, am desfășurat rapid un cluster format din mai multe gateway-uri VPN cu balansare automată a încărcării. Adăugarea de noi noduri la cluster nu reprezintă o problemă, obținând o scalare orizontală simplă prin desfășurarea de noi mașini virtuale ASAv sau utilizând ASA hardware. Clientul multifuncțional AnyConnect poate extinde semnificativ posibilitățile de conectare sigură de la distanță utilizând funcția Posture (evaluarea stării), aplicată cel mai eficient împreună cu sistemul de control centralizat și contabilizare a accesului Identity Services Engine.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster