I denna artikel skulle jag vilja ge en steg-för-steg-guide för hur man snabbt kan sĂ€tta upp det mest skalbara systemet just nu. Remote-Access VPN Ă„tkomst baserat pĂ„ AnyConnect och Cisco ASA â VPN Load Balancing Cluster.
Introduktion: MÄnga företag vÀrlden över, med tanke pÄ den rÄdande situationen med COVID-19, vidtar ÄtgÀrder för att överföra sina anstÀllda till distansarbete. PÄ grund av den massiva övergÄngen till distansarbete ökar trycket pÄ de befintliga VPN-gateways kraftigt, och det finns ett akut behov av snabb skalning. à andra sidan tvingas mÄnga företag hastigt lÀra sig begreppet distansarbete frÄn grunden.
För att hjÀlpa företag att snabbt implementera en bekvÀm, sÀker och skalbar VPN-Ätkomst för anstÀllda, erbjuder Cisco gratis licenser pÄ upp till 13 veckor för den multifunktionella SSL-VPN-klienten AnyConnect. .
.
Jag har förberett en steg-för-steg-guide för en enkel variant av att sÀtta upp en VPN Load-Balancing-kluster som en av de mest skalbara VPN-teknologierna.
Exemplet nedan kommer att vara ganska enkelt sett till de autentiserings- och auktoriseringsalgoritmer som anvÀnds, men det kommer att vara ett bra alternativ för en snabb start (vilket mÄnga just nu saknar) med möjlighet till djupgÄende anpassning efter behov under implementeringen.
Kort information: Teknologin VPN Load Balancing Cluster Àr inte failover och inte en klustring i sin ursprungliga mening; med denna teknik kan man förena helt olika modeller av ASA (med vissa begrÀnsningar) för att balansera lasten av Remote-Access VPN-anslutningar. Synkronisering av sessioner och konfigurationer mellan noder i ett sÄdant kluster finns inte, men automatisk lastbalansering av VPN-anslutningar och sÀkerstÀllande av redundans för anslutningarna Àr möjlig sÄ lÀnge det finns minst en aktiv nod i klustret. Lasten i klustret balanseras automatiskt beroende pÄ belastningen av noderna enligt antalet VPN-sessioner.
För att uppnÄ redundans för specifika noder i klustret (om det behövs) kan en failover anvÀndas, vilket gör att den aktiva anslutningen hanteras av primÀrnoden i failovern. Failovern Àr inte ett nödvÀndigt villkor för att sÀkerstÀlla redundans inom Load-Balancing-klustret; klustret i sig kommer vid en nodfel att överföra anvÀndarsessionen till en annan aktiv nod, men utan att bevara anslutningens status, vilket uppnÄs just genom failovern. DÀrför kan dessa tvÄ teknologier kombineras vid behov.
Ett VPN Load-Balancing-kluster kan innehÄlla fler Àn tvÄ noder.
VPN Load-Balancing-kluster stöds pÄ ASA 5512-X och högre.
Eftersom varje ASA i VPN Load-Balancing-klustret Àr en oberoende enhet vad gÀller instÀllningar, genomför vi alla steg av konfigurationen individuellt pÄ varje enskilt enhet.
Den logiska topologin för det angivna exemplet:

PrimÀr distribution:
Vi distribuerar instanser av ASAv med de mönster vi behöver (ASAv5/10/30/50) frÄn en bild.
Vi tilldelar INSIDE/OUTSIDE-grÀnssnitt pÄ samma VLAN (Outside i sitt eget VLAN, INSIDE i sitt, men gemensamt inom klustret se topologin), viktigt att grÀnssnitten av samma typ ligger i samma L2-segment.
Licenser:
- Vid installationstillfÀllet kommer ASAv inte att ha nÄgra licenser och kommer att vara begrÀnsad till en prestanda pÄ 100 kbit/s.
- För att installera licensen behöver du generera en token i ditt Smart-Account: -> Smart Software Licensing
- I det öppna fönstret trycker du pÄ knappen Ny token

- Se till att det öppna fönstret har ett aktivt fÀlt och att kryssrutan Àr ifylld TillÄt exportkontrollerad funktionalitet⊠Utan detta aktiva fÀlt kan du inte anvÀnda funktioner för stark kryptering och dÀrmed VPN. Om detta fÀlt inte Àr aktivt, vÀnligen kontakta ditt konto-team med en begÀran om aktivering.

- Efter att ha tryckt pÄ knappen Skapa token, en token skapas, som vi kommer att anvÀnda för att fÄ licensen för ASAv, lÄt oss kopiera den:

- Upprepa stegen C, D, E för varje distribuerad ASAv.
- För att göra det enklare att kopiera token, lÄt oss tillfÀlligt tillÄta telnet. Vi konfigurerar varje ASA (exemplet nedan visar instÀllningarna för ASA-1). Telnet med outside fungerar inte, om det verkligen behövs, Àndra security-level till 100 pÄ outside, och sÀtt tillbaka det igen.
! 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 !- För att registrera en token i molnet Smart-Account mÄste InternetÄtkomst ges till ASA. .
Kort sagt, ASA behövs för:
- HTTPS-Ätkomst till Internet;
- tidsynkronisering (korrektast via NTP);
- en angiven DNS-server;
- Logga in via telnet pÄ vÄra ASA och gör instÀllningar för att aktivera licensen via 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 ! ! LÄt oss kontrollera DNS-funktionaliteten: ! 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: !!!!! ! ! Kontrollera NTP-synkronisering: ! 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 ! ! Installera konfigurationen för vÄr ASAv för Smart-Licensing (enligt din profil, i mitt fall 100M som exempel) ! ciscoasa(config)# license smart ciscoasa(config-smart-lic)# feature tier standard ciscoasa(config-smart-lic)# throughput level 100M ! ! Om det behövs kan InternetÄtkomst konfigureras via proxy, anvÀnd följande kommandon: !call-home ! http-proxy ip_address port port ! ! DÀrefter klistrar vi in den kopierade token frÄn Smart-Account-portalen (<token>) och registrerar licensen ! ciscoasa(config)# end ciscoasa# license smart register idtoken <token>- Kontrollera att enheten har registrerat licensen framgÄngsrikt och att krypteringsalternativ Àr tillgÀngliga:


Konfigurera grundlÀggande SSL-VPN pÄ varje gateway
- DÀrefter konfigurerar vi Ätkomst via SSH och 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 ! ! SÀtt upp HTTPS-server för ASDM pÄ port 445 för att inte krocka med SSL-VPN-portalen ! vpn-demo-1(config)# http server enable 445 !- För att anvÀnda ASDM mÄste du först ladda ner det frÄn cisco.com, i mitt fall Àr det följande fil:

- För att anvÀnda AnyConnect-klienten behöver du ladda ner en bild för varje desktop-operativsystem som ska anvÀndas (planerad anvÀndning av Linux/Windows/MAC) som krÀver en fil med Headend Deployment Package i namnet:

- De nedladdade filerna kan laddas upp, till exempel pÄ en FTP-server och överföras till varje enskild ASA:

- Vi konfigurerar ASDM och sjÀlv-signerade certifikat för SSL-VPN (i produktion rekommenderas det att anvÀnda ett betrodd certifikat). Den installerade FQDN för den virtuella klusteradressen (vpn-demo.ashes.cc), samt varje FQDN som Àr kopplad till den externa adressen för varje nod i klustret, mÄste kunna resolvas i den externa DNS-zonen till IP-adressen för OUTSIDE-grÀnssnittet (eller till den mappade adressen, om port forwarding för udp/443 (DTLS) och tcp/443(TLS) anvÀnds). Detaljerad information om certifikatkraven finns i avsnittet Certificate Verification dokumentationen.
! 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 % Det fullt kvalificerade domĂ€nnamnet i certifikatet kommer att vara: vpn-demo.ashes.cc Generera SjĂ€lv-Signerat Certifikat? [yes/no]: yes vpn-demo-1(config)# ! vpn-demo-1(config)# sh cry ca certificates Certifikat Status: TillgĂ€ngligt Certifikatserienummer: 4d43725e Certifikatets anvĂ€ndning: AllmĂ€nt syfte Offentligt nyckeltyp: RSA (4096 bitar) Signaturalgoritm: SHA256 med RSA-kryptering UtfĂ€rdarnamn: serialNumber=9A439T02F95 hostname=vpn-demo.ashes.cc cn=*.ashes.cc ou=ashes-lab o=ashes c=ru Ămnesnamn: serialNumber=9A439T02F95 hostname=vpn-demo.ashes.cc cn=*.ashes.cc ou=ashes-lab o=ashes c=ru Giltighetdatum: startdatum: 00:16:17 MSK 19 Mar 2020 slutdatum: 00:16:17 MSK 17 Mar 2030 Lagring: konfiguration Associerade tillitspunkter: SELF CA-certifikat Status: TillgĂ€ngligt Certifikatserienummer: 0509 Certifikatets anvĂ€ndning: AllmĂ€nt syfte Offentligt nyckeltyp: RSA (4096 bitar) Signaturalgoritm: SHA1 med RSA-kryptering UtfĂ€rdarnamn: cn=QuoVadis Root CA 2 o=QuoVadis Limited c=BM Ămnesnamn: cn=QuoVadis Root CA 2 o=QuoVadis Limited c=BM Giltighetdatum: startdatum: 21:27:00 MSK 24 Nov 2006 slutdatum: 21:23:33 MSK 24 Nov 2031 Lagring: konfiguration Associerade tillitspunkter: _SmartCallHome_ServerCA- För att kontrollera ASDM:s funktionalitet, kom ihĂ„g att ange porten, till exempel:

- LÄt oss göra grundlÀggande instÀllningar av tunneln:
- Vi gör det möjligt att fÄ tillgÄng till det interna nÀtverket via tunneln samtidigt som vi dirigerar internettrafik direkt (inte den sÀkraste metoden utan skydd pÄ den anslutna vÀrden, det finns en risk för intrÄng genom en infekterad vÀrd och stöld av företagsdata, alternativet split-tunnel-policy tunnelall slÀpper all trafik frÄn vÀrden genom tunneln. Trots detta Split-Tunnel ger möjlighet att avlasta VPN-gatewayen och inte behandla internettrafik frÄn vÀrden)
- Vi tilldelar adresser frÄn undernÀtet 192.168.20.0/24 (pool med adresser frÄn 10 till 30 (för nod #1)). PÄ varje nod i VPN-klustret mÄste poolen vara unik.
- Vi kommer att genomföra grundlÀggande autentisering med en lokalt skapad anvÀndare pÄ ASA (detta rekommenderas inte, det Àr den enklaste metoden), bÀttre att göra autentisering via LDAP/RADIUS, och Ànnu bÀttre att koppla Multi-Factor Authentication (MFA), till exempel 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 !- (VALFRITT): I exemplet ovan anvÀnde vi en lokal anvÀndare pÄ MSE för att autentisera externa anvÀndare, vilket naturligtvis, utöver i en laboratoriemiljö, har begrÀnsad tillÀmpning. Jag kommer att ge ett exempel pÄ hur man snabbt anpassar instÀllningen för autentisering pÄ proben med hjÀlp av servern, för exemplet anvÀndes 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 !Denna integration möjliggjorde inte bara snabb integration av autentiseringsproceduren med AD-katalogtjÀnsten, utan ocksÄ att sÀrskilja kopplade enheter till AD, förstÄ om det Àr en företagsenhet eller en personlig enhet och utvÀrdera anslutningstillstÄndet för den kopplade enheten.


- LÄt oss göra instÀllningen Transparent NAT sÄ att trafiken mellan klienten och resurserna i det företagsnÀtverket inte översÀtts:
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- (VALFRITT): För att slÀppa ut vÄra kunder pÄ Internet via ASA (vid anvÀndning av tunnelall Alternativ med hjÀlp av PAT, och Àven kommunicera genom samma grÀnssnitt OUTSIDE dÀr de kopplas samman, krÀvs följande instÀllningar.
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 !- Det Àr oerhört viktigt att ge det interna nÀtverket möjlighet att förstÄ vilken ASA som ska dirigera den omvÀnda trafiken till anvÀndarna. För att Ästadkomma detta mÄste vi göra en redistribuering av rutter för /32 adresserna som tilldelas klienterna.
För nÀrvarande har vi Ànnu inte konfigurerat klustret, men vi har redan fungerande VPN-gateways som man kan ansluta till individuellt via FQDN eller IP.

Vi ser den anslutna klienten i routingtabellen för den första ASA:n:

För att hela vÄrt VPN-kluster och hela företagsnÀtverket ska veta rutten till vÄr klient, kommer vi att redistribuera klientprefixet i det dynamiska routingsprotokollet, till exempel 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-REDISTRIBUTENu har vi en rutt till klienten frÄn den andra gatewayen ASA-2, och anvÀndare anslutna till olika VPN-gateways inom klustret kan till exempel kommunicera direkt genom företags-VoIP-programvaran. Den omvÀnda trafiken frÄn de resurser som begÀrs av anvÀndaren kommer ocksÄ att komma till rÀtt VPN-gateway.

Vi gÄr vidare med konfigurationen av Load-Balancing för klustret.
Adressen 192.168.31.40 kommer att anvĂ€ndas som Virtual IP (VIP â detta Ă€r den primĂ€ra anslutningspunkten för alla VPN-klienter), frĂ„n denna adress kommer klustrets Master att göra en REDIRECT till en mindre belastad nod i klustret. Glöm inte att ange bĂ„de den direkta och omvĂ€nda DNS-posten bĂ„de för varje extern adress/FQDN för varje nod i klustret och fö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)#- Vi kontrollerar klustrets funktion med tvÄ anslutna klienter:

- Vi kommer att göra kundens arbetsupplevelse mer bekvÀm med ett automatiskt nedladdat AnyConnect-profil genom ASDM.

Vi namnger profilen pÄ ett praktiskt sÀtt och kopplar vÄr gruppolicy till den:

Efter nÀsta anslutning kommer denna profil automatiskt att laddas ner och installeras i AnyConnect-klienten, sÄ vid behov av en anslutning Àr det bara att vÀlja den frÄn listan:

Eftersom vi med ASDM har skapat denna profil endast pÄ en ASA, glöm inte att upprepa ÄtgÀrderna pÄ övriga ASA i klustret.
Slutsats: SÄledes har vi snabbt distribuerat ett kluster med flera VPN-gateways med automatisk belastningsbalansering. Att lÀgga till nya noder till klustret Àr enkelt, vilket ger en smidig horisontell skalning genom att distribuera nya virtuella ASAv-maskiner eller anvÀnda fysiska ASA. Den mÄngsidiga AnyConnect-klienten kan kraftigt utöka möjligheterna för sÀker fjÀrranslutning med hjÀlp av funktionen Posture (tillstÄndsvÀrdering), som Àr mest effektivt nÀr den anvÀnds tillsammans med ett system för centraliserad kontroll och övervakning av Ätkomst. Identity Services Engine.
KĂ€lla: habr.com


















