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. .
.
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.
Logische topologie van het gegeven voorbeeld:

Eerste implementatie:
We implementeren de nodige sjablonen (ASAv5/10/30/50) uit een afbeelding.
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.
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. -> Smart Software Licensing
- Klik op de knop in het geopende venster Nieuwe Token

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

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

- 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. .
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:


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:

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

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

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

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


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

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

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-REDISTRIBUTENu 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:

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:

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

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

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:

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


















