Wdrażanie klastra równoważenia obciążenia ASA VPN

W tym artykule chciałbym przedstawić instrukcje krok po kroku, jak szybko wdrożyć najbardziej skalowalny obecnie schemat VPN dostępu zdalnego oparte na dostępie AnyConnect i Cisco ASA - Klaster równoważenia obciążenia VPN.

Wstęp: Wiele firm na całym świecie w związku z obecną sytuacją związaną z wirusem Covid-19 podejmuje wysiłki mające na celu przeniesienie swoich pracowników na pracę zdalną. W związku z powszechnym przejściem na pracę zdalną obciążenie istniejących bram VPN firm krytycznie wzrasta i wymagana jest bardzo szybka możliwość ich skalowania. Z drugiej strony wiele firm jest zmuszonych na pośpiechu opanować koncepcję pracy zdalnej od podstaw.

Aby pomóc firmom szybko wdrożyć wygodny, bezpieczny i skalowalny dostęp VPN dla pracowników, Cisco zapewnia licencje na maksymalnie 13 tygodni na bogatego w funkcje klienta AnyConnect SSL-VPN. Możesz także pobrać ASAv do testów (Virtual ASA dla hypervisorów VMWare/Hyper-V/KVM i platform chmurowych AWS/Azure) od autoryzowanych partnerów lub kontaktując się z współpracującymi z Tobą przedstawicielami Cisco.

Procedurę wydawania licencji AnyConnect COVID-19 opisano tutaj.

Przygotowałem instrukcje krok po kroku dotyczące prostej opcji wdrożenia klastra VPN Load-Balancing jako najbardziej skalowalnej technologii VPN.

Poniższy przykład będzie dość prosty z punktu widzenia stosowanych algorytmów uwierzytelniania i autoryzacji, ale będzie dobrą opcją na szybki start (czego obecnie wielu osobom brakuje) z możliwością dogłębnej adaptacji do Twoich potrzeb podczas procesu wdrażania.

Krótka informacja: Technologia klastra równoważenia obciążenia VPN nie jest funkcją przełączania awaryjnego ani klastrowania w swoim natywnym sensie; technologia ta może łączyć zupełnie różne modele ASA (z pewnymi ograniczeniami) w celu równoważenia obciążenia połączeń VPN dostępu zdalnego. Nie ma synchronizacji sesji i konfiguracji pomiędzy węzłami takiego klastra, ale możliwe jest automatyczne równoważenie obciążenia połączeń VPN i zapewnienie odporności na awarie połączeń VPN do czasu, aż w klastrze pozostanie przynajmniej jeden aktywny węzeł. Obciążenie klastra jest równoważone automatycznie w zależności od obciążenia węzłów liczbą sesji VPN.

Aby zapewnić odporność na awarie określonych węzłów klastra (jeśli jest to wymagane), można użyć narzędzia filer, dzięki czemu aktywne połączenie będzie przetwarzane przez węzeł podstawowy narzędzia filer. Przeniesienie pliku nie jest warunkiem koniecznym zapewnienia odporności na awarie w klastrze Load-Balancing; w przypadku awarii węzła klaster sam przeniesie sesję użytkownika do innego działającego węzła, ale bez utrzymywania stanu połączenia, co jest dokładnie tym, co zapewnia plik. W związku z tym w razie potrzeby te dwie technologie można połączyć.

Klaster równoważenia obciążenia VPN może zawierać więcej niż dwa węzły.

Klaster VPN z równoważeniem obciążenia jest obsługiwany na platformie ASA 5512-X i nowszych.

Ponieważ każdy ASA w klastrze VPN Load-Balancing jest niezależną jednostką pod względem ustawień, wszystkie etapy konfiguracji przeprowadzamy indywidualnie na każdym urządzeniu.

Szczegóły technologii tutaj

Topologia logiczna podanego przykładu to:

Wdrażanie klastra równoważenia obciążenia ASA VPN

Początkowe wdrożenie:

  1. Wdrażamy instancje ASAv potrzebnych szablonów (ASAv5/10/30/50) z obrazu.

  2. Przypisujemy interfejsy INSIDE/OUTSIDE do tej samej sieci VLAN (Outside we własnym VLAN, INSIDE we własnym, ale wspólne w obrębie klastra, patrz topologia), ważne jest, aby interfejsy tego samego typu znajdowały się w tym samym segmencie L2.

  3. Licencje:

    • W momencie instalacji ASAv nie będzie miał żadnych licencji i będzie ograniczony do 100 kbit/s.
    • Aby zainstalować licencję należy wygenerować token na koncie Smart-Account: https://software.cisco.com/ -> Inteligentne licencjonowanie oprogramowania
    • W oknie, które zostanie otwarte, kliknij przycisk Nowy token

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Upewnij się, że w oknie, które zostanie otwarte, pole jest aktywne i checkbox jest zaznaczony Zezwalaj na funkcjonalność kontrolowaną przez eksport... Bez tego aktywnego pola nie będziesz mógł korzystać z silnych funkcji szyfrowania, a co za tym idzie, VPN. Jeśli to pole nie jest aktywne, skontaktuj się z zespołem ds. konta i poproś o aktywację.

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Po naciśnięciu przycisku Utwórz token, zostanie utworzony token, który wykorzystamy do uzyskania licencji na ASAv, skopiuj go:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Powtórzmy kroki C, D, E dla każdego wdrożonego ASAv.
    • Aby ułatwić kopiowanie tokena, włączmy tymczasowo telnet. Skonfigurujmy każdy ASA (poniższy przykład ilustruje ustawienia na ASA-1). telnet z zewnątrz nie działa, jeśli naprawdę tego potrzebujesz, zmień poziom zabezpieczeń na 100 na zewnątrz, a następnie zmień go z powrotem.

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

    • Aby zarejestrować token w chmurze Smart-Account należy udostępnić ASA dostęp do Internetu, szczegóły tutaj.

    Krótko mówiąc, ASA jest potrzebny:

    • Dostęp do Internetu poprzez HTTPS;
    • synchronizacja czasu (dokładniej przez NTP);
    • zarejestrowany serwer DNS;
      • Przez telnet łączymy się z naszym ASA i dokonujemy ustawień aktywacji licencji poprzez 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>

    • Sprawdzamy, czy urządzenie pomyślnie zarejestrowało licencję i dostępne są opcje szyfrowania:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Wdrażanie klastra równoważenia obciążenia ASA VPN

  4. Konfiguracja podstawowego protokołu SSL-VPN na każdej bramce

    • Następnie konfigurujemy dostęp poprzez SSH i 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 
    !

    • Aby ASDM zadziałał należy go najpierw pobrać ze strony cisco.com, w moim przypadku jest to następujący plik:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Aby klient AnyConnect działał, musisz pobrać obraz do każdego ASA dla każdego używanego systemu operacyjnego klienta (planowanego na Linux/Windows/MAC), będziesz potrzebować pliku z Pakiet wdrożeniowy stacji czołowej W tytule:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Pobrane pliki można wgrać np. na serwer FTP i wgrać do każdego indywidualnego ASA:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Konfigurujemy certyfikat ASDM i Self-Signed dla SSL-VPN (zalecane jest użycie zaufanego certyfikatu na produkcji). Ustalona nazwa FQDN adresu wirtualnego klastra (vpn-demo.ashes.cc), jak również każda nazwa FQDN powiązana z adresem zewnętrznym każdego węzła klastra musi zostać przetłumaczona w zewnętrznej strefie DNS na adres IP interfejsu OUTSIDE (lub na zmapowany adres, jeśli używane jest przekierowanie portów udp/443 (DTLS) i tcp/443(TLS)). Szczegółowe informacje dotyczące wymagań stawianych certyfikatowi znajdują się w pkt Weryfikacja certyfikatu dokumentacja.

    !
    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               

    • Aby sprawdzić działanie ASDM nie zapomnij podać portu, na przykład:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Przeprowadźmy podstawowe ustawienia tunelu:
    • Udostępnimy sieć firmową poprzez tunel i bezpośrednio połączymy się z Internetem (nie jest to najbezpieczniejsza metoda w przypadku braku środków bezpieczeństwa na hoście łączącym, możliwe jest przedostanie się przez zainfekowany host i wyprowadzenie danych firmowych, opcja split-tunnel-policy tunelall zezwoli na cały ruch hosta do tunelu. Niemniej jednak Tunel dzielony pozwala odciążyć bramę VPN i nie przetwarzać ruchu internetowego hosta)
    • W tunelu wydamy hosty z adresami z podsieci 192.168.20.0/24 (pula od 10 do 30 adresów (dla węzła nr 1)). Każdy węzeł w klastrze musi mieć własną pulę VPN.
    • Wykonajmy podstawowe uwierzytelnienie z lokalnie utworzonym użytkownikiem na ASA (nie jest to zalecane, jest to najprostsza metoda), lepiej przeprowadzić uwierzytelnienie poprzez LDAP/PROMIeńlub jeszcze lepiej, krawat Uwierzytelnianie wieloskładnikowe (MFA)Np 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
    !

    • (OPCJONALNY): W powyższym przykładzie użyliśmy lokalnego użytkownika na zaporze sieciowej do uwierzytelnienia użytkowników zdalnych, co oczywiście jest mało przydatne z wyjątkiem laboratorium. Podam przykład, jak szybko dostosować konfigurację uwierzytelniania PROMIEŃ serwer, używany np Silnik usług tożsamości Cisco:

    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 
    !

    Integracja ta umożliwiła nie tylko szybkie zintegrowanie procedury uwierzytelniania z usługą katalogową AD, ale także rozróżnienie, czy podłączony komputer należy do AD, zrozumienie, czy jest to urządzenie firmowe, czy osobiste, a także ocenę stanu podłączonego urządzenie.

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Skonfigurujmy Transparent NAT, aby ruch pomiędzy klientem a zasobami sieciowymi sieci firmowej nie był zakłócany:

    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

    • (OPCJONALNY): Aby udostępnić naszym klientom dostęp do Internetu za pośrednictwem ASA (podczas korzystania z tunel opcje) za pomocą PAT, a także wyjdź przez ten sam interfejs OUTSIDE, z którego są połączone, musisz wprowadzić następujące ustawienia

    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 
    !

    • Podczas korzystania z klastra niezwykle ważne jest, aby sieć wewnętrzna mogła zrozumieć, który ASA ma kierować ruch zwrotny do użytkowników; w tym celu konieczna jest redystrybucja adresów tras /32 wydawanych klientom.
      Na chwilę obecną nie skonfigurowaliśmy jeszcze klastra, ale mamy już działające bramy VPN, z którymi można indywidualnie łączyć się poprzez FQDN lub IP.

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Podłączonego klienta widzimy w tablicy routingu pierwszego ASA:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Aby cały nasz klaster VPN i cała sieć firmowa znała trasę do naszego klienta, dokonamy redystrybucji prefiksu klienta na dynamiczny protokół routingu, na przykład 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

    Teraz mamy trasę do klienta z drugiej bramy ASA-2, a użytkownicy podłączeni do różnych bram VPN w ramach klastra mogą na przykład komunikować się bezpośrednio przez firmowy telefon programowy, tak jak nadejdzie ruch zwrotny z zasobów żądanych przez użytkownika w żądanej bramie VPN:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

  5. Przejdźmy do konfiguracji klastra Load-Balance.

    Adres 192.168.31.40 będzie używany jako wirtualny adres IP (VIP - początkowo będą się z nim łączyć wszyscy klienci VPN), z tego adresu Cluster Master przekieruje do mniej obciążonego węzła klastra. Nie zapomnij się zarejestrować przesyłanie i odwracanie rekordów DNS zarówno dla każdego adresu zewnętrznego/nazwy FQDN każdego węzła klastra, jak i dla VIP-a.

    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)#

    • Sprawdzamy działanie klastra z dwoma podłączonymi klientami:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    • Sprawmy, aby doświadczenie klienta było wygodniejsze dzięki automatycznie pobieranemu profilowi ​​AnyConnect za pośrednictwem ASDM.

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Nadajemy profilowi ​​dogodną nazwę i kojarzymy z nim naszą politykę grupową:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Po następnym połączeniu klienta profil ten zostanie automatycznie pobrany i zainstalowany w kliencie AnyConnect, więc jeśli chcesz się połączyć, wystarczy wybrać go z listy:

    Wdrażanie klastra równoważenia obciążenia ASA VPN

    Ponieważ przy użyciu ASDM utworzyliśmy ten profil tylko na jednym ASA, nie zapomnij powtórzyć kroków na pozostałych ASA w klastrze.

Wnioski: Dlatego szybko wdrożyliśmy klaster kilku bram VPN z automatycznym równoważeniem obciążenia. Dodawanie nowych węzłów do klastra jest łatwe i pozwala na proste skalowanie poziome poprzez wdrożenie nowych maszyn wirtualnych ASAv lub użycie sprzętowych ASA. Bogaty w funkcje klient AnyConnect może znacznie zwiększyć możliwości bezpiecznego połączenia zdalnego za pomocą Postawa (ocena stanu), najskuteczniej stosowane w połączeniu ze scentralizowanym systemem kontroli dostępu i księgowości Silnik usług tożsamości.

Źródło: www.habr.com

Dodaj komentarz