Implementatie van een ASA VPN Load-Balancing cluster

In dit artikel wil ik een stapsgewijze handleiding geven over hoe je snel het meest schaalbare schema van dit moment kunt implementeren Remote-Access VPN toegang op basis van AnyConnect en Cisco ASA – VPN Load Balancing Cluster.

Inleiding: Veel bedrijven wereldwijd doen, gezien de huidige situatie rond COVID-19, moeite om hun werknemers over te laten stappen op een remote werkmodus. Door de massale overgang naar telewerken neemt de druk op de bestaande VPN-gateways van bedrijven kritisch toe en is er een zeer snelle mogelijkheid tot schaalvergroting nodig. Aan de andere kant zijn veel bedrijven gedwongen om in alle haast een concept als telewerken volledig opnieuw te leren.

Om bedrijven te helpen snel een gebruiksvriendelijke, veilige en schaalbare VPN-toegang voor medewerkers te realiseren, biedt Cisco tot 13 weken licenties voor de multifunctionele SSL-VPN-client AnyConnect. Je kunt ook de ASAv voor een test aanvragen (Virtuele ASA voor hypervisors VMWare/Hyper-V/KVM en cloudplatforms AWS/Azure) bij geautoriseerde partners of door contact op te nemen met de vertegenwoordigers van Cisco die met jou samenwerken.

De procedure voor het verkrijgen van AnyConnect-licenties vanwege COVID-19 is hier beschreven.

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

Het onderstaande voorbeeld zal vrij eenvoudig zijn wat betreft de gebruikte authenticatie- en autorisatie-algoritmes, maar is een goede optie voor een snelle start (wat nu veel mensen missen) met de mogelijkheid voor diepere aanpassing aan eigen behoeften tijdens de implementatie.

Korte informatie: De technologie VPN Load Balancing Cluster is geen failover en geen clusteringfunctie in de native zin, met deze technologie kunnen geheel verschillende modellen van ASA (onder bepaalde beperkingen) worden samengevoegd om de belasting van Remote-Access VPN-verbindingen te balanceren. Synchronisatie van sessies en configuraties tussen de knooppunten van zo'n cluster ontbreekt, maar automatische belastingbalancering van VPN-verbindingen en waarborging van de beschikbaarheid van VPN-verbindingen zijn mogelijk zolang er minstens ƩƩn actieve knoop in het cluster overblijft. De belasting in het cluster wordt automatisch gebalanceerd afhankelijk van de belasting van de knooppunten op het aantal VPN-sessies.

Voor de failover van specifieke knooppunten in het cluster (indien nodig) kan een filever worden toegepast, zodat de actieve verbinding door de primaire knooppunt van de filever wordt afgehandeld. Een filever is geen vereiste voor het waarborgen van de failover binnen een load-balancing cluster; het cluster zal in geval van een knooppuntstoring de sessie van de gebruiker overdragen naar een ander levend knooppunt, maar zonder de status van de verbinding te behouden, wat juist wordt mogelijk gemaakt door de filever. Dienovereenkomstig kunnen deze twee technologieƫn indien nodig worden gecombineerd.

Een VPN load-balancing cluster kan meer dan twee knooppunten bevatten.

Een VPN load-balancing cluster wordt ondersteund op ASA 5512-X en hoger.

Aangezien elke ASA binnen een VPN load-balancing cluster een onafhankelijke eenheid is wat betreft de instellingen, voeren we alle configuratiestappen individueel uit op elk afzonderlijk apparaat.

Details over de technologie hier

Logische topologie van het gegeven voorbeeld:

Implementatie van een ASA VPN Load-Balancing cluster

