ASA VPN koormuse tasakaalustamise klastrite juurutamine

Selles artiklis jagan samm-sammulist juhendit, kuidas kiiresti seadistada praegu kõige skaleeritavam ligipääsu skeem Remote-Access VPN põhjal AnyConnect ja Cisco ASAVPN-i koormuse tasakaalustamise klaster.

Sissejuhatus: Paljud ettevõtted üle kogu maailma teevad COVID-19 tõttu jõupingutusi oma töötajate kaug tööle viimiseks. Massilise ülemineku tõttu kaug tööle suureneb oluliselt koormus ettevõtete olemasolevatele VPN väravatele ja on vajalik nende kiire skaleerimise võimalus. Teiselt poolt peavad paljud ettevõtted kiirustades õppima mõistet, nagu kaug töö.

Et aidata ettevõtetel võimalikult kiiresti pakkuda töötajatele mugavat, turvalist ja skaleeritavat VPN-juurdepääsu, pakub Cisco kuni 13 nädalat tasuta litsentse mitmeotstarbelisele SSL-VPN kliendile AnyConnect. Samuti on võimalik ASAv katsetada (virtuaalne ASA VMware / Hyper-V / KVM ja pilveplatvormide AWS / Azure jaoks) volitatud partnerite kaudu või pöörduda Cisco esindajate poole, kes teiega koos töötavad..

AnyConnect COVID-19 litsentside väljastamise protseduur on kirjeldatud siin.

Olen koostanud samm-sammult juhendi VPN-i koormuse tasakaalustamise klastri lihtsa versiooni juurutamiseks, mis on kõige skaleeritavam VPN-tehnoloogia.

Allpool toodud näide on autentimise ja autoriseerimise algoritmide poolest üsna lihtne, kuid sobib hästi kiireks alustamiseks (mida paljudel praegu väga vajaka on), pakkudes samas võimalust sügavamaks kohandamiseks juurutamise käigus vastavalt oma vajadustele.

Lühiülevaade: VPN Load Balancing Klastri tehnoloogia ei ole failover ega klasterdamise funktsioon oma põhimõttelises tähenduses; selle tehnoloogia abil saab ühendada täiesti erinevaid ASA mudeleid (teatud piirangutega), et tasakaalustada Remote-Access VPN-i ühenduste koormust. Seansside ja konfiguratsioonide sünkroniseerimist klastrite vahel ei toimu, kuid VPN-ühenduste automaatne koormuse tasakaalustamine ja ühenduste talitlushäirete vältimine on võimalik seni, kuni klastris on vähemalt üks aktiivne nod. Klastri koormus tasakaalustatakse automaatselt vastavalt nodide koormusele VPN-seansside arvu järgi.

Klastrei spetsiifiliste nodide jaoks, et tagada talitlushäirete suhtes vastupidavus (kui see on vajalik), võib kasutada failide vahetajat, mille abil käideldakse aktiivset ühendust selle failide vahetaja põhinoodiga. Failide vahetaja ei ole talitlushäirete vastupidavuse tagamisel Load-Balancing klastris vajalik; ise klaster suudab, kui mõni node ebaõnnestub, suunata kasutaja sessiooni teisele aktiivsele nodele, kuid ilma ühenduse staatuse säilitamiseta, mille tagab failide vahetaja. Seega saab neid kahte tehnoloogiat vajadusel kombineerida.

VPN Load-Balancing klaster võib sisaldada rohkem kui kahte node.

VPN Load-Balancing klastrit toetatakse ASA 5512-X ja kõrgematel mudelitel.

Kuna iga ASA VPN Load-Balancing klastris on sõltumatu üksus seoses seadistustega, siis viib iga seadistamise etapi läbi isiklikult igas üksikseadmest.

Tehnoloogia üksikasjad siin

Antud näite loogiline topoloogia:

ASA VPN koormuse tasakaalustamise klastrite juurutamine

