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

Primaire implementatie:
-
We implementeren ASAv-instanties van de sjablonen die we nodig hebben (ASAv5/10/30/50) van de afbeelding.
-
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.
-
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: -> Slimme softwarelicenties
- Klik in het geopende venster op de knop Nieuw token

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

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

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


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

- Om de AnyConnect-client te gebruiken, moet u voor elk besturingssysteem van de desktopclient dat u wilt gebruiken, een image downloaden naar elke ASA. Linux/Windows/MAC) je hebt een bestand nodig met Headend-implementatiepakket In de titel:

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

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

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


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

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

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

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

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

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

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:

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
