ASA VPN Load-Balancing klastera izveidošana

Š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. Var iegūt arī ASAv uz testēšanu (Virtuālā ASA hipervizoriem VMWare/Hyper-V/KVM un mākoņplatformām AWS/Azure) no autorizētiem partneriem vai sazinoties ar Cisco pārstāvjiem, kas strādā ar jums..

AnyConnect COVID-19 licenču izsniegšanas procedūra ir aprakstīta šeit.

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.

Sīkāka informācija par tehnoloģiju šeit

Dotā piemēra loģiskā topoloģija:

ASA VPN Load-Balancing klastera izveidošana

Sākotnējā izvietošana:

  1. Izvietojam no attēla nepieciešamo ASAv šablonu (ASAv5/10/30/50) instance.

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

  3. 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ā: https://software.cisco.com/ -> Smart Software Licensing
    • Atvērtajā logā pēc tam nospiediet pogu New Token

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

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

    ASA VPN Load-Balancing klastera izveidošana

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

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

    ASA VPN Load-Balancing klastera izveidošana

    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:

    ASA VPN Load-Balancing klastera izveidošana

    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

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster