Implementarea unui cluster de echilibrare a sarcinii VPN ASA

În acest articol, aș dori să ofer instrucțiuni pas cu pas despre cum puteți implementa rapid cea mai scalabilă schemă în acest moment. VPN cu acces la distanță bazat pe acces AnyConnect și Cisco ASA - Cluster de echilibrare a sarcinii VPN.

Versiune: Multe companii din întreaga lume, având în vedere situația actuală cu COVID-19, depun eforturi pentru a-și transfera angajații la munca de la distanță. Datorită tranziției în masă către lucrul de la distanță, sarcina de pe gateway-urile VPN existente ale companiilor este în creștere critică și este necesară o capacitate foarte rapidă de a le scala. Pe de altă parte, multe companii sunt nevoite să stăpânească în grabă conceptul de lucru la distanță de la zero.

Pentru a ajuta companiile să obțină acces VPN convenabil, sigur și scalabil pentru angajați în cel mai scurt timp posibil, Cisco acordă licență pentru clientul SSL-VPN AnyConnect, bogat în funcții, pentru până la 13 săptămâni. De asemenea, puteți lua ASAv pentru un test (ASA virtual pentru hipervizoare VMWare/Hyper-V/KVM și platforme cloud AWS/Azure) de la parteneri autorizați sau contactând reprezentanții Cisco care lucrează cu dvs..

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

Am pregătit un ghid pas cu pas pentru o implementare simplă a VPN Load-Balancing Cluster ca cea mai scalabilă tehnologie VPN.

Exemplul de mai jos va fi destul de simplu în ceea ce privește algoritmii de autentificare și autorizare utilizați, dar va fi o opțiune bună pentru o pornire rapidă (ceea ce în prezent nu este suficient pentru mulți) cu posibilitatea de adaptare în profunzime la nevoile dvs. în timpul implementării proces.

Informatie scurta: Tehnologia VPN Load Balancing Cluster nu este un failover și nu o funcție de clustering în sensul său nativ, această tehnologie poate combina modele ASA complet diferite (cu anumite restricții) pentru a echilibra încărcarea conexiunilor VPN cu acces la distanță. Nu există sincronizare a sesiunilor și a configurațiilor între nodurile unui astfel de cluster, dar este posibil să se echilibreze automat încărcarea conexiunilor VPN și să se asigure toleranța la erori a conexiunilor VPN până când cel puțin un nod activ rămâne în cluster. Încărcarea din cluster este echilibrată automat în funcție de volumul de lucru al nodurilor și de numărul de sesiuni VPN.

Pentru failover-ul anumitor noduri ale clusterului (dacă este necesar), poate fi utilizat un filer, astfel încât conexiunea activă va fi gestionată de nodul primar al filerului. Fileover-ul nu este o condiție necesară pentru asigurarea toleranței la erori în cadrul clusterului Load-Balancing, cluster-ul însuși, în cazul unei defecțiuni a unui nod, va transfera sesiunea utilizatorului pe un alt nod live, dar fără a salva starea conexiunii, care este tocmai furnizate de filer. În consecință, este posibil, dacă este necesar, să combinați aceste două tehnologii.

Un cluster de echilibrare a încărcăturii VPN poate conține mai mult de două noduri.

Clusterul de echilibrare a încărcăturii VPN este acceptat pe ASA 5512-X și versiuni ulterioare.

Deoarece fiecare ASA din clusterul VPN Load-Balancing este o unitate independentă în ceea ce privește setările, efectuăm toți pașii de configurare individual pe fiecare dispozitiv individual.

Detalii despre tehnologie aici

Topologia logică a exemplului dat:

Implementarea unui cluster de echilibrare a sarcinii VPN ASA

Implementare primară:

  1. Implementăm instanțe ASAv ale șabloanelor de care avem nevoie (ASAv5/10/30/50) din imagine.

  2. Atribuim interfețele INSIDE / OUTSIDE acelorași VLAN-uri (Exterior în propriul VLAN, INSIDE în propriu, dar în general în cadrul clusterului, vezi topologia), este important ca interfețele de același tip să fie în același segment L2.

  3. Licențe:

    • Momentan instalarea ASAv nu va avea nicio licenta si va fi limitata la 100kbps.
    • Pentru a instala o licență, trebuie să generați un token în Smart-Account: https://software.cisco.com/ -> Licențiere inteligentă pentru software
    • În fereastra care se deschide, faceți clic pe butonul Token nou

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Asigurați-vă că în fereastra care se deschide există un câmp activ și o bifă este bifată Permiteți funcționalitatea controlată de export… Fără acest câmp activ, nu veți putea folosi funcțiile de criptare puternică și, în consecință, VPN. Dacă acest câmp nu este activ, vă rugăm să contactați echipa de cont cu o cerere de activare.

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • După apăsarea butonului Creați jeton, va fi creat un token pe care îl vom folosi pentru a obține o licență pentru ASAv, copiați-l:

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Repetați pașii C,D,E pentru fiecare ASAv desfășurat.
    • Pentru a facilita copiarea simbolului, să permitem temporar telnetul. Să configuram fiecare ASA (exemplul de mai jos ilustrează setările pentru ASA-1). telnet nu funcționează cu exteriorul, dacă chiar aveți nevoie de el, schimbați nivelul de securitate la 100 la exterior, apoi returnați-l înapoi.

    !
    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 un token în cloud-ul Smart-Account, trebuie să oferiți acces la Internet pentru ASA, detalii aici.

    Pe scurt, este nevoie de ASA:

    • acces prin HTTPS la internet;
    • sincronizare de timp (mai corect, prin NTP);
    • server DNS înregistrat;
      • Telefonăm la ASA și facem setări pentru a activa licența 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 
    !
    ! Проверим работу 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>

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

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

  4. Configurați un SSL-VPN de bază pe fiecare gateway

    • Apoi, configurați 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
    !
    ! Поднимем сервер HTTPS для ASDM на порту 445 чтобы не пересекаться с SSL-VPN порталом
    !
    vpn-demo-1(config)# http server enable 445 
    !

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

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Pentru ca clientul AnyConnect să funcționeze, trebuie să încărcați o imagine în fiecare ASA pentru fiecare sistem de operare client desktop utilizat (planificat să utilizeze Linux / Windows / MAC), veți avea nevoie de un fișier cu Pachet de implementare headend In titlu:

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

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

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Configuram certificatul ASDM și autosemnat pentru SSL-VPN (se recomandă utilizarea unui certificat de încredere în producție). FQDN-ul setat al Adresei Clusterului Virtual (vpn-demo.ashes.cc), precum și fiecare FQDN asociat cu adresa externă a fiecărui nod de cluster, trebuie să se rezolve în zona DNS externă la adresa IP a interfeței EXTERIOARE (sau la adresa mapată dacă se utilizează redirecționarea portului udp/443 (DTLS) și tcp/443(TLS)). Informații detaliate despre cerințele pentru certificat sunt specificate în secțiune 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
    % 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               

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

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Să efectuăm setările de bază ale tunelului:
    • Să facem rețeaua corporativă disponibilă prin tunel și să lăsăm Internetul să meargă direct (nu este cea mai sigură metodă dacă nu există protecții pe gazda care se conectează, este posibil să pătrundem printr-o gazdă infectată și să afișăm datele corporative, opțiunea split-tunnel-policy tunnelall va lăsa tot traficul gazdă să intre în tunel. cu toate acestea tunel împărțit face posibilă descărcarea gateway-ului VPN și nu procesarea traficului de internet gazdă)
    • Să emitem adrese de la subrețeaua 192.168.20.0/24 către gazdele din tunel (grup de la 10 la 30 de adrese (pentru nodul #1)). Fiecare nod al clusterului VPN trebuie să aibă propriul pool.
    • Vom efectua autentificarea de bază cu un utilizator creat local pe ASA (Acest lucru nu este recomandat, aceasta este cea mai ușoară metodă), este mai bine să faceți autentificarea prin LDAP/RADIUS, sau mai bine zis, cravată Autentificare multi-factor (MFA), De ex 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 ITU pentru a autentifica utilizatorii de la distanță, ceea ce, desigur, cu excepția laboratorului, este slab aplicabil. Voi da un exemplu despre cum să adaptez rapid setarea pentru autentificare la RAZĂ server, folosit ca exemplu 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 făcut posibilă nu numai integrarea rapidă a procedurii de autentificare cu serviciul director AD, ci și distingerea dacă computerul conectat aparține AD, înțelegerea dacă acest dispozitiv este corporativ sau personal și evaluarea stării dispozitivului conectat. .

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Să configuram Transparent NAT astfel încât traficul dintre client și resursele rețelei rețelei corporative să nu fie mâzgălit:

    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 ne expune clienții la Internet prin intermediul ASA (când se utilizează tunelall opțiuni) folosind PAT, precum și ieșirea prin aceeași interfață OUTSIDE de la care se conectează, trebuie să faceți 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 
    !

    • Când utilizați un cluster, este extrem de important să permiteți rețelei interne să înțeleagă ce ASA să direcționeze traficul de retur către utilizatori, pentru aceasta trebuie să redistribuiți rutele / 32 de adrese emise clienților.
      Momentan, nu am configurat încă clusterul, dar avem deja gateway-uri VPN funcționale care pot fi conectate individual prin FQDN sau IP.

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    Vedem clientul conectat în tabelul de rutare al primului ASA:

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    Pentru ca întregul nostru cluster VPN și întreaga rețea corporativă să cunoască ruta către clientul nostru, vom redistribui prefixul clientului într-un protocol 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 cluster pot, de exemplu, comunica direct printr-un softphone corporativ, precum și să returneze traficul din resursele solicitate de utilizator. veniți la gateway-ul VPN dorit:

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

  5. Să trecem la configurarea clusterului de echilibrare a sarcinii.

    Adresa 192.168.31.40 va fi folosită ca IP Virtual (VIP - toți clienții VPN se vor conecta inițial la ea), de la această adresă clusterul Master va face o REDIRECT către un nod de cluster mai puțin încărcat. Nu uitați să scrieți înregistrare DNS înainte și inversă atât pentru fiecare adresă externă / FQDN a fiecărui nod al cluster-ului, cât și pentru VIP-ul.

    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 cluster-ului cu doi clienți conectați:

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    • Să facem experiența clientului mai convenabilă cu profilul AnyConnect încărcat automat prin ASDM.

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

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

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

    După următoarea conexiune a clientului, acest profil va fi descărcat și instalat automat în clientul AnyConnect, așa că dacă trebuie să vă conectați, selectați-l din listă:

    Implementarea unui cluster de echilibrare a sarcinii VPN ASA

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

Concluzie: Astfel, am implementat rapid un cluster de mai multe gateway-uri VPN cu echilibrare automată a sarcinii. Adăugarea de noi noduri la cluster este ușoară, cu scalare orizontală simplă prin implementarea de noi mașini virtuale ASAv sau folosind ASA hardware. Clientul AnyConnect bogat în funcții poate îmbunătăți considerabil conexiunea securizată la distanță utilizând Postura (estimarea de stat), cel mai eficient utilizat împreună cu sistemul de control centralizat și contabilitate acces Motor de servicii de identitate.

Sursa: www.habr.com

Adauga un comentariu