Distribuere en ASA VPN Load-Balancing Cluster

I denne artikkelen vil jeg gjerne gi trinnvise instruksjoner om hvordan du raskt kan distribuere den mest skalerbare ordningen for øyeblikket. Fjerntilgang VPN tilgang basert AnyConnect og Cisco ASA - VPN Load Balancing Cluster.

Introduksjon: Mange selskaper rundt om i verden, i lys av den nåværende situasjonen med COVID-19, gjør en innsats for å overføre sine ansatte til fjernarbeid. På grunn av masseovergangen til eksternt arbeid, øker belastningen på eksisterende VPN-gatewayer til selskaper kritisk, og det kreves en veldig rask evne til å skalere dem. På den annen side er mange bedrifter tvunget til i all hast å mestre konseptet med fjernarbeid fra bunnen av.

For å hjelpe bedrifter med å oppnå praktisk, sikker og skalerbar VPN-tilgang for ansatte på kortest mulig tid, lisensierer Cisco den funksjonsrike SSL-VPN-klienten AnyConnect i opptil 13 uker. Du kan også ta ASAv for en test (Virtual ASA for VMWare/Hyper-V/KVM-hypervisorer og AWS/Azure-skyplattformer) fra autoriserte partnere eller ved å kontakte Cisco-representanter som samarbeider med deg.

Prosedyren for å utstede AnyConnect COVID-19-lisenser er beskrevet her.

Jeg har utarbeidet en trinn-for-trinn-guide for en enkel distribusjon av VPN Load-Balancing Cluster som den mest skalerbare VPN-teknologien.

Eksemplet nedenfor vil være ganske enkelt med tanke på autentiserings- og autorisasjonsalgoritmene som brukes, men vil være et godt alternativ for en rask start (som foreløpig ikke er nok for mange) med mulighet for dybdetilpasning til dine behov under utrullingen prosess.

Kort informasjon: VPN Load Balancing Cluster-teknologi er ikke en failover og ikke en klyngefunksjon i sin opprinnelige forstand, denne teknologien kan kombinere helt forskjellige ASA-modeller (med visse begrensninger) for å lastebalanse VPN-tilkoblinger med ekstern tilgang. Det er ingen synkronisering av økter og konfigurasjoner mellom nodene til en slik klynge, men det er mulig å automatisk lastebalanse VPN-tilkoblinger og sikre feiltoleranse for VPN-tilkoblinger inntil minst én aktiv node forblir i klyngen. Belastningen i klyngen balanseres automatisk avhengig av arbeidsbelastningen til nodene med antall VPN-økter.

For failover av spesifikke noder i klyngen (hvis nødvendig), kan en filer brukes, slik at den aktive forbindelsen vil bli håndtert av den primære noden til filen. Fileoveren er ikke en nødvendig betingelse for å sikre feiltoleranse innenfor Load-Balancing-klyngen, klyngen selv, ved en nodefeil, vil overføre brukersesjonen til en annen live node, men uten å lagre tilkoblingsstatusen, som er nøyaktig levert av filialen. Følgelig er det mulig, om nødvendig, å kombinere disse to teknologiene.

En VPN Load-Balancing-klynge kan inneholde mer enn to noder.

VPN Load-Balancing Cluster støttes på ASA 5512-X og nyere.

Siden hver ASA innenfor VPN Load-Balancing-klyngen er en uavhengig enhet når det gjelder innstillinger, utfører vi alle konfigurasjonstrinn individuelt på hver enkelt enhet.

Teknologidetaljer her

Den logiske topologien til det gitte eksemplet:

Distribuere en ASA VPN Load-Balancing Cluster

Primær distribusjon:

  1. Vi distribuerer ASAv-forekomster av malene vi trenger (ASAv5/10/30/50) fra bildet.

  2. Vi tildeler INSIDE / OUTSIDE-grensesnittene til de samme VLAN-ene (Utenfor i sitt eget VLAN, INSIDE i sitt eget, men generelt innenfor klyngen, se topologien), er det viktig at grensesnitt av samme type er i samme L2-segment.

  3. Lisenser:

    • For øyeblikket vil ASAv-installasjonen ikke ha noen lisenser og vil være begrenset til 100 kbps.
    • For å installere en lisens må du generere et token på Smart-kontoen din: https://software.cisco.com/ -> Smart programvarelisensiering
    • Klikk på knappen i vinduet som åpnes Ny token

    Distribuere en ASA VPN Load-Balancing Cluster

    • Sørg for at det er et aktivt felt i vinduet som åpnes og at det er krysset av Tillat eksportkontrollert funksjonalitet… Uten dette feltet aktivt, vil du ikke kunne bruke funksjonene til sterk kryptering og følgelig VPN. Hvis dette feltet ikke er aktivt, vennligst kontakt kontoteamet ditt med en aktiveringsforespørsel.

    Distribuere en ASA VPN Load-Balancing Cluster

    • Etter å ha trykket på knappen Lag Token, vil det opprettes et token som vi vil bruke for å få en lisens for ASAv, kopier det:

    Distribuere en ASA VPN Load-Balancing Cluster

    • Gjenta trinn C,D,E for hver utplasserte ASAv.
    • For å gjøre det enklere å kopiere tokenet, la oss midlertidig tillate telnet. La oss konfigurere hver ASA (eksemplet nedenfor illustrerer innstillingene på ASA-1). telnet fungerer ikke med utenfor, hvis du virkelig trenger det, endre sikkerhetsnivået til 100 til utenfor, og returner det deretter tilbake.

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

    • For å registrere et token i Smart-Account-skyen, må du gi Internett-tilgang for ASA, detaljer her.

    Kort sagt, ASA er nødvendig:

    • tilgang via HTTPS til Internett;
    • tidssynkronisering (mer korrekt, via NTP);
    • registrert DNS-server;
      • Vi telnet til vårt ASA og gjør innstillinger for å aktivere lisensen gjennom 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>

    • Vi sjekker at enheten har registrert en lisens og krypteringsalternativer er tilgjengelige:

    Distribuere en ASA VPN Load-Balancing Cluster

    Distribuere en ASA VPN Load-Balancing Cluster

  4. Sett opp en grunnleggende SSL-VPN på hver gateway

    • Deretter konfigurerer du tilgang via SSH og 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 
    !

    • For at ASDM skal fungere, må du først laste det ned fra nettstedet cisco.com, i mitt tilfelle er det følgende fil:

    Distribuere en ASA VPN Load-Balancing Cluster

    • For at AnyConnect-klienten skal fungere, må du laste opp et bilde til hver ASA for hvert brukt klientoperativsystem (planlagt å bruke Linux / Windows / MAC), du trenger en fil med Headend-implementeringspakke I tittelen:

    Distribuere en ASA VPN Load-Balancing Cluster

    • De nedlastede filene kan for eksempel lastes opp til en FTP-server og lastes opp til hver enkelt ASA:

    Distribuere en ASA VPN Load-Balancing Cluster

    • Vi konfigurerer ASDM og selvsignert sertifikat for SSL-VPN (det anbefales å bruke et klarert sertifikat i produksjon). Den angitte FQDN for den virtuelle klyngeadressen (vpn-demo.ashes.cc), så vel som hver FQDN knyttet til den eksterne adressen til hver klyngennode, må løses i den eksterne DNS-sonen til IP-adressen til OUTSIDE-grensesnittet (eller til den tilordnede adressen hvis portvideresending udp/443 brukes (DTLS) og tcp/443(TLS)). Detaljert informasjon om kravene til sertifikatet er spesifisert i avsnittet Sertifikatbekreftelse dokumentasjon.

    !
    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               

    • Ikke glem å spesifisere porten for å sjekke at ASDM fungerer, for eksempel:

    Distribuere en ASA VPN Load-Balancing Cluster

    • La oss utføre de grunnleggende innstillingene for tunnelen:
    • La oss gjøre bedriftsnettverket tilgjengelig gjennom tunnelen, og la Internett gå direkte (ikke den sikreste metoden hvis det ikke er noen beskyttelse på den tilkoblede verten, det er mulig å trenge gjennom en infisert vert og vise bedriftsdata, alternativ split-tunnel-policy tunnelall vil slippe all vertstrafikk inn i tunnelen. Likevel delt tunnel gjør det mulig å avlaste VPN-gatewayen og ikke behandle vertsinternetttrafikk)
    • La oss utstede adresser fra 192.168.20.0/24-undernettet til verter i tunnelen (pool fra 10 til 30 adresser (for node #1)). Hver node i VPN-klyngen må ha sin egen pool.
    • Vi vil utføre grunnleggende autentisering med en lokalt opprettet bruker på ASA (Dette anbefales ikke, dette er den enkleste metoden), det er bedre å gjøre autentisering gjennom LDAP/RADIUS, eller enda bedre, slips Multifaktorautentisering (MFA)eksempel 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
    !

    • (VALGFRI): I eksemplet ovenfor brukte vi en lokal bruker på ITU for å autentisere eksterne brukere, noe som selvfølgelig, bortsett fra i laboratoriet, er dårlig anvendelig. Jeg vil gi et eksempel på hvordan du raskt kan tilpasse innstillingen for autentisering til RADIUS server, for eksempel brukt 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 
    !

    Denne integrasjonen gjorde det mulig ikke bare raskt å integrere autentiseringsprosedyren med AD-katalogtjenesten, men også å skille om den tilkoblede datamaskinen tilhører AD, for å forstå om denne enheten er bedrifts- eller personlig, og å vurdere statusen til den tilkoblede enheten .

    Distribuere en ASA VPN Load-Balancing Cluster

    Distribuere en ASA VPN Load-Balancing Cluster

    • La oss konfigurere Transparent NAT slik at trafikken mellom klienten og ressursene til bedriftens nettverksnettverk ikke er skrevet:

    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

    • (VALGFRI): For å eksponere våre kunder for Internett gjennom ASA (ved bruk tunnelall alternativer) ved å bruke PAT, samt gå ut gjennom det samme OUTSIDE-grensesnittet som de er koblet til, må du gjøre følgende innstillinger

    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 
    !

    • Ved bruk av en klynge er det ekstremt viktig å gjøre det interne nettverket i stand til å forstå hvilken ASA som skal rute returtrafikk til brukere, for dette må du omfordele ruter / 32 adresser utstedt til klienter.
      For øyeblikket har vi ikke konfigurert klyngen ennå, men vi har allerede fungerende VPN-gatewayer som kan kobles individuelt via FQDN eller IP.

    Distribuere en ASA VPN Load-Balancing Cluster

    Vi ser den tilkoblede klienten i rutetabellen til den første ASA:

    Distribuere en ASA VPN Load-Balancing Cluster

    For at hele VPN-klyngen og hele bedriftsnettverket skal kjenne ruten til klienten vår, vil vi omdistribuere klientprefikset til en dynamisk rutingprotokoll, for eksempel 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å har vi en rute til klienten fra den andre ASA-2-gatewayen, og brukere koblet til forskjellige VPN-gatewayer i klyngen kan for eksempel kommunisere direkte gjennom en bedrifts softphone, samt returnere trafikk fra ressursene som brukeren ber om. kom til ønsket VPN-gateway:

    Distribuere en ASA VPN Load-Balancing Cluster

  5. La oss gå videre til å konfigurere Load-Balancing-klyngen.

    Adressen 192.168.31.40 vil bli brukt som en virtuell IP (VIP - alle VPN-klienter vil i utgangspunktet koble seg til den), fra denne adressen vil Master-klyngen gjøre en OMDIREKTERING til en mindre belastet klyngennode. Ikke glem å skrive frem og tilbake DNS-post både for hver ekstern adresse / FQDN for hver node i klyngen, og for 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 sjekker driften av klyngen med to tilkoblede klienter:

    Distribuere en ASA VPN Load-Balancing Cluster

    • La oss gjøre kundeopplevelsen mer praktisk med den automatisk lastede AnyConnect-profilen via ASDM.

    Distribuere en ASA VPN Load-Balancing Cluster

    Vi navngir profilen på en praktisk måte og knytter vår gruppepolicy til den:

    Distribuere en ASA VPN Load-Balancing Cluster

    Etter neste tilkobling av klienten, vil denne profilen automatisk lastes ned og installeres i AnyConnect-klienten, så hvis du trenger å koble til, velg den fra listen:

    Distribuere en ASA VPN Load-Balancing Cluster

    Siden vi opprettet denne profilen på bare én ASA ved bruk av ASDM, ikke glem å gjenta trinnene på de andre ASA-ene i klyngen.

Konklusjon: Dermed implementerte vi raskt en klynge av flere VPN-gatewayer med automatisk lastbalansering. Det er enkelt å legge til nye noder til klyngen, med enkel horisontal skalering ved å distribuere nye virtuelle ASAv-maskiner eller bruke maskinvare-ASA-er. Den funksjonsrike AnyConnect-klienten kan i stor grad forbedre sikker ekstern tilkobling ved å bruke Holdning (statlige estimater), mest effektivt brukt i forbindelse med systemet med sentralisert kontroll og tilgangsregnskap Identitetstjenestemotor.

Kilde: www.habr.com

Legg til en kommentar