Распоредување на ASA VPN кластер за балансирање на оптоварување

Во оваа статија би сакал да дадам чекор-по-чекор инструкции за тоа како можете брзо да ја распоредите најскалабилната шема во моментот VPN со далечински пристап базиран на пристап AnyConnect и Cisco ASA - Кластер за балансирање на оптоварување VPN.

Вовед: Многу компании ширум светот, поради моменталната ситуација со СОВИД-19, прават напори да ги префрлат своите вработени на работа од далечина. Поради широко распространетата транзиција кон работа на далечина, оптоварувањето на постоечките VPN порти на компаниите критично се зголемува и потребна е многу брза способност за нивно зголемување. Од друга страна, многу компании се принудени набрзина да го совладаат концептот за работа од далечина од нула.

За да им помогне на бизнисите брзо да имплементираат удобен, безбеден и скалабилен VPN пристап за вработените, Cisco обезбедува до 13-неделни лиценци за клиентот AnyConnect SSL-VPN, богат со функции. Може да земете и ASAv за тестирање (Виртуелна ASA за хипервизори VMWare/Hyper-V/KVM и AWS/Azure облак платформи) од овластени партнери или со контактирање со претставници на Cisco кои работат со вас.

Постапката за издавање лиценци AnyConnect COVID-19 е опишана овде.

Подготвив чекор-по-чекор инструкции за едноставна опција за распоредување на кластер за балансирање на оптоварување VPN како најскалабилна VPN технологија.

Примерот подолу ќе биде прилично едноставен од гледна точка на користените алгоритми за автентикација и авторизација, но ќе биде добра опција за брз почеток (што е нешто што сега им недостасува на многу луѓе) со можност за длабинска адаптација на вашите потреби за време на процесот на распоредување.

Кратки информации: Технологијата на кластер за балансирање на оптоварување на VPN не е неуспешна функција или функција за кластерирање во нејзината природна смисла; оваа технологија може да комбинира сосема различни модели на ASA (со одредени ограничувања) со цел да се вчитаат рамнотежа VPN конекции за далечински пристап. Нема синхронизација на сесии и конфигурации помеѓу јазлите на таков кластер, но можно е автоматски да се вчитаат балансирани VPN конекции и да се обезбеди толеранција на грешки на VPN конекциите додека барем еден активен јазол не остане во кластерот. Оптоварувањето во кластерот се балансира автоматски во зависност од обемот на работа на јазлите според бројот на VPN сесии.

За толеранција на грешки на специфични јазли на кластерот (ако е потребно), можете да користите датотека за датотеки, така што активната врска ќе биде обработена од Примарниот јазол на датотеката. Префрлањето на датотеки не е неопходен услов за да се обезбеди толеранција на грешки во кластерот Load-Balancing; во случај на дефект на јазолот, самиот кластер ќе ја префрли корисничката сесија на друг жив јазол, но без одржување на статусот на врската, што е токму она што датотеката обезбедува. Според тоа, овие две технологии може да се комбинираат доколку е потребно.

Кластерот за балансирање на оптоварување VPN може да содржи повеќе од два јазли.

Кластерот за балансирање на оптоварување VPN е поддржан на ASA 5512-X и повисоко.

Бидејќи секој ASA во кластерот VPN Load-Balancing е независна единица во однос на поставките, ние ги извршуваме сите чекори за конфигурација поединечно на секој поединечен уред.

Детали за технологијата овде

Логичката топологија на дадениот пример е:

Распоредување на ASA VPN кластер за балансирање на оптоварување

Почетно распоредување:

  1. Ние распоредуваме ASAv примероци од шаблоните што ни се потребни (ASAv5/10/30/50) од сликата.

  2. Доделуваме интерфејси INSIDE/OUTSIDE на истиот VLAN (Надвор во сопствен VLAN, ВНАТРЕ во свој, но вообичаен во кластерот, видете ја топологијата), важно е интерфејсите од ист тип да се наоѓаат во истиот L2 сегмент.

  3. Лиценци:

    • Во моментот на инсталацијата, ASAv нема да има никакви лиценци и ќе биде ограничен на 100 kbit/sec.
    • За да инсталирате лиценца, треба да генерирате токен во вашата сметка на Smart-Account: https://software.cisco.com/ -> Лиценцирање за паметен софтвер
    • Во прозорецот што се отвора, кликнете на копчето Нов токен

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Проверете дали полето во прозорецот што се отвора е активно и полето за избор е означено Дозволете функционалност контролирана од извоз... Без ова активно поле, нема да можете да користите силни функции за шифрирање и, соодветно, VPN. Ако ова поле не е активно, ве молиме контактирајте го тимот на вашата сметка за да побарате активирање.

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • По притискање на копчето Создадете знак, ќе се создаде токен што ќе го користиме за да добиеме лиценца за ASAv, копирајте го:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Ајде да ги повториме чекорите C, D, E за секој распореден ASAv.
    • За да го олесниме копирањето на токенот, ајде привремено да овозможиме телнет. Ајде да ја конфигурираме секоја ASA (примерот подолу ги илустрира поставките на ASA-1). телнет од надвор не работи, ако навистина ти треба, смени го безбедносното ниво на 100 на надвор, па смени го назад.

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

    • За да регистрирате токен во облакот Smart-Account, мора да обезбедите пристап до Интернет до ASA, детали тука.

    Накратко, потребна е ASA:

    • Интернет пристап преку HTTPS;
    • синхронизација на времето (поточно преку NTP);
    • регистриран DNS сервер;
      • Одиме преку телнет до нашата ASA и правиме поставки за активирање на лиценцата преку 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>

    • Проверуваме дали уредот успешно регистрирал лиценца и дали се достапни опции за шифрирање:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    Распоредување на ASA VPN кластер за балансирање на оптоварување

  4. Конфигурирање на основниот SSL-VPN на секоја порта

    • Следно, го конфигурираме пристапот преку SSH и 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 
    !

    • За да работи ASDM, прво мора да го преземете од cisco.com, во мојот случај тоа е следнава датотека:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • За да работи клиентот AnyConnect, треба да преземете слика на секоја ASA за секој употребен десктоп оперативен систем на клиент (планиран да користи Linux/Windows/MAC), ќе ви треба датотека со Пакет за распоредување на Headend Во насловот:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Преземените датотеки може да се подигнат, на пример, на FTP сервер и да се подигнат на секој поединечен ASA:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Конфигурираме ASDM и Self-Signed сертификат за SSL-VPN (се препорачува да се користи доверлив сертификат во производството). Воспоставениот FQDN на виртуелната адреса на кластерот (vpn-demo.ashes.cc), како и секој FQDN поврзан со надворешната адреса на секој јазол на кластерот мора да се реши во надворешната DNS зона до IP адресата на интерфејсот OUTSIDE (или до мапираната адреса ако се користи препраќање порта udp/443 (DTLS) и tcp/443 (TLS)). Детални информации за барањата за сертификатот се наведени во делот Потврда за сертификат документација.

    !
    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               

    • За да ја проверите работата на ASDM, не заборавајте да ја наведете портата, на пример:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Ајде да ги извршиме основните поставки на тунелот:
    • Ќе ја направиме корпоративната мрежа достапна преку тунел и ќе го поврземе интернетот директно (не е најбезбедниот метод во отсуство на безбедносни мерки на поврзувачкиот хост, можно е да се навлезе преку заразен домаќин и да се излезат корпоративни податоци, опција Сплит-тунел-политика тунел ќе го овозможи целиот сообраќај на домаќинот во тунелот. Сепак Сплит-тунел овозможува да се ослободи портата VPN и да не се обработува интернет сообраќајот на домаќинот)
    • Ќе издадеме хостови во тунелот со адреси од подмрежата 192.168.20.0/24 (базен од 10 до 30 адреси (за јазол #1)). Секој јазол во кластерот мора да има сопствен VPN базен.
    • Ајде да извршиме основна автентикација со локално креиран корисник на ASA (Ова не се препорачува, ова е наједноставниот метод), подобро е да се направи автентикација преку LDAP/RADIUS, или уште подобро, вратоврска Повеќефакторска автентикација (MFA), На пример, 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
    !

    • (ИЗБОРЕН): Во горниот пример, користевме локален корисник на заштитниот ѕид за автентикација на далечински корисници, што секако е од мала корист освен во лабораторија. Ќе дадам пример за тоа како брзо да се прилагоди поставувањето за автентикација РАДИУС сервер, користен на пример Мотор за услуги за идентитет на 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 
    !

    Оваа интеграција овозможи не само брзо интегрирање на постапката за автентикација со услугата AD директориум, туку и да се направи разлика дали поврзаниот компјутер припаѓа на AD, да се разбере дали е корпоративен или личен уред и да се процени состојбата на поврзаниот уред.

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Ајде да го конфигурираме Transparent NAT така што сообраќајот помеѓу клиентот и мрежните ресурси на корпоративната мрежа нема да биде попречен:

    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

    • (ИЗБОРЕН): Да ги изложиме нашите клиенти на Интернет преку ASA (при користење тунел опции) користејќи PAT, а исто така излезете преку истиот интерфејс OUTSIDE од каде што се поврзани, треба да ги направите следните поставки

    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 
    !

    • Исклучително е важно кога се користи кластер да се овозможи внатрешната мрежа да разбере која ASA да го насочува повратниот сообраќај до корисниците; за ова е неопходно да се прераспределат рутите /32 адреси издадени на клиентите.
      Во моментов, сè уште не сме го конфигурирале кластерот, но веќе имаме работни VPN порти на кои можете индивидуално да се поврзете преку FQDN или IP.

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    Го гледаме поврзаниот клиент во рутирачката табела на првиот ASA:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    Така што целиот наш VPN кластер и целата корпоративна мрежа ја знаат рутата до нашиот клиент, ние ќе го редистрибуираме префиксот на клиентот во динамичен протокол за рутирање, на пример 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

    Сега имаме рута до клиентот од втората порта ASA-2 и корисниците поврзани со различни VPN порти во кластерот можат, на пример, да комуницираат директно преку корпоративен мек телефон, исто како што ќе пристигне повратниот сообраќај од ресурсите што ги бара корисникот на саканиот VPN портал:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

  5. Ајде да продолжиме со поставувањето на кластерот Load-Balancing.

    Адресата 192.168.31.40 ќе се користи како виртуелна IP (VIP - сите VPN клиенти првично ќе се поврзат со неа), од оваа адреса Cluster Master ќе се ПРЕДИРЕСИРА во помалку вчитан јазол на кластерот. Не заборавајте да се регистрирате напред и назад записи DNS и за секоја надворешна адреса/FQDN на секој јазол на кластерот, и за ВИП.

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

    • Ја проверуваме работата на кластерот со два поврзани клиенти:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    • Ајде да го направиме искуството на клиентот поудобно со автоматски преземен AnyConnect профил преку ASDM.

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    Ние го именуваме профилот на пригоден начин и ја поврзуваме нашата групна политика со него:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    По следното поврзување со клиентот, овој профил автоматски ќе се преземе и инсталира во клиентот AnyConnect, па ако треба да се поврзете, само треба да го изберете од списокот:

    Распоредување на ASA VPN кластер за балансирање на оптоварување

    Бидејќи со користење на ASDM го создадовме овој профил само на еден ASA, не заборавајте да ги повторите чекорите на преостанатите ASA во кластерот.

Заклучок: Така, брзо распоредивме кластер од неколку VPN порти со автоматско балансирање на оптоварување. Додавањето нови јазли во кластерот е лесно, постигнувајќи едноставно хоризонтално скалирање со распоредување на нови виртуелни машини ASAv или користење на хардверски ASA. Клиентот AnyConnect богат со функции може значително да ги подобри вашите можности за безбедно далечинско поврзување користејќи го Поза (состојба на проценки), најефективно се користи во врска со централизиран систем за контрола на пристап и сметководство Мотор за услуги за идентитет.

Извор: www.habr.com

Додадете коментар