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.
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.
Vi distribuerar ASAv-instanser av mallarna vi behöver (ASAv5/10/30/50) från bilden.
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.
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
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.
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:
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:
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:
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:
De nedladdade filerna kan laddas upp till exempel till en FTP-server och laddas upp till varje enskild ASA:
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:
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.
(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:
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 .
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
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.
Vi ser den anslutna klienten i routingtabellen för den första ASA:
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:
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:
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.
Vi kontrollerar klustrets funktion med två anslutna klienter:
Låt oss göra kundupplevelsen mer bekväm med den automatiskt laddade AnyConnect-profilen via ASDM.
Vi namnger profilen på ett bekvämt sätt och kopplar vår grupppolicy till den:
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:
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.