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. .
.
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.
Logična topologija navedenega primera:

Prvotna namestitev:
Postavimo instance ASAv želenih predlog iz slike (ASAv5/10/30/50).
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.
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: -> Pametno licenciranje programske opreme
- V oknu, ki se odpre, pritisnite gumb Nov žeton

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

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

- 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, .
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:


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:

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

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

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

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


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

Vidimo povezano stranko v tabeli usmerjanja prve ASA:

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-REDISTRIBUTESedaj 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:

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:

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

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

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:

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


