Esialgne rakendamine:

  1. Rakendame vajalikud ASAv mallide eksemplarid pildist (ASAv5/10/30/50).

  2. Määrame INSIDE/OUTSIDE liidesed samadele VLAN-idele (Outside oma VLANis, INSIDE oma, kuid ühine klastris, vt topoloogiat), oluline on, et sama tüübi liidesed paikneksid samas L2 segmendis.

  3. Litsentsid:

    • ASAv paigaldamise hetkel ei ole litsentse ja see on piiratud 100 kbit/sek tootlikkusega.
    • Litsentsi installimiseks peate genereerima tokene oma Smart-Account kontol: https://software.cisco.com/ -> Smart Software Licensing
    • Avanenud aknas vajutage nuppu New Token

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Veenduge, et avanenud aknas on aktiivne väli ja märge on seadistatud Allow export-controlled functionality… Ilma selle aktiivse väljata ei saa te kasutada tugeva krüpteerimise funktsioone ja seega VPN-i. Kui see väli ei ole aktiivne, palun võtke ühendust oma konto meeskonnaga aktiveerimise taotlusega.

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Pärast nuppu vajutamist Loo token, luuakse token, mida me kasutame ASAv litsentsi saamiseks, kopeerime selle:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Korrake samme C, D, E iga juurutatud ASAv puhul.
    • Selleks, et tokenit oleks lihtsam kopeerida, lubame ajutiselt telneti. Seame üles iga ASA (näide allpool illustreerib seadeid ASA-1-l). telnet ei tööta outside, kui see on väga vajalik, muuda security-level 100 peale outside, seejärel naase tagasi.

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

    • Smart-Accountis registreerimiseks tuleb ASA-l lubada interneti juurde pääs. details here.

    Lühidalt, vajalik ASA on:

    • HTTPS juurdepääs internetis;
    • aegade sünkroniseerimine (soovitav läbi NTP);
    • defineeritud DNS server;
      • Logime telneti kaudu meie ASA-desse ja teeme seadistused litsentsi aktiveerimiseks Smart-Account kaudu.

    !
    ciscoasa(config)# kellaa set 19:21:00 18. märts 2020
    ciscoasa(config)# kellaa ajavöönd MSK 3
    ciscoasa(config)# ntp server 192.168.99.136
    !
    ciscoasa(config)# dns domeeni-otsing väljas
    ciscoasa(config)# DNS serveri-grupp DefaultDNS
    ciscoasa(config-dns-server-group)# nimeteenuse-üksus 192.168.99.132 
    !
    ! Kontrollime DNS-i tööd:
    !
    ciscoasa(config-dns-server-group)# ping ya.ru
    Tippe escape-sekundi katkestamiseks.
    Saadetakse 5, 100-byte ICMP Echos aadressile 87.250.250.242, aegumine on 2 sekundit:
    !!!!!
    !
    ! Kontrollime NTP sünkroniseerimist:
    !
    ciscoasa(config)# show ntp associations 
      aadress         viite kell     st  millal  küsima ulatus  viivitus  nihke    jaotus
    *~192.168.99.136   91.189.94.4       3    63    64    1    36.7    1.85    17.5
    * master (sünkroonitud), # master (mitte sünkroonitud), + valitud, - kandidaat, ~ konfigureeritud
    !
    ! Seame meie ASAv konfigureerimist Smart-Litsentsimiseks (vastavalt teie profiilile, minu puhul 100M näitena)
    !
    ciscoasa(config)# license smart
    ciscoasa(config-smart-lic)# feature tier standard
    ciscoasa(config-smart-lic)# throughput level 100M
    !
    ! Vajadusel saab seadistada juurdepääsu Internetile läbi proksi, kasutage järgmist käsublokki:
    !call-home
    !  http-proxy ip_aadress port port
    !
    ! Jätkame, sisestades Smart-Accounti portaalist kopeeritud token'i (<token>) ja registreerime litsentsi
    !
    ciscoasa(config)# end
    ciscoasa# license smart register idtoken <token>

    • Kontrollime, et seade on litsentsi edukalt registreerinud ja krüptimise valikud on saadaval:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

  4. Seame aluse SSL-VPN iga värava peal

    • Jätkame SSH ja ASDM kaudu juurdepääsu seadistamisega:

    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
    !
    ! Lülitame HTTPS serveri ASDM jaoks sadamale 445, et vältida kattumist SSL-VPN-portaaliga
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • ASDM-i tööks tuleb esmalt see cisco.com veebilehelt alla laadida, minu puhul on see järgmine fail:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • AnyConnecti kliendi jaoks tuleb iga ASA jaoks laadida alla pildifail, mis on vajalik iga kasutatava töölauasüsteemi jaoks (planeeritud kasutamiseks Linuxi/Windowsi/MAC-i puhul) ning seda on vaja faili: Peasema paigalduspakett pealkirjaga:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Allalaaditud failid saab näiteks FTP-serverisse üles laadida ja igale üksikule ASAle laadida:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Seame ASDM ja iseenesest signeeritud sertifikaat SSL-VPN jaoks (tootmises soovitatakse kasutada usaldusväärset sertifikaati). Paigaldatud klastrivirtuaalse aadressi FQDN (vpn-demo.ashes.cc) ja iga FQDN, mis on seotud iga klastrimooduli välise aadressiga, peab olema välises DNS-i tsoonis lahendatud OUTSIDE-ühenduse IP-aadressile (või kaardistatud aadressile, kui kasutatakse UDP/443 (DTLS) ja TCP/443 (TLS) pordi edastamist). Sertifikaadi nõuete üksikasjalik teave on esitatud jaos Certificate Verification dokumentatsioonis.

    !
    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               

    • ASDM'i töö kontrollimiseks ärge unustage porti märkida, näiteks:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Teeme tunneli põhiseaded:
    • Teeme ettevõtte võrgu tunnelisse kättesaadavaks, samal ajal kui internetiühendus suunatakse otse (kui hostis puuduvad kaitsemeetmed, ei pruugi see olla kõige turvalisem meetod; see võib võimaldada pahavara kaudu juurdepääsu ja ettevõtte andmete lekkimist, valik) split-tunnel-policy tunnelall suunab kogu hosti liikluse tunnelisse. Siiski Split-Tunnel annab võimaluse vähendada VPN-i värava koormust ja mitte suunata hosti interneti liiklust)
    • Anname tunnelisse hostidele aadresse alamvõrgust 192.168.20.0/24 (aadresside vahemik 10-30 (node #1 jaoks)). Igal VPN-klastri sõlmel peab olema oma aadresside vahemik.
    • Teeme põhitõendi kohalikult loodud kasutajaga ASA-s (seda ei soovitata teha, kuna see on kõige lihtsam meetod), parem on teha autentsus läbi LDAP/RADIUS, veel parem on siduda Mitme faktoori autentimine (MFA), näiteks 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
    !

    • (VALIKULINE): Ülaltoodud näites kasutasime autentimise jaoks kohaliku kasutaja MSE-s, mis on muidugi laboratoorses keskkonnas peamiselt rakendatav. Toome näite, kuidas kiiresti kohandada seade autentimiseks RADIUS serveris, näidatakse Cisco Identity Services Engine:

    vpn-demo-1(config-aaa-server-group)# dünaamiline autoriseerimine
    vpn-demo-1(config-aaa-server-group)# ajutine arvepidamine
    vpn-demo-1(config-aaa-server-group)# aaa-server RADIUS (väljas) host 192.168.99.134
    vpn-demo-1(config-aaa-server-host)# võti cisco
    vpn-demo-1(config-aaa-server-host)# väljuda
    vpn-demo-1(config)# tunnel-group DefaultWEBVPNGroup üldised atribuudid
    vpn-demo-1(config-tunnel-general)# autentimis-serveri grupp RADIUS
    !

    See integreerimine võimaldas mitte ainult kiiret autentimise protseduuri integreerimist AD kataloogiteenusega, vaid ka ära tunda ühendatud arvuti kuuluvuse AD-sse, mõista, kas see on ettevõtte või isiklik seade ning hinnata ühendatud seadme seisundit.

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Teeme Transparent NAT seadistuse, et liiklus kliendi ja ettevõtte võrgu ressursside vahel ei oleks NAT-itud:

    vpn-demo-1(config-network-object)#  subnet 192.168.20.0 255.255.255.0
    !
    vpn-demo-1(config)# nat (sees,väljas) allika staatiline ükskõik ükskõik sihtkoht staatiline vpn-kasutajad vpn-kasutajad ei-proksi-arp

    • (VALIKULINE): Et saata meie kliente Internetti läbi ASA (kasutades tunnelall valikute) kasutades PAT-i ning samal ajal liituda läbi sama OUTSIDE liidese, kust nad ühenduvad, on vaja teha järgmised seadistused

    vpn-demo-1(config-network-object)# nat (väljas,väljas) allika dünaamiline vpn-kasutajad liides
    vpn-demo-1(config)# nat (sees,väljas) allika dünaamiline ükskõik liides
    vpn-demo-1(config)# sama-turvamise liiklus luba intra-liidese
    !

    • Klientide tagasivoolu suunamiseks on ülioluline, et klastris oleks võimalus sisemisel võrgul aru saada, millisele ASA-le suunata tagasivoolu, ja selleks tuleb teha klientidele väljastatud \/32 aadresside marsruutide ümberjaotamine.
      Praegu ei ole me klastrit veel seadistanud, kuid meil on juba töötavad VPN-lähted, millega saab individuaalselt ühendust võtta kas FQDN või IP kaudu.

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    Näeme ühendatud klienti esimese ASA marsruuditabelis:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    Kuna meie VPN-klaster ja kogu ettevõtte võrk peavad teadma marsruuti meie kliendini, teeme klientide eelist ümbersuunamise dünaamilise marsruutimise protokolli, näiteks 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

    Nüüd on meil ühendus kliendiga teise ASA-2 värava kaudu, ja kasutajad, kes on ühendatud erinevatesse VPN-väravatesse klastris, saavad näiteks suhelda otse ettevõtte tarkvara kaudu. Samuti saab tagasivool, mis tuleb kasutaja poolt küsitud ressurssidest, jõuda õigesse VPN-väravasse:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

  5. Jätkame Load-Balancing klastrite seadistamisega.

    Aadress 192.168.31.40 kasutatakse Virtual IP (VIP — kõigepealt ühenduvad kõik VPN kliendid sellele), millelt klastrite Master suunab vähem koormatud sõlme. Ärge unustage lisada otsekohest ja tagasivoolu DNS-i kirjet nii iga välise aadressi/FQDN iga sõlme klastris kui ka VIP jaoks.

    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)#

    • Kontrollime klastrite tööd kahe ühendatud kliendiga:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    • Teeme kliendi kogemuse mugavamaks, kasutades ASDM kaudu automaatselt laaditavat AnyConnecti profiili.

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    Nimetame profiili mugavalt ja seostame selle meie grupipoliitikaga:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    Pärast järgmist kliendi ühendust laaditakse see profiil automaatselt alla ja installitakse AnyConnecti kliendis, mistõttu jääb ka tulevikus vajalik valik teha lihtsalt selle nimekirjast:

    ASA VPN koormuse tasakaalustamise klastrite juurutamine

    Kuna loome ASDM-i abil selle profiili ainult ühes ASA-s, ärge unustage sarnaseid toiminguid korrata ülejäänud ASA klastris.

Väljund: Nii oleme kiiresti üles ehitanud klastrite mitmest VPN väravast koos automaatse koormuse tasandamisega. Uute sõlmede lisamine klastrisse ei tekita raskusi, saavutades lihtsa horisontaalse skaleerimise, juurutades uusi virtuaalseid masinate ASAv või kasutades riistvaralisi ASA-sid. Multifunktsionaalne AnyConnecti klient võib oluliselt laiendada turvalise kaugühenduse võimalusi, kasutades funktsiooni Posture (olekute hindamine), mida rakendatakse kõige tõhusamalt koos kesksete kontrolli- ja juurdepääsuhalduse süsteemidega. Identity Services Engine.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster