Postavljanje ASA VPN klastera za balansiranje opterećenja

U ovom članku, želio bih dati upute korak po korak o tome kako možete brzo primijeniti najskalabilniju shemu u ovom trenutku. VPN za daljinski pristup pristup bazi AnyConnect i Cisco ASA - VPN klaster za balansiranje opterećenja.

Uvod: Mnoge kompanije širom svijeta, s obzirom na trenutnu situaciju sa COVID-19, ulažu napore da svoje zaposlenike prebace na daljinski rad. Zbog masovnog prelaska na rad na daljinu, opterećenje postojećih VPN gateway-a kompanija kritično raste i potrebna je vrlo brza mogućnost njihovog skaliranja. S druge strane, mnoge kompanije su prisiljene da na brzinu savladaju koncept rada na daljinu od nule.

Kako bi pomogao preduzećima da postignu zgodan, siguran i skalabilan VPN pristup za zaposlene u najkraćem mogućem roku, Cisco licencira AnyConnect SSL-VPN klijent bogat funkcijama na period do 13 sedmica. Također možete uzeti ASAv za testiranje (Virtualni ASA za VMWare/Hyper-V/KVM hipervizore i AWS/Azure cloud platforme) od ovlaštenih partnera ili kontaktiranjem Cisco predstavnika koji rade s vama.

Ovdje je opisana procedura za izdavanje AnyConnect COVID-19 licenci.

Pripremio sam vodič korak po korak za jednostavnu implementaciju VPN klastera za balansiranje opterećenja kao najskalabilnije VPN tehnologije.

Primjer u nastavku bit će prilično jednostavan u smislu korištenih algoritama za autentifikaciju i autorizaciju, ali će biti dobra opcija za brzi početak (što trenutno mnogima nije dovoljno) uz mogućnost dubinskog prilagođavanja vašim potrebama tokom implementacije proces.

Kratke informacije: Tehnologija VPN klastera za balansiranje opterećenja nije funkcija prelaska na greške i nije funkcija klasteriranja u svom izvornom smislu, ova tehnologija može kombinovati potpuno različite ASA modele (sa određenim ograničenjima) kako bi izbalansirala VPN veze sa udaljenim pristupom. Nema sinkronizacije sesija i konfiguracija između čvorova takvog klastera, ali je moguće automatski balansirati VPN veze i osigurati otpornost na greške VPN veza sve dok barem jedan aktivni čvor ne ostane u klasteru. Opterećenje u klasteru se automatski balansira ovisno o opterećenju čvorova brojem VPN sesija.

Za napuštanje određenih čvorova klastera (ako je potrebno), može se koristiti filer, tako da će aktivnom vezom upravljati primarni čvor filera. Fileover nije neophodan uslov za osiguranje tolerancije grešaka unutar klastera Load-Balancing, sam klaster će, u slučaju kvara čvora, prenijeti korisničku sesiju na drugi živi čvor, ali bez pohranjivanja statusa veze, što je upravo obezbjeđuje filer. U skladu s tim, moguće je, ako je potrebno, kombinirati ove dvije tehnologije.

VPN klaster za balansiranje opterećenja može sadržavati više od dva čvora.

VPN klaster za balansiranje opterećenja je podržan na ASA 5512-X i novijim.

Budući da je svaki ASA unutar VPN Load-Balancing klastera nezavisna jedinica u smislu postavki, sve korake konfiguracije izvodimo pojedinačno na svakom pojedinačnom uređaju.

Detalji o tehnologiji ovdje

Logička topologija datog primjera:

Postavljanje ASA VPN klastera za balansiranje opterećenja

Primarna implementacija:

  1. Mi implementiramo ASAv instance predložaka koji su nam potrebni (ASAv5/10/30/50) sa slike.

  2. INSIDE / OUTSIDE interfejse dodeljujemo istim VLAN-ovima (Spolja u sopstvenom VLAN-u, UNUTRA u svom, ali generalno unutar klastera, pogledajte topologiju), važno je da su interfejsi istog tipa u istom L2 segmentu.

  3. Licence:

    • U ovom trenutku ASAv instalacija neće imati nikakve licence i bit će ograničena na 100 kbps.
    • Da biste instalirali licencu, potrebno je da generišete token na svom Smart-računu: https://software.cisco.com/ -> Pametno licenciranje softvera
    • U prozoru koji se otvori kliknite na dugme New Token

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Uvjerite se da u prozoru koji se otvori postoji aktivno polje i da je označena kvačica Dozvoli funkcionalnost kontroliranu izvozom… Bez aktivnog ovog polja nećete moći koristiti funkcije jake enkripcije i, shodno tome, VPN. Ako ovo polje nije aktivno, obratite se svom timu naloga sa zahtjevom za aktivaciju.

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Nakon pritiska na dugme Kreirajte token, kreirat će se token koji ćemo koristiti za dobivanje licence za ASAv, kopirajte ga:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Ponovite korake C,D,E za svaki raspoređeni ASAv.
    • Da bismo olakšali kopiranje tokena, dozvolimo privremeno telnet. Konfigurirajmo svaki ASA (primjer ispod ilustruje postavke na ASA-1). telnet ne radi sa vanjskim, ako vam je zaista potreban, promijenite sigurnosni nivo na 100 na vanjski, a zatim ga vratite nazad.

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

    • Da biste registrovali token u oblaku Smart-Account, morate omogućiti pristup internetu za ASA, detalji ovdje.

    Ukratko, ASA je potrebna:

    • pristup Internetu putem HTTPS-a;
    • sinhronizacija vremena (tačnije, preko NTP-a);
    • registrovani DNS server;
      • Telnet na naš ASA i vršimo podešavanja za aktiviranje licence preko Smart-Account-a.

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

    • Provjeravamo da li je uređaj uspješno registrirao licencu i da li su dostupne opcije šifriranja:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Postavljanje ASA VPN klastera za balansiranje opterećenja

  4. Postavite osnovni SSL-VPN na svakom gatewayu

    • Zatim konfigurirajte pristup putem 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 
    !

    • Da bi ASDM radio, prvo ga morate preuzeti sa web stranice cisco.com, u mom slučaju to je sljedeća datoteka:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Da bi AnyConnect klijent funkcionisao, potrebno je da otpremite sliku na svaki ASA za svaki korišćeni klijent desktop OS (planirano da koristi Linux / Windows / MAC), trebaće vam fajl sa Paket za implementaciju Headend u naslovu:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Preuzete datoteke se mogu postaviti, na primjer, na FTP server i otpremiti na svaki pojedinačni ASA:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Konfigurišemo ASDM i Self-Signed certifikat za SSL-VPN (preporučuje se korištenje pouzdanog certifikata u proizvodnji). Postavljeni FQDN adrese virtuelnog klastera (vpn-demo.ashes.cc), kao i svaki FQDN povezan sa eksternom adresom svakog čvora klastera, mora da se razreši u eksternoj DNS zoni na IP adresu VANJSKOG interfejsa (ili na mapiranu adresu ako se koristi prosljeđivanje porta udp/443 (DTLS) i tcp/443(TLS)). Detaljne informacije o zahtjevima za certifikat su navedene u odjeljku Potvrda certifikata dokumentaciju.

    !
    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               

    • Ne zaboravite navesti port za provjeru da ASDM radi, na primjer:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Izvršimo osnovna podešavanja tunela:
    • Učinimo korporativnu mrežu dostupnom kroz tunel i pustimo internet direktno (nije najsigurniji način ako nema zaštite na hostu koji se povezuje, moguće je prodrijeti kroz zaraženi host i prikazati korporativne podatke, opcija split-tunnel-policy tunnelall će pustiti sav promet domaćina u tunel. Ipak split-tunel omogućava oslobađanje VPN gateway-a i ne obradu internetskog prometa domaćina)
    • Hajde da izdamo adrese hostovima tunela iz podmreže 192.168.20.0/24 (skup od 10 do 30 adresa (za čvor #1)). Svaki čvor VPN klastera mora imati svoj vlastiti bazen.
    • Provešćemo osnovnu autentifikaciju sa lokalno kreiranim korisnikom na ASA (ovo se ne preporučuje, ovo je najlakši način), bolje je izvršiti autentifikaciju preko LDAP/RADIUS, ili još bolje, kravata Višefaktorska autentikacija (MFA), na primjer 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
    !

    • (OPCIONALNO): U gornjem primjeru koristili smo lokalnog korisnika na ITU-u za autentifikaciju udaljenih korisnika, što je naravno, osim u laboratoriji, slabo primjenjivo. Navest ću primjer kako brzo prilagoditi postavke za autentifikaciju RADIUS server, na primjer korišten 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 
    !

    Ova integracija je omogućila ne samo brzu integraciju procedure autentikacije sa uslugom AD imenika, već i razlikovanje da li povezani računar pripada AD, da se shvati da li je ovaj uređaj korporativni ili lični i da se proceni status povezanog uređaja. .

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Konfigurirajmo Transparent NAT tako da se promet između klijenta i resursa mreže korporativne mreže ne piše:

    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

    • (OPCIONALNO): Kako bismo svoje klijente izložili Internetu putem ASA (prilikom korištenja tunelall opcije) pomoću PAT-a, kao i za izlaz kroz isti VANJSKI interfejs sa kojeg su povezani, potrebno je izvršiti sljedeća podešavanja

    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 
    !

    • Prilikom korištenja klastera izuzetno je važno omogućiti internoj mreži da razumije koji ASA će usmjeriti povratni promet do korisnika, za to je potrebno preraspodijeliti rute / 32 adrese koje se izdaju klijentima.
      Trenutno još nismo konfigurisali klaster, ali već imamo funkcionalne VPN gatewaye koji se mogu pojedinačno povezati preko FQDN ili IP-a.

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Vidimo povezanog klijenta u tabeli rutiranja prvog ASA:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Kako bi cijeli naš VPN klaster i cijela korporativna mreža znali put do našeg klijenta, prefiks klijenta ćemo preraspodijeliti u dinamički protokol za usmjeravanje, na primjer 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

    Sada imamo rutu do klijenta od drugog ASA-2 gatewaya i korisnici povezani na različite VPN gatewaye unutar klastera mogu, na primjer, komunicirati direktno preko korporativnog softphonea, kao i vraćati promet iz resursa koje korisnik traži. dođite na željeni VPN gateway:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

  5. Prijeđimo na konfiguriranje klastera za balansiranje opterećenja.

    Adresa 192.168.31.40 će se koristiti kao virtuelna IP adresa (VIP - svi VPN klijenti će se inicijalno povezivati ​​na nju), sa ove adrese će Master klaster izvršiti REDIRECT na manje opterećen čvor klastera. Ne zaboravite napisati naprijed i nazad DNS zapis kako za svaku eksternu adresu/FQDN svakog čvora klastera, tako i za 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)#

    • Provjeravamo rad klastera sa dva povezana klijenta:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    • Učinimo korisničko iskustvo praktičnijim sa automatski učitanim AnyConnect profilom preko ASDM-a.

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Profilu dajemo naziv na prikladan način i povezujemo našu politiku grupe s njim:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Nakon sljedećeg povezivanja klijenta, ovaj profil će se automatski preuzeti i instalirati u AnyConnect klijentu, pa ako se trebate povezati, samo ga odaberite sa liste:

    Postavljanje ASA VPN klastera za balansiranje opterećenja

    Pošto smo kreirali ovaj profil samo na jednom ASA koristeći ASDM, ne zaboravite da ponovite korake na drugim ASA u klasteru.

Zaključak: Stoga smo brzo postavili klaster od nekoliko VPN gatewaya s automatskim balansiranjem opterećenja. Dodavanje novih čvorova u klaster je jednostavno, uz jednostavno horizontalno skaliranje postavljanjem novih ASAv virtualnih mašina ili korištenjem hardverskih ASA-ova. AnyConnect klijent bogat funkcijama može uvelike poboljšati sigurnu udaljenu vezu korištenjem Držanje (državne procjene), najefikasnije se koristi u sprezi sa sistemom centralizovane kontrole i računovodstva pristupa Identity Services Engine.

izvor: www.habr.com

Dodajte komentar