Implementering av ASA VPN Load-Balancing-kluster

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. Det Àr ocksÄ möjligt att testa ASAv (Virtuell ASA för hypervisorer VMWare/Hyper-V/KVM och molnplattformar AWS/Azure) genom auktoriserade partners eller via kontakt med era Cisco-representanter..

Proceduren för utfÀrdande av AnyConnect-licenser för COVID-19 beskrivs hÀr..

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.

Detaljer om teknologin hÀr

Den logiska topologin för det angivna exemplet:

Implementering av ASA VPN Load-Balancing-kluster

PrimÀr distribution:

  1. Vi distribuerar instanser av ASAv med de mönster vi behöver (ASAv5/10/30/50) frÄn en bild.

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

  3. 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: https://software.cisco.com/ -> Smart Software Licensing
    • I det öppna fönstret trycker du pĂ„ knappen Ny token

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

    • 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. detaljer hĂ€r.

    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:

    Implementering av ASA VPN Load-Balancing-kluster

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

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

    Implementering av ASA VPN Load-Balancing-kluster

    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:

    Implementering av ASA VPN Load-Balancing-kluster

    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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster