Šajā rakstā es vēlētos sniegt soli pa solim instrukcijas, kā ātri izveidot visvairāk mērogojamo shēmu. Remote-Access VPN piekļuve, kas balstīta uz AnyConnect un Cisco ASA – VPN Load Balancing Klasteris.
Ievads: Daudzas uzņēmumi visā pasaulē, ņemot vērā pašreizējo COVID-19 situāciju, cenšas pārcelt savus darbiniekus uz attālinātu darba režīmu. Masveida pārejas uz attālinātu darbu dēļ būtiski pieaug slodze uz esošajiem uzņēmumu VPN vārtiem, un ir nepieciešama ļoti ātra iespēja to paplašināt. No otras puses, daudzi uzņēmumi steidzami apgūst jaunu jēdzienu - attālināts darbs.
Lai palīdzētu uzņēmumiem īstenot ērtu, drošu un mērogojamu VPN piekļuvi darbiniekiem pēc iespējas īsākā laikā, uzņēmums Cisco piedāvā līdz 13 nedēļām licences daudzfunkcionālam SSL-VPN klientam AnyConnect. .
.
Es sagatavoju soli pa solim instrukcijas vienkāršai VPN Load-Balancing klastera izveidošanai kā visvairāk mērogojamai VPN tehnoloģijai.
Zemāk minētais piemērs būs salīdzinoši vienkāršs attiecībā uz izmantotajiem autentifikācijas un autorizācijas algoritmiem, bet tas būs labs variants ātrai uzsākšanai (ko šobrīd daudziem ļoti trūkst) ar iespēju padziļināti pielāgot to savām vajadzībām izveides procesā.
Īsi dati: VPN Load Balancing Klastera tehnoloģija nav failover vai klasterizācijas funkcija tās nativā izpratnē; šo tehnoloģiju var izmantot, lai apvienotu pavisam atšķirīgas ASA modeļus (ar noteiktiem ierobežojumiem) slodzes balansēšanai Remote-Access VPN savienojumos. Sesiju un konfigurāciju sinhronizācija starp šī klastera mezgliem nav pieejama, tomēr ir iespējama automātiska VPN savienojumu slodzes balansēšana un savienojumu pieejamības nodrošināšana, kamēr klasterī paliek vismaz viens aktīvs mezgls. Slodze klasterī tiek automātiski balansēta atkarībā no mezglu noslogojuma attiecībā uz VPN sesijām.
Lai nodrošinātu konkrētu klastera mezglu noturību (ja tas nepieciešams), var izmantot failover, tādējādi aktīvo savienojumu apstrādās failover primārais mezgls. Failover nav noteicošais priekšnosacījums noturības nodrošināšanai Load-Balancing klasterī; pats klasteris, ja mezgls atsakās, pārsūtīs lietotāja sesiju uz citu dzīvu mezglu, tomēr bez savienojuma statusa saglabāšanas, ko nodrošina tieši failover. Tātad, ja nepieciešams, var apvienot šīs divas tehnoloģijas.
VPN Load-Balancing klasteris var saturēt vairāk nekā divus mezglus.
VPN Load-Balancing klasteri atbalsta ASA 5512-X un augstāki.
Tā kā katrs ASA VPN Load-Balancing klasterī ir neatkarīga vienība attiecībā uz veiktajiem iestatījumiem, tad visus konfigurācijas posmus mēs veicam individuāli uz katra atsevišķā ierīces.
Dotā piemēra loģiskā topoloģija:

Sākotnējā izvietošana:
Izvietojam no attēla nepieciešamo ASAv šablonu (ASAv5/10/30/50) instance.
Piešķiram INSIDE/OUTSIDE saskarnes uz vienādām VLAN (Outside savā VLAN, INSIDE savā, taču kopīgā klastera ietvaros, skat. topoloģiju), svarīgi, lai viena veida saskarnes atrastos vienā L2 segmentā.
Licences:
- ASAv instalēšanas brīdī nebūs nevienas licences un būs ierobežota ar 100kbit/sek veiktspēju.
- Lai uzstādītu licenci, jums nepieciešams ģenerēt token jūsu Smart-Account kabinetā: -> Smart Software Licensing
- Atvērtajā logā pēc tam nospiediet pogu New Token

- Pārliecinieties, ka atvērtajā logā ir aktīvs lauks un ir atzīmēta ķeksis Allow export-controlled functionality… Bez šī aktīvā lauka jūs nevarēsiet izmantot spēcīgas šifrēšanas funkcijas un attiecīgi VPN. Ja šis lauks nav aktīvs, lūdzu, sazinieties ar savu konta komandu, lai pieprasītu aktivizāciju.

- Pēc pogas nospiešanas Create Token, tiks izveidots token, ko mēs izmantosim ASAv licences iegūšanai, to kopēsim:

- Atkārtosim soļus C,D,E katram izvietotajam ASAv.
- Lai vienkāršotu token kopēšanu, pagaidu režīmā ļausim telnet. Konfigurēsim katru ASA (zemāk redzamajā piemērā ir ilustrēti iestatījumi uz ASA-1). telnet no outside nedarbojas, ja tas ir ļoti nepieciešams, mainiet security-level uz 100 uz outside, tad atgrieziet atpakaļ.
! 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 !- Lai reģistrētu tokenu Smart-Account mākoņī, ir nepieciešams nodrošināt ASA piekļuvi internetam, .
Īsumā, ASA nepieciešams:
- pieejamība caur HTTPS internetā;
- laika sinhronizācija (precīzāk pa NTP);
- norādīts DNS servers;
- Piekļūstam mūsu ASA caur telnet un veicam iestatījumus licences aktivizēšanai caur 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 ! ! Pārbaudām DNS darbību: ! 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: !!!!! ! ! Pārbaudām NTP sinhronizāciju: ! 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 ! ! Iestatām mūsu ASAv konfigurāciju Smart-Lisencēšanai (saskaņā ar jūsu profilu, manā gadījumā 100M piemēram) ! ciscoasa(config)# license smart ciscoasa(config-smart-lic)# feature tier standard ciscoasa(config-smart-lic)# throughput level 100M ! ! Ja nepieciešams, varam konfigurēt piekļuvi internetam caur proksi: izmantojiet sekojošu komandu bloku: !call-home ! http-proxy ip_address port port ! ! Pēc tam ievietojam no Smart-Account portā kopēto tokenu (<token>) un reģistrējam licenci ! ciscoasa(config)# end ciscoasa# license smart register idtoken <token>- Pārbaudām, vai ierīce veiksmīgi reģistrējusi licenci un šifrēšanas iespējas ir pieejamas:


Iestādam pamata SSL-VPN katrā vārtejas
- Tālāk konfigurējam piekļuvi caur SSH un 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 ! ! Ieslēdzam HTTPS serveri ASDM uz porta 445, lai nesaskartos ar SSL-VPN portālu ! vpn-demo-1(config)# http server enable 445 !- Lai strādātu ar ASDM, vispirms jāielādē tas no cisco.com vietnes, manā gadījumā tas ir šis fails:

- AnyConnect klienta darbam nepieciešams lejupielādēt uz katras ASA attēlu katrai izmantotajai darbvirsmas operētājsistēmai (plānotajām izmantot Linux/Windows/MAC) būs nepieciešams fails ar Headend Deployment Package nosaukumu:

- Lejupielādētie faili var tikt augšupielādēti, piemēram, uz FTP serveri un ielādēti katrā atsevišķā ASA:

- Konfigurējam ASDM un Self-Signed sertifikātu SSL-VPN (ražošanas vidē ieteicams izmantot uzticamu sertifikātu). Uzstādītais FQDN virtuaālā adrese klasterim (vpn-demo.ashes.cc), kā arī katrs FQDN, kas asociēts ar katras klastera mezgla ārējo adresi, jārezolvē ārējā DNS zonā uz OUTSIDE saskarnes IP adresi (vai uz mapped adresi, ja tiek izmantota portu pārsūtīšana udp/443 (DTLS) un tcp/443 (TLS)). Detalizēta informācija par prasībām sertifikātam ir norādīta sadaļā Certificate Verification dokumentācijas.
! 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 % Sertifikātā norādītais pilnais domēna nosaukums būs: vpn-demo.ashes.cc Izveidot pašpārbaudītu sertifikātu? [yes/no]: yes vpn-demo-1(config)# ! vpn-demo-1(config)# sh cry ca certificates Sertifikāts Status: Pieejams Sertifikāta sērijas numurs: 4d43725e Sertifikāta izmantošana: Vispārējai lietošanai Publiskās atslēgas tips: RSA (4096 bišu) Parakstīšanas algoritms: SHA256 ar RSA šifrēšanu Izdotāja nosaukums: serialNumber=9A439T02F95 hostname=vpn-demo.ashes.cc cn=*.ashes.cc ou=ashes-lab o=ashes c=ru Subjekta nosaukums: serialNumber=9A439T02F95 hostname=vpn-demo.ashes.cc cn=*.ashes.cc ou=ashes-lab o=ashes c=ru Derīguma datums: sākuma datums: 00:16:17 MSK 19. marts 2020 beigu datums: 00:16:17 MSK 17. marts 2030 Glabāšana: config Saistītie uzticības punkti: SELF CA sertifikāts Status: Pieejams Sertifikāta sērijas numurs: 0509 Sertifikāta izmantošana: Vispārējai lietošanai Publiskās atslēgas tips: RSA (4096 bišu) Parakstīšanas algoritms: SHA1 ar RSA šifrēšanu Izdotāja nosaukums: cn=QuoVadis Root CA 2 o=QuoVadis Limited c=BM Subjekta nosaukums: cn=QuoVadis Root CA 2 o=QuoVadis Limited c=BM Derīguma datums: sākuma datums: 21:27:00 MSK 24. novembris 2006 beigu datums: 21:23:33 MSK 24. novembris 2031 Glabāšana: config Saistītie uzticības punkti: _SmartCallHome_ServerCA- Lai pārbaudītu ASDM darbību, neaizmirstiet norādīt portu, piemēram:

- Veiksim pamata tuneli konfigurāciju:
- Padarīsim korporatīvo tīklu pieejamu caur tuneli, bet internetu ļausim pāriet tieši (ne visdrošākais veids, ja nav aizsardzības līdzekļu pieslēgtajā hostā, iespējama iekļūšana caur inficētu hostu un korporatīvo datu noplūde, opcija split-tunnel-policy tunnelall noliks visu hosta datu satiksmi tunelī. Tomēr Split-Tunnel dod iespēju atbrīvot VPN vārtus un neapstrādāt hosta interneta satiksmi)
- Iesniegsim hostiem tunelī adreses no apakštīkla 192.168.20.0/24 (pools no 10 līdz 30 adresēm (mezglam #1)). Katram VPN klusteru mezglam jābūt savam līdzekļu baseinam.
- Veiksim pamata autentifikāciju ar lokāli izveidotu lietotāju ASA (to darīt nav ieteicams, tas ir visvienkāršākais veids), labāk veikt autentifikāciju caur LDAP/RADIUS, bet vēl labāk piesaistīt Multi-Factor Authentication (MFA), piemēram, 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 !- (OPCIONĀLI): Iepriekš minētajā piemērā mēs izmantojām lokālo lietotāju MSE, lai autentificētu attālinātos lietotājus, kas, protams, ir vāji piemērojams, izņemot laboratoriju. Es sniegšu piemēru par to, kā ātri pielāgot iestatījumus autentifikācijai uz RADIUS serveri, piemēram, izmantojot 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 !Šī integrācija ne tikai ļāva ātri integrēt autentifikācijas procedūru ar AD katalogu servisu, bet arī atšķirt pieslēgtā datora piederību AD, saprast, vai tas ir uzņēmuma iekārta vai personīga un novērtēt pieslēgtās iekārtas stāvokli.


- Veiksim Transparent NAT iestatīšanu, lai datplūsma starp klientu un uzņēmuma tīkla resursiem netiktu NAT-ota:
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- (OPCIONĀLI): Lai izlaistu mūsu klientus internetā caur ASA (izmantojot tunnelall Lai izmantotu opcijas ar PAT un izeju caur to pašu OUTSIDE interfeisu, no kura tie savienojas, nepieciešams veikt šādas iestatīšanas.
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 !- Ir ļoti svarīgi, izmantojot klasteri, ļaut iekšējai tīklam saprast, uz kuru ASA maršrutizēt atpakaļsaišu trafiku lietotājiem, tādēļ nepieciešams veikt maršrutu /32 adresu, ko saņem klienti, redistribūciju.
Šobrīd klasteri vēl neesam iestatījuši, bet mums jau ir funkcionējoši VPN vārti, kuriem var individuāli pievienoties, izmantojot FQDN vai IP.

Mēs redzam pievienoto klientu pirmās ASA maršrutēšanas tabulā:

Lai viss mūsu VPN klasteris un visa korporatīvā tīkla daļa zinātu maršrutu līdz mūsu klientam, veiksim klienta prefiksa redistribūciju dinamiskās maršrutēšanas protokolā, piemēram, 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-REDISTRIBUTETagad mums ir maršruts līdz klientam no otrā vārtiem ASA-2, un lietotāji, kas savienoti ar dažādiem VPN vārtiem klastera ietvaros, var, piemēram, tieši sazināties caur korporatīvo mīksto tālruņa lietojumprogrammu, kā arī atpakaļsaišu trafiks no pieprasītajiem resursiem tiks saņemts pareizajos VPN vārtos.

Pārejot pie Load-Balancing klastera iestatīšanas.
Adrese 192.168.31.40 tiks izmantota kā virtuālā IP (VIP — uz to primāri savienosies visi VPN klienti), no šīs adreses klastera Master veiks REDIRECT uz mazāk noslogoto klastera mezglu. Neaizmirstiet paredzēt tiešo un apgriezto DNS ierakstu kā katram ārējam adresam/FQDN katra mezgla klasterī, tā arī 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)#- Pārbaudām klastera darbību ar diviem savienotiem klientiem:

- Padarīsim klientu pieredzi ērtāku, automātiski ielādējot AnyConnect profilu caur ASDM.

Nosauksim profilu ērti un sasaistīsim ar to savu grupas politiku:

Nākamreiz, kad klients pieslēgsies, šis profils tiks automātiski lejupielādēts un instalēts AnyConnect klientā, tādējādi, ja nepieciešams pieslēgties, būs vienkārši jāizvēlas to no saraksta:

Tā kā mēs, izmantojot ASDM, izveidojām šo profilu tikai vienā ASA, neaizmirstiet atkārtot darbības uz pārējām ASA klastera.
Secinājums: Tādējādi mēs ātri izvietojām klasteri no vairākiem VPN vārtiem ar automātisku slodzes līdzsvarošanu. Pievienot jaunas mezglus klasterim ir vienkārši, iegūstot vienkāršu horizontālu mērogojamību, izvietojot jaunas ASAv virtuālās mašīnas vai izmantojot aparatūras ASA. Multifunkcionālais AnyConnect klients var ievērojami paplašināt drošu attālināto savienojumu iespējas, izmantojot Posture (stāvokļa novērtējums), visefektīvāk tiek izmantota kopā ar centralizētas piekļuves kontroles un uzskaites sistēmu Identity Services Engine.
Avots: habr.com


















