Nasazení clustera ASA VPN Load-Balancing

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ů. Lze také vyzkoušet ASAv (virtuální ASA pro hypervizory VMWare/Hyper-V/KVM a cloudové platformy AWS/Azure) u autorizovaných partnerů nebo kontaktováním zástupců Cisco, kteří s vámi spolupracují..

Postup vydávání licencí AnyConnect COVID-19 je popsán zde.

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

Podrobnosti technologie zde

Logická topologie uvedeného příkladu:

Nasazení clustera ASA VPN Load-Balancing

Primární nasazení:

  1. Nasazujeme z obrazu instance ASAv potřebných šablon (ASAv5/10/30/50).

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

  3. 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: https://software.cisco.com/ -> Smart Software Licensing
    • V otevřeném okně klikněte na tlačítko New Token

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

    • 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, podrobnosti zde.

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

    Nasazení clustera ASA VPN Load-Balancing

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

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

    Nasazení clustera ASA VPN Load-Balancing

    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:

    Nasazení clustera ASA VPN Load-Balancing

    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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster