Een ASA VPN Load Balancing Cluster implementeren

In dit artikel wil ik stapsgewijze instructies geven over hoe u op dit moment snel het meest schaalbare schema kunt implementeren. VPN voor toegang op afstand toegang gebaseerd AnyConnect en Cisco ASA - VPN Load Balancing-cluster.

Inleiding: Veel bedrijven over de hele wereld doen, gezien de huidige situatie met COVID-19, inspanningen om hun werknemers over te hevelen naar werken op afstand. Door de massale overgang naar werken op afstand neemt de belasting van de bestaande VPN-gateways van bedrijven kritisch toe en is een zeer snelle schaalbaarheid vereist. Aan de andere kant zijn veel bedrijven gedwongen om het concept van werken op afstand vanuit het niets onder de knie te krijgen.

Om bedrijven te helpen om in de kortst mogelijke tijd handige, veilige en schaalbare VPN-toegang voor werknemers te realiseren, geeft Cisco een licentie voor de AnyConnect-functierijke SSL VPN-client voor maximaal 13 weken. U kunt ASAv ook testen (Virtual ASA voor VMWare/Hyper-V/KVM-hypervisors en AWS/Azure-cloudplatforms) van geautoriseerde partners of door contact op te nemen met vertegenwoordigers van Cisco die met u samenwerken.

De procedure voor het uitgeven van AnyConnect COVID-19-licenties wordt hier beschreven.

Ik heb een stapsgewijze handleiding opgesteld voor een eenvoudige implementatie van VPN Load-Balancing Cluster als de meest schaalbare VPN-technologie.

Het onderstaande voorbeeld zal vrij eenvoudig zijn wat betreft de gebruikte authenticatie- en autorisatie-algoritmen, maar het zal een goede optie zijn voor een snelle start (wat op dit moment niet genoeg is voor velen) met de mogelijkheid van diepgaande aanpassing aan uw behoeften tijdens de implementatie proces.

Korte informatie: VPN Load Balancing Cluster-technologie is geen failover en geen clusteringfunctie in de oorspronkelijke zin. Deze technologie kan volledig verschillende ASA-modellen combineren (met bepaalde beperkingen) om VPN-verbindingen met externe toegang in evenwicht te brengen. Er is geen synchronisatie van sessies en configuraties tussen de knooppunten van zo'n cluster, maar het is mogelijk om VPN-verbindingen automatisch te loadbalancen en fouttolerantie van VPN-verbindingen te garanderen totdat er ten minste één actief knooppunt in het cluster overblijft. De belasting in het cluster wordt automatisch gebalanceerd, afhankelijk van de werkbelasting van de knooppunten, door het aantal VPN-sessies.

Voor failover van specifieke knooppunten van het cluster (indien nodig) kan een filer worden gebruikt, zodat de actieve verbinding wordt afgehandeld door het primaire knooppunt van de filer. De fileover is geen noodzakelijke voorwaarde om fouttolerantie binnen het Load-Balancing-cluster te garanderen, het cluster zelf zal, in het geval van een node-storing, de gebruikerssessie overdragen naar een ander live node, maar zonder de verbindingsstatus op te slaan, wat precies verstrekt door de indiener. Dienovereenkomstig is het mogelijk om, indien nodig, deze twee technologieën te combineren.

Een VPN-taakverdelingscluster kan meer dan twee knooppunten bevatten.

VPN Load-Balancing Cluster wordt ondersteund op ASA 5512-X en hoger.

Aangezien elke ASA binnen het VPN Load-Balancing cluster qua instellingen een onafhankelijke eenheid is, voeren we alle configuratiestappen individueel uit op elk individueel apparaat.

Technologie details hier

De logische topologie van het gegeven voorbeeld:

Een ASA VPN Load Balancing Cluster implementeren

Primaire implementatie:

  1. We implementeren ASAv-instanties van de sjablonen die we nodig hebben (ASAv5/10/30/50) van de afbeelding.

  2. We wijzen de INSIDE / OUTSIDE-interfaces toe aan dezelfde VLAN's (buiten in zijn eigen VLAN, INSIDE in zijn eigen, maar over het algemeen binnen het cluster, zie de topologie), het is belangrijk dat interfaces van hetzelfde type zich in hetzelfde L2-segment bevinden.

  3. Licenties:

    • Op dit moment heeft de ASAv-installatie geen licenties en is deze beperkt tot 100 kbps.
    • Om een ​​licentie te installeren, moet u een token genereren in uw Smart-Account: https://software.cisco.com/ -> Slimme softwarelicenties
    • Klik in het geopende venster op de knop Nieuw token

    Een ASA VPN Load Balancing Cluster implementeren

    • Zorg ervoor dat er in het geopende venster een actief veld is en dat er een vinkje is aangevinkt Exportgestuurde functionaliteit toestaan… Zonder dat dit veld actief is, kunt u de functies van sterke codering en dus VPN niet gebruiken. Als dit veld niet actief is, neem dan contact op met uw accountteam met een activeringsverzoek.

    Een ASA VPN Load Balancing Cluster implementeren

    • Na het indrukken van de knop Maak een token, wordt er een token aangemaakt die we zullen gebruiken om een ​​licentie voor ASAv te verkrijgen, kopieer deze:

    Een ASA VPN Load Balancing Cluster implementeren

    • Herhaal stappen C, D, E voor elke ingezette ASAv.
    • Laten we telnet tijdelijk toestaan ​​om het kopiëren van het token te vergemakkelijken. Laten we elke ASA configureren (het onderstaande voorbeeld illustreert de instellingen op ASA-1). telnet werkt niet met buiten, als je het echt nodig hebt, verander het beveiligingsniveau naar 100 naar buiten, en stuur het 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 een ​​token te registreren in de Smart-Account cloud, moet u internettoegang bieden voor ASA, details hier.

    Kortom, ASA is nodig:

    • toegang via HTTPS tot internet;
    • tijdsynchronisatie (correcter, via NTP);
    • geregistreerde DNS-server;
      • We telnet naar onze ASA en maken instellingen om de licentie te activeren 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 
    !
    ! Проверим работу 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>

    • We controleren of het apparaat een licentie heeft geregistreerd en of er coderingsopties beschikbaar zijn:

    Een ASA VPN Load Balancing Cluster implementeren

    Een ASA VPN Load Balancing Cluster implementeren

  4. Stel een standaard SSL-VPN in op elke gateway

    • Configureer vervolgens de toegang 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 
    !

    • Om ASDM te laten werken, moet u het eerst downloaden van de website cisco.com, in mijn geval is dit het volgende bestand:

    Een ASA VPN Load Balancing Cluster implementeren

    • Om de AnyConnect-client te laten werken, moet u een afbeelding uploaden naar elke ASA voor elk gebruikt desktopclient-besturingssysteem (gepland om Linux / Windows / MAC te gebruiken), u hebt een bestand nodig met Headend-implementatiepakket In de titel:

    Een ASA VPN Load Balancing Cluster implementeren

    • De gedownloade bestanden kunnen bijvoorbeeld worden geüpload naar een FTP-server en worden geüpload naar elke individuele ASA:

    Een ASA VPN Load Balancing Cluster implementeren

    • We configureren ASDM en een zelfondertekend certificaat voor SSL-VPN (het wordt aanbevolen om een ​​vertrouwd certificaat te gebruiken in productie). De ingestelde FQDN van het virtuele clusteradres (vpn-demo.ashes.cc), evenals elke FQDN die is gekoppeld aan het externe adres van elk clusterknooppunt, moet in de externe DNS-zone worden omgezet in het IP-adres van de OUTSIDE-interface (of naar het toegewezen adres als port forwarding udp/443 wordt gebruikt (DTLS) en tcp/443(TLS)). Gedetailleerde informatie over de vereisten voor het certificaat wordt gespecificeerd in de sectie Certificaatverificatie documentatie.

    !
    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               

    • Vergeet niet de poort op te geven om te controleren of ASDM werkt, bijvoorbeeld:

    Een ASA VPN Load Balancing Cluster implementeren

    • Laten we de basisinstellingen van de tunnel uitvoeren:
    • Laten we het bedrijfsnetwerk beschikbaar maken via de tunnel en het internet direct laten gaan (niet de veiligste methode als er geen bescherming is op de verbindende host, het is mogelijk om via een geïnfecteerde host binnen te dringen en bedrijfsgegevens weer te geven, optie split-tunnelbeleid tunnelall zal al het hostverkeer de tunnel in laten. Hoe dan ook split-tunnel maakt het mogelijk om de VPN-gateway te ontlasten en het internetverkeer van de host niet te verwerken)
    • Laten we adressen van het 192.168.20.0/24-subnet uitgeven aan hosts in de tunnel (pool van 10 tot 30 adressen (voor knooppunt #1)). Elk knooppunt van het VPN-cluster moet zijn eigen pool hebben.
    • We zullen basisauthenticatie uitvoeren met een lokaal aangemaakte gebruiker op de ASA (dit wordt niet aanbevolen, dit is de gemakkelijkste methode), het is beter om authenticatie te doen via LDAP/RADIUS, of beter nog, stropdas Multi-factor Authentication (MFA)B.v. 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
    !

    • (OPTIONEEL): In het bovenstaande voorbeeld gebruikten we een lokale gebruiker op de ITU om externe gebruikers te authenticeren, wat natuurlijk, behalve in het laboratorium, slecht toepasbaar is. Ik zal een voorbeeld geven van hoe je de instelling voor authenticatie snel kunt aanpassen aan RADIUS server, bijvoorbeeld gebruikt 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 
    !

    Deze integratie maakte het niet alleen mogelijk om de authenticatieprocedure snel te integreren met de AD-directoryservice, maar ook om te onderscheiden of de aangesloten computer van AD is, om te begrijpen of dit apparaat zakelijk of persoonlijk is, en om de status van het aangesloten apparaat te beoordelen .

    Een ASA VPN Load Balancing Cluster implementeren

    Een ASA VPN Load Balancing Cluster implementeren

    • Laten we Transparent NAT zo configureren dat het verkeer tussen de client en de bronnen van het bedrijfsnetwerknetwerk niet wordt gekrabbeld:

    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

    • (OPTIONEEL): Om onze klanten bloot te stellen aan internet via de ASA (bij gebruik van tunnelallemaal opties) met behulp van PAT, evenals afsluiten via dezelfde OUTSIDE-interface waarmee ze zijn verbonden, moet u de volgende instellingen maken

    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 
    !

    • Bij het gebruik van een cluster is het uiterst belangrijk om het interne netwerk in staat te stellen te begrijpen welke ASA retourverkeer naar gebruikers moet routeren, hiervoor moet u routes / 32 adressen die aan clients zijn uitgegeven, opnieuw verdelen.
      Op dit moment hebben we het cluster nog niet geconfigureerd, maar we hebben al werkende VPN-gateways die individueel kunnen worden aangesloten via FQDN of IP.

    Een ASA VPN Load Balancing Cluster implementeren

    We zien de aangesloten client in de routeringstabel van de eerste ASA:

    Een ASA VPN Load Balancing Cluster implementeren

    Om ervoor te zorgen dat ons hele VPN-cluster en het hele bedrijfsnetwerk de route naar onze klant kennen, zullen we het klantvoorvoegsel herverdelen in een dynamisch routeringsprotocol, bijvoorbeeld 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 hebben we een route naar de client vanaf de tweede ASA-2-gateway en kunnen gebruikers die zijn verbonden met verschillende VPN-gateways binnen het cluster bijvoorbeeld rechtstreeks communiceren via een zakelijke softphone, en verkeer van de door de gebruiker gevraagde bronnen terugsturen. kom naar de gewenste VPN-gateway:

    Een ASA VPN Load Balancing Cluster implementeren

  5. Laten we verder gaan met het configureren van het taakverdelingscluster.

    Het adres 192.168.31.40 zal worden gebruikt als een virtueel IP-adres (VIP - alle VPN-clients zullen er in eerste instantie verbinding mee maken), vanaf dit adres zal het hoofdcluster een REDIRECT maken naar een minder belast clusterknooppunt. Vergeet niet te schrijven forward en reverse DNS-record zowel voor elk extern adres / FQDN van elk knooppunt van het cluster, als voor 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)#

    • We controleren de werking van het cluster met twee aangesloten clients:

    Een ASA VPN Load Balancing Cluster implementeren

    • Laten we de klantervaring handiger maken met het automatisch geladen AnyConnect-profiel via ASDM.

    Een ASA VPN Load Balancing Cluster implementeren

    We benoemen het profiel op een handige manier en koppelen er ons groepsbeleid aan:

    Een ASA VPN Load Balancing Cluster implementeren

    Na de volgende verbinding van de client wordt dit profiel automatisch gedownload en geïnstalleerd in de AnyConnect-client, dus als u verbinding wilt maken, selecteert u het gewoon in de lijst:

    Een ASA VPN Load Balancing Cluster implementeren

    Aangezien we dit profiel op slechts één ASA met behulp van ASDM hebben gemaakt, moet u niet vergeten de stappen op de andere ASA's in het cluster te herhalen.

Conclusie: Zo hebben we snel een cluster van verschillende VPN-gateways geïmplementeerd met automatische taakverdeling. Het toevoegen van nieuwe knooppunten aan het cluster is eenvoudig, met eenvoudig horizontaal schalen door nieuwe virtuele ASAv-machines te implementeren of hardware-ASA's te gebruiken. De feature-rijke AnyConnect-client kan een veilige externe verbinding aanzienlijk verbeteren door gebruik te maken van de Houding (schattingen van de staat), het meest effectief gebruikt in combinatie met het systeem van gecentraliseerde controle en toegangsboekhouding Identity Services-engine.

Bron: www.habr.com

Voeg een reactie