Distribuera ett ASA VPN Load-Balancing Cluster

I den här artikeln skulle jag vilja ge steg-för-steg-instruktioner om hur du snabbt kan distribuera det mest skalbara schemat för tillfället. Fjärråtkomst VPN åtkomstbaserad AnyConnect och Cisco ASA - VPN Load Balancing Cluster.

Introduktion: Många företag runt om i världen, med tanke på den nuvarande situationen med covid-19, anstränger sig för att flytta över sina anställda till distansarbete. På grund av massövergången till distansarbete ökar belastningen på företagens befintliga VPN-gateways kritiskt och en mycket snabb förmåga att skala dem krävs. Å andra sidan tvingas många företag att hastigt bemästra konceptet med distansarbete från grunden.

För att hjälpa företag att uppnå bekväm, säker och skalbar VPN-åtkomst för anställda på kortast möjliga tid, licensierar Cisco den funktionsrika SSL-VPN-klienten AnyConnect i upp till 13 veckor. Du kan också ta ASAv för ett test (Virtual ASA för VMWare/Hyper-V/KVM-hypervisorer och AWS/Azure molnplattformar) från auktoriserade partners eller genom att kontakta Cisco-representanter som arbetar med dig.

Proceduren för att utfärda AnyConnect COVID-19-licenser beskrivs här.

Jag har förberett en steg-för-steg-guide för en enkel implementering av VPN Load-Balancing Cluster som den mest skalbara VPN-tekniken.

Exemplet nedan kommer att vara ganska enkelt vad gäller de autentiserings- och auktoriseringsalgoritmer som används, men kommer att vara ett bra alternativ för en snabbstart (vilket för närvarande inte räcker för många) med möjlighet till djupgående anpassning till dina behov under driftsättningen bearbeta.

Kort information: VPN Load Balancing Cluster-teknologi är inte en failover och inte en klustringsfunktion i sin ursprungliga mening, den här tekniken kan kombinera helt olika ASA-modeller (med vissa begränsningar) för att belasta Remote-Access VPN-anslutningar. Det finns ingen synkronisering av sessioner och konfigurationer mellan noderna i ett sådant kluster, men det är möjligt att automatiskt ladda balanserade VPN-anslutningar och säkerställa feltolerans för VPN-anslutningar tills minst en aktiv nod finns kvar i klustret. Belastningen i klustret balanseras automatiskt beroende på nodernas arbetsbelastning med antalet VPN-sessioner.

För failover av specifika noder i klustret (om så krävs) kan en filer användas, så den aktiva anslutningen kommer att hanteras av den primära noden för filerna. Överföringen är inte ett nödvändigt villkor för att säkerställa feltolerans inom lastbalanseringsklustret, klustret självt, i händelse av ett nodfel, kommer att överföra användarsessionen till en annan livenod, men utan att spara anslutningsstatusen, vilket är exakt tillhandahållen av filialen. Följaktligen är det möjligt att, om nödvändigt, kombinera dessa två teknologier.

Ett VPN Load-Balancing-kluster kan innehålla mer än två noder.

VPN Load-Balancing Cluster stöds på ASA 5512-X och högre.

Eftersom varje ASA inom VPN Load-Balancing-klustret är en oberoende enhet vad gäller inställningar, utför vi alla konfigurationssteg individuellt på varje enskild enhet.

Tekniska detaljer här

Den logiska topologin för det givna exemplet:

Distribuera ett ASA VPN Load-Balancing Cluster

Primär implementering:

  1. Vi distribuerar ASAv-instanser av mallarna vi behöver (ASAv5/10/30/50) från bilden.

  2. Vi tilldelar INSIDE / OUTSIDE-gränssnitten till samma VLAN (Utanför i sitt eget VLAN, INSIDE i sitt eget, men generellt inom klustret, se topologin), det är viktigt att gränssnitt av samma typ är i samma L2-segment.

  3. Licenser:

    • För närvarande kommer ASAv-installationen inte att ha några licenser och kommer att vara begränsad till 100 kbps.
    • För att installera en licens måste du generera en token på ditt Smart-konto: https://software.cisco.com/ -> Smart mjukvarulicensiering
    • Klicka på knappen i fönstret som öppnas Ny token

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Se till att i fönstret som öppnas finns ett aktivt fält och en bockmarkering Tillåt exportkontrollerad funktionalitet… Utan detta fält aktivt kommer du inte att kunna använda funktionerna för stark kryptering och följaktligen VPN. Om detta fält inte är aktivt, kontakta ditt kontoteam med en aktiveringsförfrågan.

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Efter att ha tryckt på knappen Skapa Token, kommer en token att skapas som vi kommer att använda för att få en licens för ASAv, kopiera den:

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Upprepa steg C,D,E för varje utplacerad ASAv.
    • För att göra det enklare att kopiera token, låt oss tillfälligt tillåta telnet. Låt oss konfigurera varje ASA (exemplet nedan illustrerar inställningarna på ASA-1). telnet fungerar inte med utsidan, om du verkligen behöver det, ändra säkerhetsnivån till 100 till utsidan och returnera den sedan.

    !
    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 Smart-Account-molnet måste du tillhandahålla Internetåtkomst för ASA, detaljer här.

    Kort sagt, ASA behövs:

    • åtkomst via HTTPS till Internet;
    • tidssynkronisering (mer korrekt, via NTP);
    • registrerad DNS-server;
      • Vi telnet till vår ASA och gör inställningar för att aktivera licensen genom 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 kontrollerar att enheten har registrerat en licens och att krypteringsalternativ är tillgängliga:

    Distribuera ett ASA VPN Load-Balancing Cluster

    Distribuera ett ASA VPN Load-Balancing Cluster

  4. Konfigurera en grundläggande SSL-VPN på varje gateway

    • Konfigurera sedan å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
    !
    ! Поднимем сервер HTTPS для ASDM на порту 445 чтобы не пересекаться с SSL-VPN порталом
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • För att ASDM ska fungera måste du först ladda ner det från webbplatsen cisco.com, i mitt fall är det följande fil:

    Distribuera ett ASA VPN Load-Balancing Cluster

    • För att AnyConnect-klienten ska fungera måste du ladda upp en bild till varje ASA för varje skrivbordsklient som används (planerad att använda Linux / Windows / MAC), du behöver en fil med Headend-distributionspaket I rubriken:

    Distribuera ett ASA VPN Load-Balancing Cluster

    • De nedladdade filerna kan laddas upp till exempel till en FTP-server och laddas upp till varje enskild ASA:

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Vi konfigurerar ASDM och självsignerat certifikat för SSL-VPN (det rekommenderas att använda ett pålitligt certifikat i produktionen). Den inställda FQDN för den virtuella klusteradressen (vpn-demo.ashes.cc), såväl som varje FQDN som är associerad med den externa adressen för varje klusternod, måste lösas i den externa DNS-zonen till IP-adressen för OUTSIDE-gränssnittet (eller till den mappade adressen om portvidarebefordran udp/443 används (DTLS) och tcp/443(TLS)). Detaljerad information om kraven för certifikatet anges i avsnittet Certifikatverifiering dokumentation.

    !
    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               

    • Glöm inte att ange porten för att kontrollera att ASDM fungerar, till exempel:

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Låt oss utföra de grundläggande inställningarna för tunneln:
    • Låt oss göra företagsnätverket tillgängligt genom tunneln och släppa Internet direkt (inte den säkraste metoden om det inte finns några skydd på den anslutande värden, det är möjligt att penetrera genom en infekterad värd och visa företagsdata, alternativ split-tunnel-policy tunnelall kommer att släppa in all värdtrafik i tunneln. Ändå delad tunnel gör det möjligt att ladda ner VPN-gatewayen och inte bearbeta värdinternettrafik)
    • Låt oss utfärda adresser från undernätet 192.168.20.0/24 till värdar i tunneln (pool från 10 till 30 adresser (för nod #1)). Varje nod i VPN-klustret måste ha sin egen pool.
    • Vi kommer att utföra grundläggande autentisering med en lokalt skapad användare på ASA (Detta rekommenderas inte, detta är den enklaste metoden), det är bättre att göra autentisering genom LDAP/RADIUS, eller ännu bättre, slips Multifaktorautentisering (MFA)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
    !

    • (FRIVILLIG): I exemplet ovan använde vi en lokal användare på ITU för att autentisera fjärranvändare, vilket naturligtvis, förutom i laboratoriet, är dåligt tillämpligt. Jag kommer att ge ett exempel på hur man snabbt anpassar inställningen för autentisering till RADIE server, till exempel används 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 gjorde det möjligt att inte bara snabbt integrera autentiseringsproceduren med AD-katalogtjänsten, utan också att särskilja om den anslutna datorn tillhör AD, att förstå om denna enhet är företags- eller personlig, och att bedöma statusen för den anslutna enheten .

    Distribuera ett ASA VPN Load-Balancing Cluster

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Låt oss konfigurera Transparent NAT så att trafiken mellan klienten och resurserna i företagets nätverksnätverk inte klottras:

    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

    • (FRIVILLIG): För att exponera våra kunder för Internet via ASA (när du använder tunnelall alternativ) med PAT, samt avsluta genom samma OUTSIDE-gränssnitt som de är anslutna från, måste du göra 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 
    !

    • När du använder ett kluster är det extremt viktigt att göra det möjligt för det interna nätverket att förstå vilken ASA som ska dirigera returtrafik till användare, för detta måste du omfördela rutter / 32 adresser som utfärdas till klienter.
      För tillfället har vi inte konfigurerat klustret ännu, men vi har redan fungerande VPN-gateways som kan kopplas individuellt via FQDN eller IP.

    Distribuera ett ASA VPN Load-Balancing Cluster

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

    Distribuera ett ASA VPN Load-Balancing Cluster

    För att hela vårt VPN-kluster och hela företagsnätverket ska känna till vägen till vår klient kommer vi att omfördela klientprefixet till ett dynamiskt routingprotokoll, 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 ASA-2-gatewayen och användare som är anslutna till olika VPN-gateways inom klustret kan till exempel kommunicera direkt via en företags softphone, samt returnera trafik från de resurser som användaren begär. kom till önskad VPN-gateway:

    Distribuera ett ASA VPN Load-Balancing Cluster

  5. Låt oss gå vidare till att konfigurera lastbalanseringsklustret.

    Adressen 192.168.31.40 kommer att användas som en virtuell IP (VIP - alla VPN-klienter kommer initialt att ansluta till den), från denna adress kommer Masterklustret att göra en OMDIREKTERING till en mindre belastad klusternod. Glöm inte att skriva framåt och bakåt DNS-post 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:

    Distribuera ett ASA VPN Load-Balancing Cluster

    • Låt oss göra kundupplevelsen mer bekväm med den automatiskt laddade AnyConnect-profilen via ASDM.

    Distribuera ett ASA VPN Load-Balancing Cluster

    Vi namnger profilen på ett bekvämt sätt och kopplar vår grupppolicy till den:

    Distribuera ett ASA VPN Load-Balancing Cluster

    Efter nästa anslutning av klienten kommer denna profil automatiskt att laddas ner och installeras i AnyConnect-klienten, så om du behöver ansluta, välj den från listan:

    Distribuera ett ASA VPN Load-Balancing Cluster

    Eftersom vi skapade den här profilen på endast en ASA med ASDM, glöm inte att upprepa stegen på de andra ASA i klustret.

Slutsats: Därför distribuerade vi snabbt ett kluster av flera VPN-gateways med automatisk lastbalansering. Det är enkelt att lägga till nya noder till klustret, med enkel horisontell skalning genom att distribuera nya virtuella ASAv-maskiner eller använda hårdvaru-ASA:er. Den funktionsrika AnyConnect-klienten kan avsevärt förbättra säker fjärranslutning genom att använda Hållning (statliga uppskattningar), används mest effektivt i samband med systemet för centraliserad kontroll och åtkomstredovisning Identity Services Engine.

Källa: will.com

Lägg en kommentar