V tomto článku bych chtěl poskytnout krokový návod, jak rychle nastavit v současnosti nejvíce škálovatelnou architekturu VPN pro vzdálený přístup přístupu založeném na AnyConnect a Cisco ASA – VPN Load Balancing Cluster.
Úvod: Mnoho společností po celém světě, v důsledku současné situace s COVID-19, se snaží přejít své zaměstnance na vzdálenou práci. Vzhledem k hromadnému přechodu na práci na dálku se kriticky zvyšuje zátěž na stávající VPN brány společností a je vyžadována velmi rychlá možnost jejich škálování. Na druhé straně, mnoho společností je nuceno ve spěchu se seznámit s pojmem, jako je vzdálená práce.
Abychom pomohli podnikům realizovat pohodlný, bezpečný a škálovatelný VPN přístup pro zaměstnance co nejrychleji, společnost Cisco poskytuje licencí na multifunkční SSL-VPN klient AnyConnect na dobu až 13 týdnů. .
.
Připravil jsem krokový návod pro jednoduchou variantu nasazení VPN Load-Balancing clusteru jako nejvíce škálovatelné technologie VPN.
Následující příklad bude poměrně jednoduchý z pohledu použitých autentizačních a autorizačních algoritmů, ale bude dobrým výchozím bodem (což nyní mnohým chybí) s možností hlubší adaptace podle vašich potřeb v průběhu nasazení.
Stručné informace: Technologie VPN Load Balancing Cluster není failover ani funkce klastrování v jejím nativním smyslu, touto technologií lze spojit různé modely ASA (s určitými omezeními) s cílem vyvážení zátěže Remote-Access VPN připojení. Synchronizace sezení a konfigurací mezi uzly takového clusteru chybí, ale je možná automatická zátěžová vyvážení VPN připojení a zajištění odolnosti připojení VPN, dokud zůstane alespoň jeden aktivní uzel v clusteru. Zátěž v clusteru se vyvažuje automaticky na základě zátěže uzlů počtem VPN sezení.
Pro zajištění odolnosti konkrétních uzlů clusteru (pokud je to požadováno) lze použít filewar, čímž bude aktivní připojení zpracováváno hlavním uzlem filewaru. Filewar není nezbytnou podmínkou zajištění odolnosti uvnitř Load-Balancing clusteru, samotný cluster v případě selhání uzlu převede uživatelskou relaci na jiný živý uzel, avšak bez zachování stavu připojení, což právě zajišťuje filewar. Odpovídajícím způsobem je tedy možné tyto dvě technologie při potřebě kombinovat.
VPN Load-Balancing cluster může obsahovat více než dva uzly.
VPN Load-Balancing cluster je podporován na ASA 5512-X a vyšších.
Jelikož každá ASA v rámci VPN Load-Balancing clusteru je nezávislou jednotkou z pohledu prováděných nastavení, všechny kroky konfigurace provádíme individuálně na každém zařízení.
Logická topologie uvedeného příkladu:

Primární nasazení:
Nasazujeme z obrazu instance ASAv potřebných šablon (ASAv5/10/30/50).
Přiřadíme rozhraní INSIDE/OUTSIDE na stejné VLAN (Outside ve své VLAN, INSIDE ve své, ale společné v rámci clusteru, viz topologie), je důležité, aby rozhraní jednoho typu byla v jednom L2 segmentu.
Licence:
- V okamžiku instalace ASAv nebude mít žádné licence a bude omezena výkonem 100 kbit/s.
- Pro instalaci licence je nutné vygenerovat token ve Vašem Smart-Accountu: -> Smart Software Licensing
- V otevřeném okně klikněte na tlačítko New Token

- Ujistěte se, že v otevřeném okně je aktivní pole a je nastavena zaškrtávací znaménko Allow export-controlled functionality… Bez tohoto aktivního pole nebudete moci používat funkce silného šifrování a tudíž ani VPN. Pokud toto pole není aktivní, prosím obraťte se na svůj tým podpory s žádostí o aktivaci.

- Po stisknutí tlačítka Vytvořit token, vytvoří se token, který budeme používat pro získání licence na ASAv, zkopírujeme jej:

