Implementimi i grupit të Load-Balancing për ASA VPN

Në këtë artikull do të doja të ofroj një udhëzues hap pas hapi se si mund të implementoni shpejt skemën më të shkallëzueshme në këtë moment VPN për Qasje të Largët qasje mbi bazën e AnyConnect dhe Cisco ASAGrupi i Load Balancing për VPN.

Hyrje: Shumë kompani në gjithë botën, për shkak të situatës aktuale me COVID-19, po bëjnë përpjekje për të kaluar punonjësit e tyre në mënyrë të largët. Për shkak të masivitetit të kalimit në punën e shkëputur, ngarkesa në porta VPN ekzistuese të kompanive rritet ndjeshëm dhe kërkohet një mundësi shumë e shpejtë për shkallëzim. Nga ana tjetër, shumë kompani janë të detyruara të mësojnë për një koncept si puna e largët nën presion.

Për të ndihmuar bizneset të realizojnë shpejt një qasje VPN të përshtatshme, të sigurt dhe të shkallëzueshme për punonjësit, kompania Cisco ofron deri në 13 javë licenca për klientin multifunksional SSL-VPN AnyConnect. Gjithashtu, mund të merrni ASAv për testim (ASA Virtuale për hipervizorët VMWare/Hyper-V/KVM dhe platforma të cloud si AWS/Azure) nga partnerët e autorizuar ose duke kontaktuar përfaqësuesit e Cisco që punojnë me ju.

Procedura e lëshimit të licencave AnyConnect COVID-19 është përshkruar këtu.

Kam përgatitur një udhëzues hap pas hapi për një variant të thjeshtë të shpërndarjes së VPN Load-Balancing si teknologji më e shkallëzueshme VPN.

Shembulli i mëposhtëm do të jetë mjaft i thjeshtë në aspektin e algoritmeve të autentikimit dhe autorizimit që aplikon, por do të jetë një variant i mirë për një fillim të shpejtë (diçka që shumë njerëz e kanë të nevojshme tani) me mundësinë e adaptimit të thelluar sipas nevojave gjatë procesit të shpërndarjes.

Informacione të shkurtra: Teknologjia VPN Load Balancing Cluster nuk është një funksion failover dhe as një funksion klasifikimi në kuptimin e saj natyror; me këtë teknologji mund të bashkohen modele të ndryshme ASA (me disa kufizime) me qëllim të balancimit të ngarkesës së lidhjeve Remote-Access VPN. Sinhronizimi i seancave dhe konfigurimeve mes nodave të këtij klasteri mungon, por është e mundur balancimi automatik i ngarkesës së lidhjeve VPN dhe sigurimi i qëndrueshmërisë së lidhjeve VPN derisa të mbetet të paktën një nod aktiv në klaster. Ngarkesa në klaster balancohet automatikisht në përputhje me ngarkesën e nodave në numrin e seancave VPN.

Për disponueshmëri të qëndrueshme të nodëve të caktuar të grupit (nëse kërkohet), mund të përdoret një filever, kështu që lidhja aktive do të përpunohët nga nodi kryesor i fileverit. Fileveri nuk është një kusht thelbësor për sigurimin e disponueshmërisë brenda grupit të Load-Balancing; vetë grupi, në rast të dështimit të nodës, do ta transferojë seancën e përdoruesit në një nod tjetër të gjallë, megjithatë pa ruajtur statusin e lidhjes, gjë që sigurohet nga fileveri. Prandaj, është e mundur të kombinoni këto dy teknologji sipas nevojës.

Grupi VPN Load-Balancing mund të përmbajë më shumë se dy nodë.

Grupi VPN Load-Balancing mbështetet në ASA 5512-X dhe përtej.

Duke pasur parasysh se çdo ASA brenda grupit VPN Load-Balancing është një njësisë e pavarur sa i përket konfigurimit, ne kryejmë të gjitha etapet e konfigurimit individualisht në çdo pajisje të veçantë.

Detajet e teknologjisë këtu

Topologjia logjike e shembujve të dhënë:

Implementimi i grupit të Load-Balancing për ASA VPN

Vendosja fillestare:

  1. Ne shtrijmë nga imazhi instancat ASAv të nevojshme (ASAv5/10/30/50).

  2. Ne caktojmë ndërfaqet INSIDE/OUTSIDE në VLAN të njëjtë (Outside në VLAN e vet, INSIDE në të vetin, por të përbashkët në kuadër të klashtës, shih topologjinë), e rëndësishme është që ndërfaqet e një tipi të ndodhen në të njëjtin segment L2.

  3. Licensat:

    • Në momentin e instalimit, ASAv nuk do të ketë asnjë licencë dhe do të ketë një kufizim në performancën prej 100 kbit/sec.
    • Për të instaluar licencën, ju nevojitet të gjeneroni një token në llogarinë tuaj Smart-Account: https://software.cisco.com/ -> Smart Software Licensing
    • Në dritaren që hapet, pas kësaj klikoni butonin New Token

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Sigurohuni që në dritaren e hapur të ketë një fushë aktive dhe të jetë shënuar Allow export-controlled functionality… Pa këtë fushë aktive, nuk do të jeni në gjendje të përdorni funksionet e enkriptimit të fortë dhe për rrjedhojë VPN. Nëse kjo fushë nuk është aktive, ju lutemi kontaktoni ekipin tuaj të llogarive për aktivizimin.

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Pas klikimit të butonit Create Token, do të krijohet një token, që ne do ta përdorim për të marrë licencën për ASAv, do ta kopjojmë atë:

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Do të përsërisim hapat C,D,E për çdo ASAv të instaluar.
    • Për ta bërë më të lehtë kopjimin e token-it, do të lejojmë përkohësisht telnet. Do të konfiguroni çdo ASA (shembulli më poshtë tregon konfigurimet për ASA-1). telnet nuk outside nuk punon, nëse është shumë e nevojshme, ndryshoni security-level në 100 në outside, pastaj kthejeni mbrapa.

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

    • Për regjistrimin e token-it në облаку Smart-Account është e nevojshme të sigurohet qasje në Internet për ASA. detajet këtu.

    Nëse e shohim shkurt, ASA nevojitet:

    • qasje për HTTPS në Internet;
    • sinkronizimi i kohës (për korrektësi me NTP);
    • serveri DNS i shkruajtur;
      • Hyrim nëpërmjet telnet në ASA tonë dhe kryejmë konfigurimet për aktivizimin e licencës përmes 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 
    !
    ! Le të kontrollojmë funksionimin e 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:
    !!!!!
    !
    ! Le të kontrollojmë sinkronizimin 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
    !
    ! Të vendosim konfigurimin e ASAv tonë për Smart-Licensing (sipas profilit tuaj, në rastin tim 100M për shembull)
    !
    ciscoasa(config)# license smart
    ciscoasa(config-smart-lic)# feature tier standard
    ciscoasa(config-smart-lic)# throughput level 100M
    !
    ! Nëse është e nevojshme, mund të konfiguroni aksesin në Internet përmes një proxy, përdorni bllokun e komandave të mëposhtme:
    !call-home
    !  http-proxy ip_address port port
    !
    ! Më pas vendosim tokenin e kopjuar nga portali Smart-Account (<token>) dhe regjistrojmë licencën
    !
    ciscoasa(config)# end
    ciscoasa# license smart register idtoken <token>

    • Po kontrollojmë nëse pajisja ka regjistruar me sukses licencën dhe opsionet e enkriptimit janë të qasshme:

    Implementimi i grupit të Load-Balancing për ASA VPN

    Implementimi i grupit të Load-Balancing për ASA VPN

  4. Po konfiguroni SSL-VPN bazë në çdo gateway

    • Më pas, konfigurojmë aksesin përmes SSH dhe 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
    !
    ! Ne do të ngremë serverin HTTPS për ASDM në portin 445 për të mos u përjashtuar nga portali SSL-VPN
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • Për të përdorur ASDM, së pari duhet ta shkarkoni nga saiti cisco.com, në rastin tim ky është skedari i mëposhtëm:

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Për të funksionuar klienti AnyConnect, duhet të ngarkohet një imazh për çdo sistem operativ të përdorur në desktopin e klientit (i planifikuar për përdorim Linux/Windows/MAC) që do të nevojitet skedari me Paketa e Zhvillimit të Headend në emrin:

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Skedarët e shkarkuar mund të vendosen, për shembull, në një server FTP dhe të ngarkohen në çdo ASA të veçantë:

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Konfigurojmë ASDM dhe certifikatën Self-Signed për SSL-VPN (në prodhim rekomandohet që certifikata të jetë e besueshme). FQDN i vendosur i adresës virtuale të klasterit (vpn-demo.ashes.cc), si dhe çdo FQDN i asociuar me adresën ekstern të secilit nod të klasterit duhet të zgjidhet në zonën ekstern të DNS në adresën IP të ndërfaqes OUTSIDE (ose në adresën e mapped, nëse përdoret përcjellja e portit udp/443 (DTLS) dhe tcp/443 (TLS)). Informacione të detajuara mbi kërkesat për certifikatën janë të specifikuara në seksionin Verifikimi i Certifikatës dokumentacion.

    !
    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=sq
    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=sq
    Subject Name:
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=sq
    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               

    • Për të verifikuar funksionimin e ASDM, mos harroni të specifikoni portin, për shembull:

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Le të bëjmë konfigurimet baze të tunelit:
    • Do të mundësojmë lidhjen me rrjetin korporativ përmes një tuneli, ndërsa interneti do të shkojë direkt (nuk është metoda më e sigurt në mungesë të mbrojtjes në hostin e lidhur, mundësia për ndërhyrje përmes një hosti të infektuar dhe humbje të të dhënave korporative, opsioni split-tunnel-policy tunnelall do të dërgojë gjithë trafikun e hostit në tunel. Megjithatë Split-Tunnel ofron mundësinë për të lehtësuar portalin VPN dhe për të mos përpunuar trafikun e internetit të hostit)
    • Do t'u ndajmë hosteve në tunel adresat nga subneti 192.168.20.0/24 (puli me adresat nga 10 deri në 30 (për nodën #1)). Në secilën nodë të klasit VPN, puli duhet të jetë i veçantë.
    • Do të realizojmë autentifikimin bazik me një përdorues të krijuar lokal në ASA (nuk rekomandohet, është metoda më e thjeshtë), është më mirë të bëjmë autentifikimin përmes LDAP/RADIUS, dhe akoma më mirë të lidhim Autentifikimin në Dytë (MFA), për shembull 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
    !

    • (OPTIVELY): Në shembullin e mësipërm përdorëm një përdorues lokal në MSE për autentifikimin e përdoruesve të largët, që natyrisht është paksa e zbatueshme jashtë laboratorit. Do të jap një shembull se si ta adaptojmë shpejt konfigurimin për autentifikimin në RADIUS server, për shembull është përdorur Cisco Identity Services Engine:

    vpn-demo-1(config-aaa-server-group)# autorizim dinamik
    vpn-demo-1(config-aaa-server-group)# përllogaritje-interim
    vpn-demo-1(config-aaa-server-group)# aaa-server RADIUS (jashtë) host 192.168.99.134
    vpn-demo-1(config-aaa-server-host)# çelësi cisco
    vpn-demo-1(config-aaa-server-host)# dal
    vpn-demo-1(config)# grup-tuneli DefaultWEBVPNGroup atribute-të-përgjithshme
    vpn-demo-1(config-tunnel-general)# grup-serveri të-autentifikimit RADIUS
    !

    Kjo integrim ofroi mundësinë jo vetëm për të integruar shpejt procedurën e autentifikimit me shërbimin e katalogëve AD, por gjithashtu për të dalluar përkatësinë e kompjuterit të lidhur me AD, për të kuptuar nëse kjo është një pajisje korporate apo personale dhe për të bërë një vlerësim të gjendjes së pajisjes së lidhur.

    Implementimi i grupit të Load-Balancing për ASA VPN

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Do të bëjmë konfigurimin Transparent NAT në mënyrë që trafiku midis klientit dhe burimeve të rrjetit korporativ të mos NAT-izohet:

    vpn-demo-1(config-network-object)#  subnet 192.168.20.0 255.255.255.0
    !
    vpn-demo-1(config)# nat (inside, outside) burimi static të gjithë të gjithë destinacioni static vpn-users vpn-users no-proxy-arp

    • (OPSIONALE): Për të dalë klientët tanë në Internet përmes ASA (kur përdoret tunnelall opsionet) duke përdorur PAT, si dhe për të dalë përmes të njëjtit ndërfaqe OUTSIDE, nga e cila ato lidhen, duhet të bëjmë këto konfigurime

    vpn-demo-1(config-network-object)# nat (jashtë, jashtë) burimi dinamik vpn-users ndërfaqe
    vpn-demo-1(config)# nat (brenda, jashtë) burimi dinamik të gjithë ndërfaqe
    vpn-demo-1(config)# trafiku-i-samë-siguri lejo intra-interfacen
    !

    • Është shumë e rëndësishme, kur përdorni klasterin, t'i jepni rrjetit të brendshëm mundësinë për të kuptuar se në cilin ASA duhet të rruazoni trafikun e kundërt për përdoruesit; për këtë duhet të bëni redistribucionin e rrugëve /32 adresave që i jepni klientëve.
      Aktualisht, klasteri ende nuk është konfiguruar, por kemi tashmë VPN gateway të funksionshëm me të cilët mund të lidhemi individualisht përmes FQDN ose IP.

    Implementimi i grupit të Load-Balancing për ASA VPN

    Ne e shohim klientin e lidhur në tabelën e routing të ASA-së së parë:

    Implementimi i grupit të Load-Balancing për ASA VPN

    Për të siguruar që e gjithë klasteri ynë VPN dhe të gjithë rrjeti korporativ të dinë rrugën për klientin tonë, do të realizojmë redistribuimin e prefixit të klientit në protokollin e routing-ut dinamik, për shembull 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

    Tani tani tani tani tani tani tani tani tani tani, po tani tani nga dy VPN tani, dhe të kthehet tani tani nga tani, do të vijnë në tani VPN tani:

    Implementimi i grupit të Load-Balancing për ASA VPN

  5. Tani kalojmë në konfigurimin e Load-Balancing të klasterit.

    Adresa 192.168.31.40 do të përdoret si Virtual IP (VIP — të cilit do t'i lidhin fillimisht të gjithë klientët VPN), nga kjo adresë Mjeshtri i klasterit do të bëjë REDIRECT në nodin më pak të ngarkuar të klasterit. Mos harroni të regjistroni rekordet e DNS të drejtpërdrejta dhe të kundërta si për çdo adresë të jashtme/FQDN të çdo node të klasterit, ashtu edhe për 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)#

    • Kontrollojmë funksionin e klasterit me dy klientë të lidhur:

    Implementimi i grupit të Load-Balancing për ASA VPN

    • Do ta bëjmë përvojën e punës së klientit më të lehtë me profilin AnyConnect që shkarkohet automatikisht përmes ASDM.

    Implementimi i grupit të Load-Balancing për ASA VPN

    E emërojmë profilin në mënyrë të përshtatshme dhe e lidhim politikën tonë grupore me të:

    Implementimi i grupit të Load-Balancing për ASA VPN

    Pas lidhjes së ardhshme të klientit, ky profil do të shkarkohet dhe instalohet automatikisht në klientin AnyConnect, kështu që nëse nevojitet lidhja, mjafton ta zgjedhim atë nga lista:

    Implementimi i grupit të Load-Balancing për ASA VPN

    Duke qenë se, duke përdorur ASDM, kemi krijuar këtë profil vetëm në një ASA, mos harroni të përsërisni veprimet në ASA-të e tjera të klasterit.

Dalja: Kështu, ne shpejt zhvendosëm një klaster të disa portave VPN me balancim automatik të ngarkesës. Shtimi i nyjeve të reja në klaster nuk është një problem, duke ofruar një shkallëzim horizontal të thjeshtë përmes shpërndarjes së makinave virtuale ASAv ose duke përdorur ASA të harduerëve. Klienti multifunksional AnyConnect mund të zgjasë ndjeshëm mundësitë e lidhjes së sigurt në distancë duke përdorur funksionin Posture (vlerësimi i gjendjes), i cili aplikohet më efektivisht së bashku me sistemin e kontrollit dhe regjistrimit qendror të aksesit Identity Services Engine.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster