Namestitev klasterja ASA VPN Load-Balancing

V tem članku bi želel predstaviti korak za korakom navodila, kako hitro vzpostaviti trenutno najbolj razširljivo shemo. Remote-Access VPN dostopa na osnovi AnyConnect in Cisco ASA – VPN Load Balancing Cluster.

Uvod: Mnoga podjetja po svetu zaradi trenutne situacije s COVID-19 uvajajo ukrepe za prehod svojih zaposlenih na delo na daljavo. Zaradi množičnega prehoda na oddaljeno delo se obremenitev obstoječih VPN prehodov podjetij kritično povečuje, zato je nujno potrebno hitro razširjanje. Po drugi strani pa se mnoga podjetja prisiljena na hitro usvajanje koncepta oddaljenega dela.

Da bi pomagala podjetjem v najkrajšem možnem času uvesti udoben, varen in razširljiv VPN dostop za zaposlene, podjetje Cisco nudi do 13 tednov licenc za večnamenskega SSL-VPN odjemalca AnyConnect. Lahko tudi preizkusite ASAv (Virtualna ASA za hipervizorje VMWare/Hypver-V/KVM in oblačnih platform AWS/Azure) pri pooblaščenih partnerjih ali se obrnite na predstavnike Cisco, ki sodelujejo z vami..

Postopek izdajanja licenc AnyConnect COVID-19 je opisan tukaj..

Pripravil sem korak za korakom navodila preproste različice vzpostavitve VPN Load-Balancing klasterja kot najbolj razširljive tehnologije VPN.

Spodnji primer bo precej enostaven z vidika uporabljenih algoritmov overjanja in avtorizacije, vendar bo dober za hiter zagon (kar mnogim trenutno zelo primanjkuje) z možnostjo poglobljene prilagoditve svojim potrebam v procesu vzpostavitve.

Kratke informacije: Tehnologija VPN Load Balancing Cluster ni failover in ne funkcija klasterizacije v njenem naravnem pomenu; le to tehnologijo je mogoče združiti z različnimi modeli ASA (z določenimi omejitvami) za uravnoteženje obremenitve Remote-Access VPN povezav. Sinhronizacija sej in konfiguracij med vozli klasterja ni prisotna, prav tako pa je omogočeno samodejno uravnoteženje obremenitve VPN povezav in zagotavljanje odpornosti povezav VPN, dokler ostane vsaj ena aktivna vozlišča v klasterju. Obremenitev v klasterju se samodejno uravnava glede na obremenitev vozlišč po številu VPN sej.

Za zagotavljanje odpornosti določenih vozlišč gruč, če je to potrebno, je mogoče uporabiti filever, tako da bo aktivna povezava obdelana s primarnim vozliščem fileverja. Filever ni nujen pogoj za zagotavljanje odpornosti znotraj Load-Balancing gruč; sama gruč v primeru napake vozlišča prenese uporabniško sejo na drugo aktivno vozlišče, vendar brez ohranjanja statusa povezave, kar pravzaprav zagotavlja filever. Zato je mogoče po potrebi kombinirati ti dve tehnologiji.

VPN Load-Balancing gruč lahko vsebuje več kot dve vozli.

VPN Load-Balancing gruč je podprt na ASA 5512-X in više.

Ker je vsaka ASA v okviru VPN Load-Balancing gruč neodvisna enota z vidika nastavitev, vse faze konfiguracije izvajamo individualno na vsakem posameznem napravah.

Podrobnosti o tehnologiji so tukaj

Logična topologija navedenega primera:

Namestitev klasterja ASA VPN Load-Balancing

Prvotna namestitev:

  1. Postavimo instance ASAv želenih predlog iz slike (ASAv5/10/30/50).

  2. Dodelimo vmesnike INSIDE/OUTSIDE enakim VLAN-om (Outside v svojem VLAN-u, INSIDE v svojem, vendar skupnem okviru gruč, glejte topologijo), pomembno je, da so vmesniki iste vrste v istem L2 segmentu.

  3. Licenciranje:

    • Ob namestitvi ASAv ne bo imela nobenih licenc in bo omejena na zmogljivost 100 kbit/s.
    • Za namestitev licence morate ustvariti žeton v svojem Smart-Account računu: https://software.cisco.com/ -> Pametno licenciranje programske opreme
    • V oknu, ki se odpre, pritisnite gumb Nov žeton

    Namestitev klasterja ASA VPN Load-Balancing

    • Prepričajte se, da je v odprtem oknu aktiven označevalnik in da je potrjen Dovoli izvoz nadzorovanih funkcionalnosti… Brez tega aktivnega polja ne boste mogli uporabljati funkcij močnega šifriranja in tako VPN. Če to polje ni aktivno, se obrnite na svojo ekipo za podporo strankam s prošnjo za aktivacijo.

    Namestitev klasterja ASA VPN Load-Balancing

    • Po pritisku na gumb Ustvari žeton, bo ustvarjen žeton, ki ga bomo uporabili za pridobitev licence za ASAv, kopirajmo ga:

    Namestitev klasterja ASA VPN Load-Balancing

    • Ponovimo korake C, D, E za vsak razporejen ASAv.
    • Da bo lažje kopirati žeton, začasno omogočimo telnet. Nastavimo vsako ASA (primer spodaj prikazuje nastavitve na ASA-1). telnet z outside ne deluje, če je nujno potrebno, spremenite security-level na 100 na outside, nato ga vrnite nazaj.

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

    • Za registracijo žetona v oblaku Smart-Account je potrebno omogočiti dostop do interneta za ASA, podrobnosti tukaj.

    Kratko povedano, ASA potrebujemo:

    • dostop preko HTTPS do interneta;
    • sinhronizacijo časa (najbolje preko NTP);
    • vpisan DNS strežnik;
      • Vstopimo preko telnet na naš ASA in izvedemo nastavitve za aktivacijo licence preko 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 
    !
    ! Preverimo delovanje 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:
    !!!!!
    !
    ! Preverimo sinhronizacijo 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
    !
    ! Nastavimo konfiguracijo naše ASAv za Smart-Licensing (v skladu z vašim profilom, v mojem primeru 100M za primer)
    !
    ciscoasa(config)# license smart
    ciscoasa(config-smart-lic)# feature tier standard
    ciscoasa(config-smart-lic)# throughput level 100M
    !
    ! Če je potrebno, omogočite dostop do interneta preko proxy-a, uporabite naslednji blok ukazov:
    !call-home
    !  http-proxy ip_address port port
    !
    ! Nato prilepimo žeton, kopiran iz portala Smart-Account (<token>), in registriramo licenco
    !
    ciscoasa(config)# end
    ciscoasa# license smart register idtoken <token>

    • Preverimo, ali je naprava uspešno registrirala licenco in opcije šifriranja so na voljo:

    Namestitev klasterja ASA VPN Load-Balancing

    Namestitev klasterja ASA VPN Load-Balancing

  4. Nastavimo osnovni SSL-VPN na vsakem prehodu

    • Nato nastavimo dostop preko SSH in 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
    !
    ! Aktiviramo HTTPS strežnik za ASDM na vratih 445, da se ne prekrivamo z SSL-VPN portalom
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • Za delovanje ASDM je najprej potrebno prenesti ga s spletne strani cisco.com, v mojem primeru je to naslednja datoteka:

    Namestitev klasterja ASA VPN Load-Balancing

    • Za delovanje AnyConnect odjemalca je treba prenesti sliko za vsak ASA za vsak uporabljeni namizni operacijski sistem (načrtovane uporabe Linux/Windows/MAC), potreben bo datoteka z Pakiet za uvod v glavno omrežje v imenu:

    Namestitev klasterja ASA VPN Load-Balancing

    • Prenesene datoteke lahko naložite, na primer, na FTP strežnik in naložite na vsak posamezni ASA:

    Namestitev klasterja ASA VPN Load-Balancing

    • Nastavljamo ASDM in certifikat Self-Signed za SSL-VPN (v produkciji je priporočljivo uporabiti zanesljiv certifikat). Ustanovljen FQDN virtualnega naslova grozda (vpn-demo.ashes.cc), pa tudi vsak FQDN, povezan z zunanjim naslovom vsakega vozlišča grozda, mora biti razrešen v zunanjih DNS conah na IP naslov vmesnika OUTSIDE (ali na mapped naslov, če se uporablja preusmeritev porta udp/443 (DTLS) in tcp/443(TLS)). Podrobne informacije o zahtevah za certifikat so navedene v razdelku Preverjanje certifikata dokumentaciji.

    !
    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
    % Fully qualified domain name v certifikatu bo: vpn-demo.ashes.cc
    Generirati Self-Signed Certifikat? [yes/no]: yes
    vpn-demo-1(config)# 
    !
    vpn-demo-1(config)# sh cry ca certificates 
    Certifikat
    Status: Na voljo
    Serialna številka certifikata: 4d43725e
    Uporaba certifikata: Splošna uporaba
    Tip javnega ključa: RSA (4096 bitov)
    Algoritem podpisa: SHA256 z RSA šifriranjem
    Ime izdajatelja:
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Ime subjekta:
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Datum veljavnosti:
    začetni datum: 00:16:17 MSK Mar 19 2020
    končni datum: 00:16:17 MSK Mar 17 2030
    Shranjevanje: config
    Povezani Trustpoints: SELF 
    
    CA certifikat
    Status: Na voljo
    Serialna številka certifikata: 0509
    Uporaba certifikata: Splošna uporaba
    Tip javnega ključa: RSA (4096 bitov)
    Algoritem podpisa: SHA1 z RSA šifriranjem
    Ime izdajatelja:
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Ime subjekta:
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Datum veljavnosti:
    začetni datum: 21:27:00 MSK Nov 24 2006
    končni datum: 21:23:33 MSK Nov 24 2031
    Shranjevanje: config
    Povezani Trustpoints: _SmartCallHome_ServerCA               

    • Za preverjanje delovanja ASDM ne pozabite navesti vrata, na primer:

    Namestitev klasterja ASA VPN Load-Balancing

    • Izvedli bomo osnovne nastavitve tunela:
    • Upravljali bomo dostop do korporativnega omrežja prek tunela, internet pa bomo pustili neposredno (ni najbolj varna metoda v odsotnosti zaščite na povezani napravi, možno je vdiranje prek okužene naprave in uhajanje korporativnih podatkov, možnost split-tunnel-policy tunnelall bo dovolil ves promet naprave skozi tunel. Kljub temu Split-Tunnel omogoča razbremenitev VPN prehoda in obdelavo internetskega prometa naprave)
    • Dodelili bomo napravam v tunelu naslove iz podomrežja 192.168.20.0/24 (pula od 10 do 30 naslovov (za vozlišče #1)). Na vsakem vozlišču VPN klasterja mora biti svoj niz.
    • Izvedeli bomo osnovno avtentikacijo z lokalnim uporabnikom na ASA (to ni priporočljivo, to je najpreprostejša metoda), bolje je izvajati avtentikacijo preko LDAP/RADIUS, še boljše je povezati Multi-Factor Authentication (MFA), na primer 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): V zgoraj navedenem primeru smo uporabili lokalnega uporabnika na MSE za avtentikacijo oddaljenih uporabnikov, kar se seveda, razen v laboratoriju slabo uporablja. Prikazal bom primer, kako hitro prilagoditi nastavitev za avtentikacijo na RADIUS strežniku, za primer pa je upoštevan 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 
    !

    Ta integracija je omogočila ne samo hitro integracijo postopka avtentikacije s storitvijo katalogov AD, temveč tudi razlikovanje pripadnosti povezanega računalnika k AD, razumevanje ali gre za poslovno ali osebno napravo ter oceno stanja povezane naprave.

    Namestitev klasterja ASA VPN Load-Balancing

    Namestitev klasterja ASA VPN Load-Balancing

    • Nastavili bomo Transparent NAT, da promet med odjemalcem in viri omrežja podjetja ne bo preusmerjen:

    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): Da naše stranke usmerimo v Internet preko ASA (pri uporabi tunnelall za opcije) z uporabo PAT-a, prav tako pa se povezati preko istega vmesnika OUTSIDE, od koder se povezujejo, je treba izvesti naslednje nastavitve

    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 
    !

    • Zelo pomembno je, da ob uporabi gruče omogočimo notranji mreži, da razume, na katero ASA usmeriti povratni promet k uporabnikom; za to je potrebno izvesti redistribucijo poti /32 naslovov, ki jih prejemajo stranke.
      Trenutno še nismo nastavili gruče, vendar imamo že delujoče VPN prehode, preko katerih se lahko posamezno povežete po FQDN ali IP.

    Namestitev klasterja ASA VPN Load-Balancing

    Vidimo povezano stranko v tabeli usmerjanja prve ASA:

    Namestitev klasterja ASA VPN Load-Balancing

    Da bo ves naš VPN kluster in celotna podjetniška mreža vedela pot do naše stranke, bomo izvedli redistribucijo odjemalskega prefiksa v protokol dinamičnega usmerjanja, na primer 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

    Sedaj imamo pot do stranke z drugega prehoda ASA-2 in uporabniki, povezani na različne VPN prehode v okviru gruče, lahko, na primer, komunicirajo prek podjetniške programske opreme neposredno; ravno tako bo povratni promet od zahtevanih virov prišel na pravšnji VPN prehod:

    Namestitev klasterja ASA VPN Load-Balancing

  5. Prehajamo k nastavitvi Load-Balancing za kluster.

    Naslov 192.168.31.40 bo služil kot Virtual IP (VIP — na njega se bodo primarno povezovali vsi VPN uporabniki), iz tega naslova bo Master skupine izvajal REDIRECT na manj obremenjeno enoto gruče. Ne pozabite zapisati direktno in obratno DNS zapisovanje tako za vsak zunanji naslov/FQDN vsake enote gruče kot tudi 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)#

    • Preverjamo delovanje gruče s tremi povezanimi strankami:

    Namestitev klasterja ASA VPN Load-Balancing

    • Zagotavljamo, da bo izkušnja stranke bolj prijetna z avtomatskim nalaganjem profila AnyConnect prek ASDM.

    Namestitev klasterja ASA VPN Load-Balancing

    Profil poimenujemo na priročen način in ga povezujemo z našo skupinsko politiko:

    Namestitev klasterja ASA VPN Load-Balancing

    Po naslednjem povezovanju stranke bo ta profil samodejno prenesen in nameščen v odjemalcu AnyConnect, tako da ga bo mogoče v prihodnosti preprosto izbrati s seznama:

    Namestitev klasterja ASA VPN Load-Balancing

    Ker smo s pomočjo ASDM ustvarili ta profil samo na eni ASA napravi, ne pozabite ponoviti istega postopka na drugih ASA napravah v gruči.

Izvajanje: Tako smo hitro postavili gručno okolje s več VPN vrati z avtomatskim uravnoteženjem obremenitve. Dodajanje novih vozlišč v gruče ni težavno, kar omogoča preprosto horizontalno širjenje z razporeditvijo novih virtualnih strojev ASAv ali uporabo strojnih ASA. Funkcionalni odjemalec AnyConnect lahko znatno razširi možnosti varnega oddaljenega dostopa z uporabo funkcije Posture (ocenjevanje stanja), ki se najprimernejše uporablja v povezavi s sistemom za centralizirano upravljanje in obvladovanje dostopa Identity Services Engine.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster