ASA VPN apkrovos balansavimo klasterio diegimas

Šiame straipsnyje norėčiau pateikti nuoseklias instrukcijas, kaip galite greitai įdiegti šiuo metu labiausiai keičiamą schemą. Nuotolinės prieigos VPN pagrįsta prieiga AnyConnect ir Cisco ASA - VPN apkrovos balansavimo klasteris.

Įvadas: Daugelis įmonių visame pasaulyje, atsižvelgdamos į dabartinę situaciją dėl COVID-19, stengiasi perkelti savo darbuotojus dirbti nuotoliniu būdu. Dėl masinio perėjimo prie nuotolinio darbo esamų įmonių VPN šliuzų apkrova kritiškai didėja ir reikalinga labai greita galimybė juos išplėsti. Kita vertus, daugelis įmonių yra priverstos paskubomis įsisavinti nuotolinio darbo sąvoką nuo nulio.

Siekdama padėti įmonėms pasiekti patogią, saugią ir keičiamo dydžio VPN prieigą darbuotojams per trumpiausią įmanomą laiką, „Cisco“ licencijuoja „AnyConnect“ turintį SSL-VPN klientą iki 13 savaičių. Taip pat galite išbandyti ASAv (virtualią ASA, skirtą VMWare / Hyper-V / KVM hipervizoriams ir AWS / Azure debesies platformoms) iš įgaliotų partnerių arba susisiekę su Cisco atstovais, dirbančiais su jumis..

AnyConnect COVID-19 licencijų išdavimo procedūra aprašyta čia.

Aš parengiau nuoseklų vadovą, kaip paprastai įdiegti VPN apkrovos balansavimo grupę kaip labiausiai keičiamą VPN technologiją.

Žemiau pateiktas pavyzdys bus gana paprastas naudojamų autentifikavimo ir autorizacijos algoritmų atžvilgiu, tačiau bus geras pasirinkimas norint greitai pradėti (kurio šiuo metu daugeliui nepakanka) su galimybe nuodugniai prisitaikyti prie jūsų poreikių diegimo metu. procesas.

Trumpa informacija: VPN apkrovos balansavimo klasterio technologija nėra perkrovimas ir ne klasterizavimo funkcija savo gimtąja prasme, ši technologija gali derinti visiškai skirtingus ASA modelius (su tam tikrais apribojimais), kad būtų galima subalansuoti nuotolinės prieigos VPN ryšius. Tarp tokio klasterio mazgų nevyksta seansų ir konfigūracijų sinchronizavimas, tačiau galima automatiškai subalansuoti VPN ryšius ir užtikrinti VPN jungčių atsparumą gedimams, kol klasteryje liks bent vienas aktyvus mazgas. Klasterio apkrova automatiškai subalansuojama priklausomai nuo mazgų darbo krūvio pagal VPN seansų skaičių.

Konkrečių klasterio mazgų perkėlimui (jei reikia) gali būti naudojamas failas, todėl aktyvų ryšį tvarkys pirminis failo mazgas. Failų perkėlimas nėra būtina sąlyga norint užtikrinti atsparumą gedimams apkrovos balansavimo klasteryje, pats klasteris, mazgo gedimo atveju, perkels vartotojo seansą į kitą veikiantį mazgą, tačiau neišsaugos ryšio būsenos, kuri yra būtent pateikė pateikėjas. Atitinkamai, jei reikia, šias dvi technologijas galima sujungti.

VPN apkrovos balansavimo klasteryje gali būti daugiau nei du mazgai.

VPN apkrovos balansavimo grupė palaikoma ASA 5512-X ir naujesnėje versijoje.

Kadangi kiekviena VPN apkrovos balansavimo klasteryje esanti ASA yra nepriklausomas vienetas nustatymų požiūriu, visus konfigūravimo veiksmus atliekame atskirai kiekviename atskirame įrenginyje.

Technologijos detalės čia

Pateikto pavyzdžio loginė topologija:

ASA VPN apkrovos balansavimo klasterio diegimas

Pirminis diegimas:

  1. Iš vaizdo diegiame reikalingų šablonų (ASAv5/10/30/50) ASAv egzempliorius.

  2. INSIDE / OUTSIDE sąsajas priskiriame tiems patiems VLAN (išorėje savo VLAN, INSIDE savo, bet apskritai klasterio viduje, žr. topologiją), svarbu, kad to paties tipo sąsajos būtų tame pačiame L2 segmente.

  3. Licencijos:

    • Šiuo metu ASAv diegimas neturės jokių licencijų ir bus apribotas iki 100 kbps.
    • Norėdami įdiegti licenciją, išmaniojoje paskyroje turite sugeneruoti prieigos raktą: https://software.cisco.com/ -> Išmaniosios programinės įrangos licencijavimas
    • Atsidariusiame lange spustelėkite mygtuką Naujas Tokenas

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Įsitikinkite, kad atsidariusiame lange yra aktyvus laukas ir pažymėtas langelis Leisti eksportuoti valdomas funkcijas… Jei šis laukas nebus aktyvus, negalėsite naudotis stipraus šifravimo ir atitinkamai VPN funkcijomis. Jei šis laukas neaktyvus, susisiekite su savo paskyros komanda ir pateikite aktyvinimo užklausą.

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Paspaudus mygtuką Kurti prieigos raktą, bus sukurtas prieigos raktas, kurį naudosime norėdami gauti ASAv licenciją, nukopijuokite jį:

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Pakartokite C, D, E veiksmus kiekvienam įdiegtam ASAv.
    • Kad būtų lengviau kopijuoti prieigos raktą, laikinai leiskime telnet. Sukonfigūruokime kiekvieną ASA (toliau pateiktas pavyzdys iliustruoja ASA-1 nustatymus). telnet neveikia su išore, jei labai reikia, pakeiskite saugumo lygį į 100 į išorę, tada grąžinkite atgal.

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

    • Norėdami užregistruoti prieigos raktą „Smart-Account“ debesyje, turite suteikti ASA prieigą prie interneto, detales čia.

    Trumpai tariant, ASA reikalinga:

    • prieiga prie interneto per HTTPS;
    • laiko sinchronizavimas (tiksliau, per NTP);
    • registruotas DNS serveris;
      • Mes susisiekiame su savo ASA ir atliekame nustatymus, kad suaktyvintume licenciją per „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 
    !
    ! Проверим работу 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>

    • Patikriname, ar įrenginys sėkmingai užregistravo licenciją ir yra šifravimo parinkčių:

    ASA VPN apkrovos balansavimo klasterio diegimas

    ASA VPN apkrovos balansavimo klasterio diegimas

  4. Kiekviename šliuze nustatykite pagrindinį SSL-VPN

    • Tada sukonfigūruokite prieigą per SSH ir 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 
    !

    • Kad ASDM veiktų, pirmiausia turite jį atsisiųsti iš cisco.com svetainės, mano atveju tai yra šis failas:

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Kad AnyConnect klientas veiktų, turite įkelti vaizdą į kiekvieną ASA kiekvienai naudojamai darbalaukio kliento OS (planuojama naudoti Linux / Windows / MAC), jums reikės failo su Headend diegimo paketas Pavadinime:

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Atsisiųstus failus galima įkelti, pavyzdžiui, į FTP serverį ir į kiekvieną atskirą ASA:

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Konfigūruojame ASDM ir Self-Signed sertifikatą SSL-VPN (gamyboje rekomenduojama naudoti patikimą sertifikatą). Nustatytas virtualaus klasterio adreso FQDN (vpn-demo.ashes.cc), taip pat kiekvienas FQDN, susietas su kiekvieno klasterio mazgo išoriniu adresu, išorinėje DNS zonoje turi būti išspręstas pagal IŠORĖS sąsajos IP adresą (arba į susietą adresą, jei naudojamas prievado persiuntimas udp/443 (DTLS) ir tcp/443 (TLS)). Išsami informacija apie sertifikatui keliamus reikalavimus nurodyta skyriuje Pažymėjimo patikrinimas 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               

    • Nepamirškite nurodyti prievado, kad patikrintumėte, ar ASDM veikia, pavyzdžiui:

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Atlikime pagrindinius tunelio nustatymus:
    • Padarykime įmonės tinklą pasiekiamą per tunelį ir paleisime internetą tiesiai (ne saugiausias būdas, jei jungiančiame pagrindiniame kompiuteryje nėra apsaugos, galima prasiskverbti per užkrėstą pagrindinį kompiuterį ir rodyti įmonės duomenis, parinktis split-tunnel-policy tunellall leis į tunelį patekti visą srautą. Nepaisant to padalintas tunelis leidžia iškrauti VPN šliuzą ir neapdoroti pagrindinio interneto srauto)
    • Išduokime adresus iš 192.168.20.0/24 potinklio pagrindiniams kompiuteriams tunelyje (sukaupkite nuo 10 iki 30 adresų (mazgui #1)). Kiekvienas VPN klasterio mazgas turi turėti savo baseiną.
    • Atliksime pagrindinį autentifikavimą su vietoje sukurtu vartotoju ASA (Tai nerekomenduojama, tai yra lengviausias būdas), geriau autentifikuoti per LDAP/RADIUS, arba dar geriau – kaklaraištį Daugiafaktoris autentifikavimas (MFA), Pavyzdžiui 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
    !

    • (PASIRENKAMA): Aukščiau pateiktame pavyzdyje mes naudojome vietinį ITU vartotoją, kad patvirtintume nuotolinius vartotojus, o tai, žinoma, išskyrus laboratoriją, yra prastai taikoma. Pateiksiu pavyzdį, kaip greitai pritaikyti nustatymą autentifikavimui RADIUS Pavyzdžiui, naudojamas serveris „Cisco Identity Services“ variklis:

    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 
    !

    Ši integracija leido ne tik greitai integruoti autentifikavimo procedūrą su AD katalogo paslauga, bet ir atskirti, ar prijungtas kompiuteris priklauso AD, suprasti, ar šis įrenginys yra įmonės ar asmeninis, bei įvertinti prijungto įrenginio būseną. .

    ASA VPN apkrovos balansavimo klasterio diegimas

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Sukonfigūruokime Skaidrųjį NAT taip, kad srautas tarp kliento ir įmonės tinklo išteklių nebūtų užrašytas:

    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

    • (PASIRENKAMA): Siekdami atskleisti savo klientams internetą per ASA (kai naudojate tunelis parinktys) naudodami PAT, taip pat išeiti per tą pačią OUTSIDE sąsają, iš kurios jie yra prijungti, turite atlikti šiuos nustatymus

    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 
    !

    • Naudojant klasterį, labai svarbu įgalinti vidinį tinklą, kad jis suprastų, kuri ASA nukreiptų grįžtamąjį srautą vartotojams, tam reikia perskirstyti maršrutus / 32 klientams išduotus adresus.
      Šiuo metu dar nesukonfigūravome klasterio, bet jau turime veikiančius VPN šliuzus, kuriuos galima individualiai prijungti per FQDN arba IP.

    ASA VPN apkrovos balansavimo klasterio diegimas

    Prijungtą klientą matome pirmosios ASA maršruto parinkimo lentelėje:

    ASA VPN apkrovos balansavimo klasterio diegimas

    Kad visas mūsų VPN klasteris ir visas įmonės tinklas žinotų maršrutą iki mūsų kliento, perskirstysime kliento prefiksą į dinaminį maršruto parinkimo protokolą, pavyzdžiui, 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

    Dabar turime maršrutą į klientą iš antrojo ASA-2 šliuzo, o vartotojai, prisijungę prie skirtingų VPN šliuzų klasteryje, gali, pavyzdžiui, tiesiogiai bendrauti per įmonės programinį telefoną, taip pat grąžinti srautą iš vartotojo prašomų išteklių. eikite į norimą VPN šliuzą:

    ASA VPN apkrovos balansavimo klasterio diegimas

  5. Pereikime prie apkrovos balansavimo klasterio konfigūravimo.

    Adresas 192.168.31.40 bus naudojamas kaip virtualus IP (VIP – prie jo iš pradžių prisijungs visi VPN klientai), iš šio adreso pagrindinis klasteris atliks REDIRECT į mažiau apkrautą klasterio mazgą. Nepamirškite parašyti pirminis ir atvirkštinis DNS įrašas tiek kiekvienam išoriniam kiekvieno klasterio mazgo išoriniam adresui / FQDN, tiek 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)#

    • Klasterio veikimą tikriname su dviem prijungtais klientais:

    ASA VPN apkrovos balansavimo klasterio diegimas

    • Padarykime patogesnę klientų patirtį automatiškai įkeliamu AnyConnect profiliu per ASDM.

    ASA VPN apkrovos balansavimo klasterio diegimas

    Pavadiname profilį patogiu būdu ir susiejame su juo savo grupės politiką:

    ASA VPN apkrovos balansavimo klasterio diegimas

    Po kito kliento prisijungimo šis profilis bus automatiškai atsisiųstas ir įdiegtas „AnyConnect“ kliente, todėl jei reikia prisijungti, tiesiog pasirinkite jį iš sąrašo:

    ASA VPN apkrovos balansavimo klasterio diegimas

    Kadangi šį profilį sukūrėme tik vienoje ASA naudodami ASDM, nepamirškite pakartoti veiksmų su kitomis grupės ASA.

Išvada: Taigi greitai įdiegėme kelių VPN šliuzų grupę su automatiniu apkrovos balansavimu. Naujų mazgų įtraukimas į klasterį yra paprastas, naudojant paprastą horizontalų mastelį diegiant naujas ASAv virtualias mašinas arba naudojant aparatinės įrangos ASA. Daug funkcijų turintis „AnyConnect“ klientas gali žymiai pagerinti saugų nuotolinį ryšį naudodamas Laikyena (būsenos įvertinimai), efektyviausiai naudojamas kartu su centralizuoto valdymo ir prieigos apskaitos sistema Tapatybės paslaugų variklis.

Šaltinis: www.habr.com

Добавить комментарий