Eerste implementatie:

  1. We implementeren de nodige sjablonen (ASAv5/10/30/50) uit een afbeelding.

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

  3. Licenties:

    • Op het moment van de installatie zal ASAv geen licenties hebben en beperkt zijn tot een doorvoersnelheid van 100 kbit/s.
    • Om een licentie te installeren, moet u een token genereren in uw Smart-Account. https://software.cisco.com/ -> Smart Software Licensing
    • Klik op de knop in het geopende venster Nieuwe Token

    Implementatie van een ASA VPN Load-Balancing cluster

    • Zorg ervoor dat er in het geopende venster een actief veld aanwezig is en dat het vakje is aangevinkt Allow export-controlled functionality… Zonder dit actieve veld kunt u geen sterke versleuteling en daarmee VPN-functies gebruiken. Als dit veld niet actief is, neem dan contact op met uw accountteam met het verzoek om activatie.

    Implementatie van een ASA VPN Load-Balancing cluster

    • Na het klikken op de knop Token Aanmaken, er wordt een token aangemaakt dat we zullen gebruiken voor het verkrijgen van een licentie voor ASAv, we kopiĆ«ren het:

    Implementatie van een ASA VPN Load-Balancing cluster

    • Herhaal de stappen C,D,E voor elke uitgerolde ASAv.
    • Om het makkelijker te maken om het token te kopiĆ«ren, staan we tijdelijk telnet toe. We configureren elke ASA (voorbeeld hieronder illustreert de instellingen op ASA-1). Telnet werkt niet vanaf outside; als het echt nodig is, verander dan het security-level naar 100 op outside, en zet het daarna 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
    !

    • Voor registratie van een token in de Smart-Account cloud is internettoegang voor ASA vereist. details hier.

    In het kort is ASA nodig:

    • toegang via HTTPS naar het internet;
    • tijdssynchronisatie (voorkeur gaat naar NTP);
    • een opgegeven DNS-server;
      • We loggen in via telnet op onze ASA's en configureren de instellingen voor de activatie van de licentie 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 
    !
    ! Laten we de werking van DNS controleren:
    !
    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:
    !!!!!
    !
    ! Laten we de NTP-synchronisatie controleren:
    !
    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 (gesynchroniseerd), # master (ongesynchroniseerd), + geselecteerd, - kandidaat, ~ geconfigureerd
    !
    ! We stellen de configuratie van onze ASAv in voor Smart-Licensing (volgens uw profiel, in mijn geval 100M als voorbeeld)
    !
    ciscoasa(config)# license smart
    ciscoasa(config-smart-lic)# feature tier standard
    ciscoasa(config-smart-lic)# throughput level 100M
    !
    ! Indien nodig kan internettoegang via een proxy worden ingesteld, gebruik de volgende commando's:
    !call-home
    !  http-proxy ip_address port port
    !
    ! Vervolgens plakken we de vanuit het Smart-Account-portaal gekopieerde token (<token>) en registreren we de licentie
    !
    ciscoasa(config)# end
    ciscoasa# license smart register idtoken <token>

    • We controleren of het apparaat de licentie succesvol heeft geregistreerd en of de versleutelingsopties beschikbaar zijn:

    Implementatie van een ASA VPN Load-Balancing cluster

    Implementatie van een ASA VPN Load-Balancing cluster

  4. Basis SSL-VPN instellen op elke gateway

    • Vervolgens stellen we SSH en ASDM-toegang in:

    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
    !
    ! Laten we de HTTPS-server voor ASDM op poort 445 opzetten zodat deze niet conflicteert met de SSL-VPN-portaal
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • Om ASDM te gebruiken, moet het eerst worden gedownload van de website cisco.com. In mijn geval is dit het volgende bestand:

    Implementatie van een ASA VPN Load-Balancing cluster

    • Voor het gebruik van de AnyConnect-client moet voor elke ASA een afbeelding worden gedownload voor elk besturingssysteem van de client dat wordt gebruikt (gepland om Linux/Windows/MAC te gebruiken) vereist een bestand met Hoofddistributiepakket in de naam:

    Implementatie van een ASA VPN Load-Balancing cluster

    • Gedownloade bestanden kunnen bijvoorbeeld op een FTP-server worden geplaatst en naar elke afzonderlijke ASA worden geüpload:

    Implementatie van een ASA VPN Load-Balancing cluster

    • We configureren ASDM en een zelfondertekend certificaat voor SSL-VPN (in productie wordt aangeraden een vertrouwd certificaat te gebruiken). De geĆÆnstalleerde FQDN van het Virtuele clusteradres (vpn-demo.ashes.cc), evenals elke FQDN geassocieerd met het externe adres van elke knooppunt in het cluster, moet in de externe DNS-zone worden weergeven op het IP-adres van de OUTSIDE-interface (of op het gemapte adres, als poortdoorvoer udp/443 (DTLS) en tcp/443 (TLS) wordt gebruikt). Gedetailleerde informatie over de vereisten voor het certificaat is te vinden in de sectie Certificaatverificatie de 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
    % De volledig gekwalificeerde domeinnaam in het certificaat zal zijn: vpn-demo.ashes.cc
    Zelfondertekend certificaat genereren? [ja/nee]: ja
    vpn-demo-1(config)# 
    !
    vpn-demo-1(config)# sh cry ca certificates 
    Certificaat
    Status: Beschikbaar
    Certificaat serienummer: 4d43725e
    Certificaatgebruik: Algemeen doel
    Openbare sleuteltype: RSA (4096 bits)
    Handtekening algoritme: SHA256 met RSA-encryptie
    Uitgevende instantie naam: 
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Onderwerp naam:
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Geldigheidsdatum: 
    startdatum: 00:16:17 MSK 19 mrt 2020
    einddatum: 00:16:17 MSK 17 mrt 2030
    Opslag: config
    Geassocieerde trustpoints: SELF 
    
    CA-certificaat
    Status: Beschikbaar
    Certificaat serienummer: 0509
    Certificaatgebruik: Algemeen doel
    Openbare sleuteltype: RSA (4096 bits)
    Handtekening algoritme: SHA1 met RSA-encryptie
    Uitgevende instantie naam: 
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Onderwerp naam: 
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Geldigheidsdatum: 
    startdatum: 21:27:00 MSK 24 nov 2006
    einddatum: 21:23:33 MSK 24 nov 2031
    Opslag: config
    Geassocieerde trustpoints: _SmartCallHome_ServerCA               

    • Vergeet niet de poort op te geven voor ASDM-testen, bijvoorbeeld:

    Implementatie van een ASA VPN Load-Balancing cluster

    • Laten we de basisinstellingen van de tunnel configureren:
    • We zullen het bedrijfsnetwerk toegankelijk maken via de tunnel en internet rechtstreeks laten gaan (niet de veiligste methode zonder beveiligingsmaatregelen op het aangesloten host, mogelijk binnendringen via een besmette host en bedrijfsgegevens die worden geüpload, optie split-tunnel-policy tunnelall zal al het verkeer van de host in de tunnel toestaan. Toch Split-Tunnel biedt de mogelijkheid om de VPN-gateway te ontlasten en het internetverkeer van de host niet te verwerken)
    • We zullen adressen uit het subnet 192.168.20.0/24 aan de hosts in de tunnel toewijzen (pool met adressen van 10 tot 30 (voor knooppunt #1)). Elke node in het VPN-cluster moet zijn eigen pool hebben.
    • We voeren basisauthenticatie uit met een lokaal aangemaakte gebruiker op de ASA (dit is niet aan te raden, dit is de eenvoudigste methode), het is beter om authenticatie te doen via LDAP/RADIUS, en nog beter om Multi-Factor Authentication (MFA), bijvoorbeeld 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 hebben we een lokale gebruiker op de MCE gebruikt voor de authenticatie van externe gebruikers, wat uiteraard niet veel toepasbaar is buiten een laboratorium. Ik geef een voorbeeld van hoe je de configuratie snel kunt aanpassen voor authenticatie op RADIUS de server, waarbij gebruik is gemaakt van 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 heeft niet alleen de mogelijkheid geboden om de authenticatieprocedure snel te integreren met de AD-directoryservice, maar ook om de appartheid van de aangesloten computer aan AD te onderscheiden, te begrijpen of het een zakelijk of persoonlijk apparaat is en de status van het aangesloten apparaat te evalueren.

    Implementatie van een ASA VPN Load-Balancing cluster

    Implementatie van een ASA VPN Load-Balancing cluster

    • We zullen de Transparent NAT-configuratie instellen zodat het verkeer tussen de cliĆ«nt en de middelen in het bedrijfsnetwerk niet wordt vertaald:

    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 via de ASA toegang tot het internet te geven (bij gebruik van tunnelall opties) met gebruik van PAT, en deze moeten via dezelfde OUTSIDE-interface worden uitgevoerd, waar ze zijn verbonden, moeten de volgende instellingen worden gemaakt

    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 
    !

    • Het is uiterst belangrijk om bij het gebruik van een cluster de interne netwerk in staat te stellen te begrijpen naar welke ASA het retourverkeer naar de gebruikers moet worden gerouteerd. Hiervoor is het nodig om de herverdeling van de /32-adressen die aan klanten worden toegewezen in te stellen.
      Momenteel hebben we het cluster nog niet ingesteld, maar we hebben al werkende VPN-gateways waarmee je individueel kunt verbinden via FQDN of IP.

    Implementatie van een ASA VPN Load-Balancing cluster

    We zien een verbonden client in de routeringstabel van de eerste ASA:

    Implementatie van een ASA VPN Load-Balancing cluster

    Om ons VPN-cluster en het hele bedrijfsnetwerk op de hoogte te stellen van de route naar onze client, zullen we de clientprefix herverdelen in het dynamische 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 vanuit de tweede gateway ASA-2, en gebruikers die zijn verbonden met verschillende VPN-gateways binnen het cluster kunnen bijvoorbeeld rechtstreeks communiceren via de bedrijfssoftphone, net zoals het retourverkeer van de aangevraagde bronnen naar de juiste VPN-gateway zal komen:

    Implementatie van een ASA VPN Load-Balancing cluster

  5. Laten we overgaan naar de configuratie van Load-Balancing van het cluster.

    Het adres 192.168.31.40 zal worden gebruikt als Virtual IP (VIP — hierop zullen alle VPN-clients in eerste instantie verbinding maken), vanaf dit adres zal de Cluster Master een REDIRECT uitvoeren naar een minder drukke node van het cluster. Vergeet niet om een directe en inverse DNS-record in te voeren voor elk extern adres/FQDN van elke node van het cluster, evenals voor de 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:

    Implementatie van een ASA VPN Load-Balancing cluster

    • We will make the client experience more convenient with the automatically downloadable AnyConnect profile through ASDM.

    Implementatie van een ASA VPN Load-Balancing cluster

    We name the profile conveniently and associate our group policy with it:

    Implementatie van een ASA VPN Load-Balancing cluster

    After the next client connection, this profile will be automatically downloaded and installed in the AnyConnect client, so it will only need to be selected from the list if necessary:

    Implementatie van een ASA VPN Load-Balancing cluster

    Since we created this profile using ASDM only on one ASA, don't forget to repeat the actions on the other ASAs in the cluster.

Uitvoer: In this way, we quickly deployed a cluster of several VPN gateways with automatic load balancing. Adding new nodes to the cluster is easy, achieving simple horizontal scaling by deploying new ASAv virtual machines or using hardware ASAs. The multifunctional AnyConnect client can significantly enhance the capabilities of secure remote connection using the Posture (status assessment), most effectively applied in conjunction with the centralized control and access accounting system Identity Services Engine.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster