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.
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.
Implementăm instanțe ASAv ale șabloanelor de care avem nevoie (ASAv5/10/30/50) din imagine.
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.
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
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.
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:
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:
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:
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:
Fișierele descărcate pot fi încărcate, de exemplu, pe un server FTP și încărcate în fiecare ASA individual:
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:
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.
(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:
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. .
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
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.
Vedem clientul conectat în tabelul de rutare al primului 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:
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:
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.
Verificăm funcționarea cluster-ului cu doi clienți conectați:
Să facem experiența clientului mai convenabilă cu profilul AnyConnect încărcat automat prin ASDM.
Numim profilul într-un mod convenabil și asociem politica noastră de grup cu acesta:
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ă:
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.