- Opakujte kroky C,D,E pro každou nasazenou ASAv.
- Aby bylo snadnější kopírovat token, dočasně povolíme telnet. Nastavíme každou ASA (příklad níže ilustruje nastavení na ASA-1). telnet z outside nefunguje, pokud je to nezbytné, změňte security-level na 100 na outside, pak to vraťte zpět.
! ciscoasa(config)# int gi0/0 ciscoasa(config)# nameif vně ciscoasa(config)# ip adresa 192.168.31.30 255.255.255.0 ciscoasa(config)# no shut ! ciscoasa(config)# int gi0/1 ciscoasa(config)# nameif uvnitř ciscoasa(config)# ip adresa 192.168.255.2 255.255.255.0 ciscoasa(config)# no shut ! ciscoasa(config)# telnet 0 0 uvnitř ciscoasa(config)# uživatelské jméno admin heslo cisco privilegium 15 ciscoasa(config)# ena heslo cisco ciscoasa(config)# aaa autentizace telnet konzole LOCAL ! ciscoasa(config)# trasa ven 0 0 192.168.31.1 ! ciscoasa(config)# wr !- Pro registraci tokenu v cloudu Smart-Account je nutné poskytnout přístup na Internet pro ASA, .
Krátce řečeno, ASA potřebuje:
- přístup přes HTTPS na Internet;
- časovou synchronizaci (nejlépe přes NTP);
- nastavený DNS server;
- Přihlaste se přes telnet na naše ASA a nastavte konfiguraci pro aktivaci licence prostřednictvím 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 ven ciscoasa(config)# DNS server-group DefaultDNS ciscoasa(config-dns-server-group)# name-server 192.168.99.132 ! ! Zkontrolujeme funkčnost DNS: ! ciscoasa(config-dns-server-group)# ping ya.ru Typ sekvence úniku pro zrušení. Odesílání 5, 100-byte ICMP Echos na 87.250.250.242, timeout je 2 sekundy: !!!!! ! ! Zkontrolujeme synchronizaci NTP: ! ciscoasa(config)# show ntp associations adresa 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 (synchronizováno), # master (nesynchronizováno), + vybráno, - kandidát, ~ nakonfigurováno ! ! Nastavíme konfiguraci našeho ASAv pro Smart-Licensing (podle vašeho profilu, v mém případě 100M pro příklad) ! ciscoasa(config)# license smart ciscoasa(config-smart-lic)# feature tier standard ciscoasa(config-smart-lic)# throughput level 100M ! ! V případě potřeby můžete nastavit přístup na Internet přes proxy, použijte následující blok příkazů: !call-home ! http-proxy ip_adresa port port ! ! Poté vložte token z portálu Smart-Account (<token>) a registrujte licenci ! ciscoasa(config)# end ciscoasa# license smart register idtoken <token>- Kontrolujeme, že zařízení úspěšně zaregistrovalo licenci a možnosti šifrování jsou dostupné:


Nastavujeme základní SSL-VPN na každém bráně
- Dále nastavujeme přístup přes SSH a ASDM:
ciscoasa(config)# ssh ver 2 ciscoasa(config)# aaa autentizace ssh konzole LOCAL ciscoasa(config)# aaa autentizace http konzole 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 uvnitř vpn-demo-1(config)# http 0 0 uvnitř ! ! Nastavíme server HTTPS pro ASDM na portu 445, aby se nepronikl do SSL-VPN portálu ! vpn-demo-1(config)# http server enable 445 !- Pro práci ASDM je nejprve třeba stáhnout jej z webu cisco.com, v mém případě je to tento soubor:

- Pro používání klienta AnyConnect je nutné nahrát na každý ASA obraz pro každou použivanou desktopovou operační systém klienta (plánovanou k použití Linux/Windows/MAC) bude potřebovat soubor s Headend Deployment Package v názvu:

- Stažené soubory lze například umístit na FTP server a nahrát na každý jednotlivý ASA:

- Nastavíme ASDM a Self-Signed certifikát pro SSL-VPN (v produkci se doporučuje použít důvěryhodný certifikát). Nainstalovaný FQDN virtuální adresy clusteru (vpn-demo.ashes.cc), stejně jako každý FQDN spojený s externí adresou každého uzlu clustru musí být vnějšími DNS zónami přeložen na IP adresu rozhraní OUTSIDE (nebo na mapped adresu, pokud se používá přesměrování portu udp/443 (DTLS) a tcp/443(TLS)). Podrobné informace o požadavcích na certifikát jsou uvedeny v části Certificate Verification dokumentace.
! 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 % 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- Pro kontrolu funkčnosti ASDM nezapomeňte uvést port, například:

- Přistoupíme k základním nastavením tunelu:
- Umožníme přístup k firemní síti přes tunel, zatímco internet povolíme přímo (nejsoucnější metodou, pokud na připojeném hostu nejsou žádné prostředky ochrany, může dojít k průniku přes infikovaný host a úniku korporátních dat, možnost split-tunnel-policy tunnelall pustí veškerý provoz hosta do tunelu. Nicméně Split-Tunnel umožňuje uvolnit zátěž na VPN bráně a nepracovat s internetovým provozem hosta)
- Přidělíme hostům v tunelu adresy z podsítě 192.168.20.0/24 (pool s adresami od 10 do 30 (pro uzel #1)). Na každé uzlu VPN clusteru musí být vlastní pool.
- Provedeme základní autentizaci místně vytvořeným uživatelským účtem na ASA (nedoporučuje se, je to nejjednodušší metoda), lépe provádět autentizaci přes LDAP/RADIUS, a ještě lépe připojit Vícefaktorovou autentizaci (MFA), například 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 !- (VOLITELNĚ): V výše uvedeném příkladu jsme použili místního uživatele na MSE pro autentizaci vzdálených uživatelů, což je samozřejmě, kromě laboratoří, slabě použitelné. Uvedu příklad toho, jak rychle přizpůsobit nastavení pro autentizaci na RADIUS serveru, pro příklad použit 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 !Tato integrace umožnila nejen rychle integrovat postup autentizace se službou adresářů AD, ale také rozlišovat příslušnost připojeného počítače k AD, chápat, zda se jedná o firemní zařízení nebo osobní, a provádět hodnocení stavu připojeného zařízení.


- Nastavíme Transparent NAT, aby se provoz mezi klientem a zdroji podnikové sítě nenatíroval:
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- (VOLITELNĚ): Abychom naši klienty vyvedli na Internet přes ASA (při použití tunnelall Možnosti) pomocí PAT a také odcházet prostřednictvím stejného rozhraní OUTSIDE, odkud se připojují, je nutné provést následující nastavení
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 !- Je mimořádně důležité při používání clusteru umožnit vnitřní síti pochopit, na kterou ASA směrovat zpětný provoz k uživatelům, k tomu je třeba provést redistribuci tras /32 adres přidělovaných klientům.
V tuto chvíli jsme cluster ještě nenastavili, ale již máme funkční VPN brány, ke kterým se lze individuálně připojit pomocí FQDN nebo IP.

Vidíme připojeného klienta v tabulce směrování první ASA:

Aby náš VPN cluster a celá podniková síť znala trasu k našemu klientovi, provedeme redistribuci klientského prefixu do protokolu dynamického směrování, například 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-REDISTRIBUTENyní máme trasu k klientovi z druhé brány ASA-2 a uživatelé připojení k různým VPN branám v rámci clusteru mohou například komunikovat prostřednictvím podnikového softwarového telefonu přímo, a také zpětný provoz z požadovaných uživatelských zdrojů bude přicházet na potřebnou VPN bránu:

Přejdeme k nastavení Load-Balancing clusteru.
Adresa 192.168.31.40 bude používána jako Virtual IP (VIP — k němu se budou primárně připojovat všichni VPN klienti), z této adresy bude Master clusteru provádět REDIRECT na méně zatíženou uzel clusteru. Nezapomeňte zapsat přímou a zpětnou DNS záznam jak pro každou externí adresu/FQDN každé uzlu clusteru, tak pro 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)#- Ověřujeme funkčnost clusteru se dvěma připojenými klienty:

- Učiníme uživatelskou zkušenost pohodlnější s automaticky načítaným profilem AnyConnect prostřednictvím ASDM.

Pojmenujeme profil pohodlným způsobem a přiřadíme mu naši skupinovou politiku:

Po příštím připojení klienta bude tento profil automaticky stažen a nainstalován do klienta AnyConnect, takže v případě potřeby bude stačit si jej vybrat ze seznamu:

Jelikož jsme pomocí ASDM vytvořili tento profil pouze na jednom ASA, nezapomeňte provést stejné kroky na ostatních ASA v clusteru.
Výstup: Takto jsme rychle nasadili cluster několika VPN bran s automatickým vyvažováním zátěže. Přidání nových uzlů do clusteru není složité, díky jednoduchému horizontálnímu škálování nasazením nových virtuálních strojů ASAv nebo použitím hardwarových ASA. Multifunkční klient AnyConnect může výrazně rozšířit možnosti bezpečného vzdáleného připojení pomocí funkce Posture (vyhodnocení stavu), která je nejúčinněji aplikována ve spojení se systémem centralizované kontroly a správy přístupu Identity Services Engine.
Zdroj: habr.com


















