Ontplooi 'n ASA VPN-lasbalanseringskluster

In hierdie artikel wil ek stap-vir-stap instruksies gee oor hoe u die mees skaalbare skema op die oomblik vinnig kan ontplooi. Afstandtoegang VPN toegang gebaseer AnyConnect en Cisco ASA - VPN-lasbalanseringskluster.

Inleiding: Baie maatskappye regoor die wêreld, in die lig van die huidige situasie met COVID-19, wend pogings aan om hul werknemers na afgeleë werk oor te plaas. As gevolg van die massa-oorgang na afgeleë werk, neem die las op die bestaande VPN-poorte van maatskappye krities toe en 'n baie vinnige vermoë om dit te skaal word vereis. Aan die ander kant word baie maatskappye gedwing om die konsep van afgeleë werk inderhaas van nuuts af te bemeester.

Om besighede te help om gerieflike, veilige en skaalbare VPN-toegang vir werknemers in die kortste moontlike tyd te bekom, lisensiëer Cisco die AnyConnect-funksieryke SSL VPN-kliënt vir tot 13 weke. Jy kan ook ASAv neem vir 'n toets (Virtual ASA vir VMWare/Hyper-V/KVM-hipervisors en AWS/Azure-wolkplatforms) van gemagtigde vennote of deur Cisco-verteenwoordigers te kontak wat saam met jou werk.

Die prosedure vir die uitreiking van AnyConnect COVID-19-lisensies word hier beskryf.

Ek het 'n stap-vir-stap-gids voorberei vir 'n eenvoudige implementering van VPN Load-Balancing Cluster as die mees skaalbare VPN-tegnologie.

Die voorbeeld hieronder sal redelik eenvoudig wees in terme van die verifikasie- en magtigingsalgoritmes wat gebruik word, maar sal 'n goeie opsie wees vir 'n vinnige begin (wat tans nie genoeg is vir baie nie) met die moontlikheid van in-diepte aanpassing by jou behoeftes tydens die ontplooiing proses.

Kort inligting: Skynprivaatnetwerk Load Balancing Cluster-tegnologie is nie 'n failover en nie 'n groeperingsfunksie in sy oorspronklike sin nie, hierdie tegnologie kan heeltemal verskillende ASA-modelle kombineer (met sekere beperkings) om 'n laaibalans van afstandtoegang-VPN-verbindings te laai. Daar is geen sinchronisasie van sessies en konfigurasies tussen die nodusse van so 'n cluster nie, maar dit is moontlik om outomatiese laaibalans VPN-verbindings te laai en fouttoleransie van VPN-verbindings te verseker totdat ten minste een aktiewe nodus in die cluster oorbly. Die las in die cluster word outomaties gebalanseer, afhangende van die werklading van die nodusse deur die aantal VPN-sessies.

Vir failover van spesifieke nodusse van die groepering (indien nodig), kan 'n lêer gebruik word, sodat die aktiewe verbinding deur die Primêre nodus van die lêer hanteer sal word. Die oorlêer is nie 'n noodsaaklike voorwaarde vir die versekering van fouttoleransie binne die Load-Balancing cluster nie, die cluster self, in die geval van 'n nodus mislukking, sal die gebruikersessie na 'n ander lewendige nodus oordra, maar sonder om die verbindingstatus te stoor, wat presies is verskaf deur die lêer. Gevolglik is dit moontlik om, indien nodig, hierdie twee tegnologieë te kombineer.

'n VPN-lasbalanseringskluster kan meer as twee nodusse bevat.

VPN Load-Balancing Cluster word ondersteun op ASA 5512-X en hoër.

Aangesien elke ASA binne die VPN Load-Balancing-kluster 'n onafhanklike eenheid is wat instellings betref, voer ons alle konfigurasiestappe individueel op elke individuele toestel uit.

Tegnologie besonderhede hier

Die logiese topologie van die gegewe voorbeeld:

Ontplooi 'n ASA VPN-lasbalanseringskluster

Primêre ontplooiing:

  1. Ons ontplooi ASAv-gevalle van die sjablone wat ons benodig (ASAv5/10/30/50) vanaf die prent.

  2. Ons ken die BINNE / BUITE-koppelvlakke toe aan dieselfde VLAN's (buite in sy eie VLAN, BINNE in sy eie, maar oor die algemeen binne die groepie, sien die topologie), is dit belangrik dat koppelvlakke van dieselfde tipe in dieselfde L2-segment is.

  3. Lisensies:

    • Op die oomblik sal die ASAv-installasie geen lisensies hê nie en sal beperk word tot 100kbps.
    • Om 'n lisensie te installeer, moet jy 'n teken in jou Smart-rekening genereer: https://software.cisco.com/ -> Slim sagteware-lisensiëring
    • Klik op die knoppie in die venster wat oopmaak Nuwe Token

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Maak seker dat daar 'n aktiewe veld in die venster wat oopmaak en 'n regmerkie gemerk is Laat uitvoerbeheerde funksionaliteit toe… Sonder hierdie veld aktief, sal jy nie die funksies van sterk enkripsie en dienooreenkomstig VPN kan gebruik nie. As hierdie veld nie aktief is nie, kontak asseblief jou rekeningspan met 'n aktiveringsversoek.

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Nadat u op die knoppie gedruk het Skep teken, 'n teken sal geskep word wat ons sal gebruik om 'n lisensie vir ASAv te bekom, kopieer dit:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Herhaal stappe C,D,E vir elke ontplooide ASAv.
    • Om dit makliker te maak om die teken te kopieer, laat ons telnet tydelik toe. Kom ons konfigureer elke ASA (die voorbeeld hieronder illustreer die instellings op ASA-1). telnet werk nie met buite nie, as jy dit regtig nodig het, verander sekuriteitsvlak na 100 na buite, en stuur dit dan terug.

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

    • Om 'n teken in die Smart-Account-wolk te registreer, moet jy internettoegang vir ASA verskaf, besonderhede hier.

    Kortom, ASA is nodig:

    • toegang via HTTPS tot die internet;
    • tydsinchronisasie (meer korrek, via NTP);
    • geregistreerde DNS-bediener;
      • Ons telnet na ons ASA en maak instellings om die lisensie deur Smart-Account te aktiveer.

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

    • Ons kyk of die toestel 'n lisensie suksesvol geregistreer het en enkripsie-opsies is beskikbaar:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Ontplooi 'n ASA VPN-lasbalanseringskluster

  4. Stel 'n basiese SSL-VPN op elke poort op

    • Stel dan toegang op via SSH en 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 
    !

    • Vir ASDM om te werk, moet jy dit eers van die cisco.com webwerf aflaai, in my geval is dit die volgende lêer:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Vir die AnyConnect-kliënt om te werk, moet jy 'n prent na elke ASA oplaai vir elke rekenaarkliënt-bedryfstelsel wat gebruik word (beplan om Linux / Windows / MAC te gebruik), jy sal 'n lêer nodig hê met Koppunt-ontplooiingspakket In die titel:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Die afgelaaide lêers kan byvoorbeeld na 'n FTP-bediener opgelaai word en na elke individuele ASA opgelaai word:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Ons konfigureer ASDM en Self-Signed sertifikaat vir SSL-VPN (dit word aanbeveel om 'n betroubare sertifikaat in produksie te gebruik). Die vasgestelde FQDN van die virtuele groepadres (vpn-demo.ashes.cc), sowel as elke FQDN wat met die eksterne adres van elke groepnodus geassosieer word, moet in die eksterne DNS-sone na die IP-adres van die BUITE-koppelvlak (of na die gekarteerde adres as poortaanstuur udp/443 gebruik word (DTLS) en tcp/443(TLS)). Gedetailleerde inligting oor die vereistes vir die sertifikaat word in die afdeling gespesifiseer Sertifikaatverifikasie dokumentasie.

    !
    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               

    • Moenie vergeet om die poort te spesifiseer om seker te maak ASDM werk nie, byvoorbeeld:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Kom ons voer die basiese instellings van die tonnel uit:
    • Kom ons maak die korporatiewe netwerk beskikbaar deur die tonnel, en laat die internet direk gaan (nie die veiligste metode as daar geen beskerming op die verbindende gasheer is nie, dit is moontlik om deur 'n besmette gasheer te penetreer en korporatiewe data te vertoon, opsie verdeel-tonnel-beleid tonnelall sal alle gasheerverkeer die tonnel inlaat. Nietemin gesplete tonnel maak dit moontlik om die VPN-poort af te laai en nie gasheerinternetverkeer te verwerk nie)
    • Kom ons reik adresse uit die 192.168.20.0/24 subnet aan gashere in die tonnel (poel van 10 tot 30 adresse (vir nodus #1)). Elke nodus van die VPN-kluster moet sy eie poel hê.
    • Ons sal basiese verifikasie uitvoer met 'n plaaslik geskepde gebruiker op die ASA (Dit word nie aanbeveel nie, dit is die maklikste metode), dit is beter om verifikasie te doen deur LDAP/RADIUS, of nog beter, das Multi-faktor-verifikasie (MFA)byvoorbeeld 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
    !

    • (OPSIONEEL): In die voorbeeld hierbo het ons 'n plaaslike gebruiker op die ITU gebruik om afgeleë gebruikers te verifieer, wat natuurlik, behalwe in die laboratorium, swak toepaslik is. Ek sal 'n voorbeeld gee van hoe om die instelling vir verifikasie vinnig aan te pas RADIUS bediener, byvoorbeeld gebruik 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 
    !

    Hierdie integrasie het dit moontlik gemaak om nie net die verifikasieprosedure vinnig met die AD-gidsdiens te integreer nie, maar ook om te onderskei of die gekoppelde rekenaar aan AD behoort, om te verstaan ​​of hierdie toestel korporatief of persoonlik is, en om die status van die gekoppelde toestel te assesseer .

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Kom ons stel deursigtige NAT op sodat die verkeer tussen die kliënt en die hulpbronne van die korporatiewe netwerknetwerk nie gekrabbel word nie:

    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

    • (OPSIONEEL): Ten einde ons kliënte aan die internet bloot te stel deur die ASA (wanneer gebruik word tonnel opsies) deur PAT te gebruik, sowel as om deur dieselfde BUITE-koppelvlak te gaan waaruit hulle gekoppel is, moet jy die volgende instellings maak

    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 
    !

    • Wanneer 'n cluster gebruik word, is dit uiters belangrik om die interne netwerk in staat te stel om te verstaan ​​watter ASA terugvoerverkeer na gebruikers moet stuur, hiervoor moet jy roetes / 32 adresse uitgereik aan kliënte herverdeel.
      Op die oomblik het ons nog nie die cluster gekonfigureer nie, maar ons het reeds werkende VPN-poorte wat individueel via FQDN of IP verbind kan word.

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Ons sien die gekoppelde kliënt in die roeteringtabel van die eerste ASA:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Sodat ons hele VPN-kluster en die hele korporatiewe netwerk die roete na ons kliënt kan ken, sal ons die kliëntvoorvoegsel herverdeel na 'n dinamiese roeteringprotokol, byvoorbeeld 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

    Nou het ons 'n roete na die kliënt vanaf die tweede ASA-2-poort en gebruikers wat aan verskillende VPN-poorte binne die groepering gekoppel is, kan byvoorbeeld direk deur 'n korporatiewe sagtefoon kommunikeer, asook verkeer terugstuur vanaf die hulpbronne wat deur die gebruiker versoek word. kom na die gewenste VPN-poort:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

  5. Kom ons gaan voort met die opstel van die Load-Balancing cluster.

    Die adres 192.168.31.40 sal as 'n virtuele IP gebruik word (VIP - alle VPN-kliënte sal aanvanklik daaraan koppel), vanaf hierdie adres sal die Meester-kluster 'n HERDIREK na 'n minder gelaaide groepknoop maak. Moenie vergeet om te skryf nie vorentoe en omgekeerde DNS-rekord beide vir elke eksterne adres / FQDN van elke nodus van die cluster, en vir 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)#

    • Ons kontroleer die werking van die groepering met twee gekoppelde kliënte:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    • Kom ons maak die kliënt-ervaring geriefliker met die outomaties gelaaide AnyConnect-profiel via ASDM.

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Ons benoem die profiel op 'n gerieflike manier en assosieer ons groepbeleid daarmee:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Na die volgende verbinding van die kliënt, sal hierdie profiel outomaties afgelaai en in die AnyConnect-kliënt geïnstalleer word, so as jy moet koppel, moet jy dit net uit die lys kies:

    Ontplooi 'n ASA VPN-lasbalanseringskluster

    Aangesien ons hierdie profiel op slegs een ASA geskep het met ASDM, moenie vergeet om die stappe op die ander ASA's in die groep te herhaal nie.

Gevolgtrekking: Ons het dus vinnig 'n groep van verskeie VPN-poorte met outomatiese lasbalansering ontplooi. Dit is maklik om nuwe nodusse by die groepering te voeg, met eenvoudige horisontale skaal deur nuwe ASAv virtuele masjiene te ontplooi of hardeware ASA's te gebruik. Die kenmerkryke AnyConnect-kliënt kan veilige afstandverbinding aansienlik verbeter deur die Postuur (staatsberamings), mees effektief gebruik in samewerking met die stelsel van gesentraliseerde beheer en toegangsrekeningkunde Identiteitsdienste-enjin.

Bron: will.com

Voeg 'n opmerking