Postavljanje ASA VPN klastera za uravnoteženje opterećenja

U ovom bih članku želio pružiti upute korak po korak o tome kako možete brzo implementirati trenutno najskalabilniju shemu. VPN s udaljenim pristupom temeljeno na pristupu AnyConnect i Cisco ASA - VPN klaster za uravnoteženje opterećenja.

Uvod: Mnoge tvrtke diljem svijeta, s obzirom na trenutnu situaciju s COVID-19, ulažu napore da svoje zaposlenike prebace na daljinski rad. Zbog masovnog prijelaza na daljinski rad, opterećenje postojećih VPN pristupnika tvrtki kritično raste i potrebna je vrlo brza sposobnost njihovog skaliranja. S druge strane, mnoge tvrtke prisiljene su na brzinu svladati koncept rada na daljinu od nule.

Kako bi pomogao tvrtkama u postizanju praktičnog, sigurnog i skalabilnog VPN pristupa za zaposlenike u najkraćem mogućem vremenu, Cisco licencira AnyConnect SSL VPN klijent bogat značajkama do 13 tjedana. Također možete uzeti ASAv za testiranje (virtualni ASA za VMWare/Hyper-V/KVM hipervizore i AWS/Azure platforme u oblaku) od ovlaštenih partnera ili kontaktiranjem Cisco predstavnika koji rade s vama.

Ovdje je opisan postupak izdavanja AnyConnect COVID-19 licenci.

Pripremio sam korak po korak vodič za jednostavnu implementaciju VPN Load-Balancing Clustera 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) s mogućnošću dubinske prilagodbe vašim potrebama tijekom implementacije postupak.

Kratke informacije: VPN Load Balancing Cluster tehnologija nije failover niti funkcija klasteriranja u izvornom smislu, ova tehnologija može kombinirati potpuno različite ASA modele (uz određena ograničenja) kako bi se uravnotežilo opterećenje Remote-Access VPN veza. Ne postoji sinkronizacija sesija i konfiguracija između čvorova takvog klastera, ali je moguće automatski balansirati opterećenje VPN veza i osigurati toleranciju na pogreške VPN veza sve dok u klasteru ne ostane barem jedan aktivan čvor. Opterećenje u klasteru se automatski balansira ovisno o radnom opterećenju čvorova prema broju VPN sesija.

Za preusmjeravanje određenih čvorova klastera (ako je potrebno), može se koristiti filer, tako da će aktivnom vezom upravljati primarni čvor filera. Fileover nije nužan uvjet za osiguranje tolerancije na pogreške unutar Load-Balancing klastera, sam klaster će u slučaju kvara čvora prenijeti korisničku sesiju na drugi živi čvor, ali bez spremanja statusa veze, što je upravo koju osigurava podnositelj. Sukladno tome, 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 uravnoteženje opterećenja podržan je na ASA 5512-X i novijim verzijama.

Budući da je svaki ASA unutar VPN Load-Balancing klastera nezavisna jedinica u pogledu postavki, sve konfiguracijske korake provodimo pojedinačno na svakom pojedinom uređaju.

Pojedinosti o tehnologiji ovdje

Logička topologija navedenog primjera:

Postavljanje ASA VPN klastera za uravnoteženje opterećenja

Primarna implementacija:

  1. Iz slike postavljamo ASAv instance predložaka koji su nam potrebni (ASAv5/10/30/50).

  2. INSIDE / OUTSIDE sučelja dodjeljujemo istim VLAN-ovima (Outside u svom VLAN-u, INSIDE u svom, ali općenito unutar klastera, vidi topologiju), važno je da su sučelja istog tipa u istom L2 segmentu.

  3. Licence:

    • Trenutno ASAv instalacija neće imati nikakve licence i bit će ograničena na 100 kbps.
    • Da biste instalirali licencu, trebate generirati token na svom pametnom računu: https://software.cisco.com/ -> Pametno licenciranje softvera
    • U prozoru koji se otvori kliknite gumb Novi token

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Provjerite je li u prozoru koji se otvori aktivno polje i označena kvačica Dopusti funkcionalnost kontroliranu izvozom… Bez aktivnog ovog polja nećete moći koristiti funkcije jake enkripcije i, sukladno tome, VPN. Ako ovo polje nije aktivno, obratite se svom timu za račun sa zahtjevom za aktivaciju.

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Nakon pritiska na tipku Napravite token, stvorit će se token koji ćemo koristiti za dobivanje licence za ASAv, kopirajte ga:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Ponovite korake C, D, E za svaki postavljeni ASAv.
    • Da bismo olakšali kopiranje tokena, dopustimo privremeno telnet. Konfigurirajmo svaki ASA (primjer u nastavku ilustrira postavke na ASA-1). telnet ne radi s vanjskim, ako ga stvarno trebate, promijenite razinu sigurnosti na 100 na vanjski, a zatim ga vratite natrag.

    !
    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 registrirali token u oblaku Smart-Account, morate osigurati pristup internetu za ASA, detalji ovdje.

    Ukratko, ASA je potreban:

    • pristup Internetu putem HTTPS-a;
    • sinkronizacija vremena (točnije, putem NTP-a);
    • registrirani DNS poslužitelj;
      • Telnetom se povezujemo s našim ASA-om i postavljamo postavke za aktivaciju licence putem 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 je uređaj uspješno registrirao licencu i da li su dostupne opcije šifriranja:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

  4. Postavite osnovni SSL-VPN na svakom pristupniku

    • 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 s web stranice cisco.com, u mom slučaju to je sljedeća datoteka:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Da bi AnyConnect klijent radio, trebate prenijeti sliku na svaki ASA za svaki korišteni desktop klijent OS (planiran za korištenje Linux / Windows / MAC), trebat će vam datoteka s Paket za implementaciju glavnog terminala U naslovu:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Preuzete datoteke mogu se prenijeti, na primjer, na FTP poslužitelj i prenijeti na svaki pojedinačni ASA:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Konfiguriramo ASDM i samopotpisani certifikat za SSL-VPN (preporuča se korištenje pouzdanog certifikata u proizvodnji). Postavljeni FQDN adrese virtualnog klastera (vpn-demo.ashes.cc), kao i svaki FQDN povezan s vanjskom adresom svakog čvora klastera, mora razriješiti u vanjskoj DNS zoni IP adresu VANJSKOG sučelja (ili na mapiranu adresu ako se koristi port prosljeđivanje udp/443 (DTLS) i tcp/443(TLS)). Detaljne informacije o zahtjevima za certifikat navedene su u odjeljku Potvrda certifikata dokumentacija.

    !
    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 radi li ASDM, na primjer:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    • Izvršimo osnovne postavke tunela:
    • Učinimo korporativnu mrežu dostupnom kroz tunel i pustimo Internet da ide izravno (nije najsigurnija metoda 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 pustit će sav promet domaćina u tunel. Štoviše split-tunel omogućuje rasterećenje VPN pristupnika i ne obrađuje internetski promet hosta)
    • Izdajmo adrese iz podmreže 192.168.20.0/24 hostovima u tunelu (pool od 10 do 30 adresa (za čvor #1)). Svaki čvor VPN klastera mora imati vlastiti bazen.
    • Provest ćemo osnovnu provjeru autentičnosti s lokalno stvorenim korisnikom na ASA (Ovo se ne preporučuje, ovo je najlakši način), bolje je izvršiti provjeru autentičnosti putem LDAP/RADIJUS, ili još bolje, kravatu Višefaktorska provjera autentičnosti (MFA)Npr 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 laboratoriju, slabo primjenjivo. Dat ću primjer kako brzo prilagoditi postavku za autentifikaciju RADIUS poslužitelj, korišten kao primjer 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 omogućila je ne samo brzu integraciju postupka provjere autentičnosti s AD imeničkom uslugom, već i razlikovanje pripada li povezano računalo AD-u, razumijevanje je li ovaj uređaj korporativni ili osobni te procjenu statusa povezanog uređaja .

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

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

    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 tunnelall opcije) korištenjem PAT-a, kao i izlaz preko istog OUTSIDE sučelja s kojeg su povezani, morate napraviti sljedeće postavke

    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 
    !

    • Kada koristite klaster, iznimno je važno omogućiti internoj mreži da razumije koji ASA usmjeriti povratni promet korisnicima, za to morate redistribuirati rute / 32 adrese izdane klijentima.
      Trenutačno još nismo konfigurirali klaster, ali već imamo VPN pristupnike koji rade i mogu se pojedinačno spajati putem FQDN-a ili IP-a.

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    Vidimo povezanog klijenta u tablici usmjeravanja prvog ASA-a:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    Kako bi cijeli naš VPN klaster i cijela korporativna mreža znali rutu do našeg klijenta, mi ćemo redistribuirati prefiks klijenta u dinamički protokol usmjeravanja, 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 s drugog ASA-2 pristupnika i korisnici spojeni na različite VPN pristupnike unutar klastera mogu, na primjer, komunicirati izravno putem korporativnog softverskog telefona, kao i vraćati promet iz resursa koje je korisnik tražio. doći do željenog VPN pristupnika:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

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

    Adresa 192.168.31.40 koristit će se kao Virtual IP (VIP - svi VPN klijenti će se inicijalno spojiti na nju), s ove adrese Master klaster će napraviti REDIRECT na manje opterećeni čvor klastera. Ne zaboravite pisati naprijed i nazad DNS zapis kako za svaku vanjsku 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 s dva povezana klijenta:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

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

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    Imenujemo profil na prikladan način i povezujemo s njim našu grupnu politiku:

    Postavljanje ASA VPN klastera za uravnoteženje 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 s popisa:

    Postavljanje ASA VPN klastera za uravnoteženje opterećenja

    Budući da smo kreirali ovaj profil samo na jednom ASA-u koristeći ASDM, ne zaboravite ponoviti korake na ostalim ASA-ovima u klasteru.

Zaključak: Stoga smo brzo postavili klaster od nekoliko VPN pristupnika s automatskim balansiranjem opterećenja. Dodavanje novih čvorova u klaster je jednostavno, uz jednostavno horizontalno skaliranje postavljanjem novih ASAv virtualnih strojeva ili korištenjem hardverskih ASA-ova. Značajkama bogat AnyConnect klijent može uvelike poboljšati sigurnu udaljenu vezu korištenjem Držanje (navedite procjene), najučinkovitije se koristi u kombinaciji sa sustavom centralizirane kontrole i računovodstva pristupa Identity Services Engine.

Izvor: www.habr.com

Dodajte komentar