Implementación dun clúster de equilibrio de carga VPN ASA

Neste artigo, gustaríame proporcionar instrucións paso a paso sobre como pode implementar rapidamente o esquema máis escalable neste momento. VPN de acceso remoto baseado no acceso AnyConnect e Cisco ASA - Clúster de equilibrio de carga VPN.

Introdución: Moitas empresas de todo o mundo, ante a situación actual co COVID-19, están a facer esforzos para trasladar aos seus empregados ao traballo remoto. Debido á transición masiva ao traballo remoto, a carga das pasarelas VPN existentes das empresas está a aumentar de forma crítica e é necesaria unha capacidade moi rápida para escalalas. Por outra banda, moitas empresas vense obrigadas a dominar apresuradamente o concepto de traballo remoto dende cero.

Para axudar ás empresas a conseguir un acceso VPN cómodo, seguro e escalable para os empregados no menor tempo posible, Cisco concede unha licenza para o cliente SSL-VPN de AnyConnect por ata 13 semanas. Tamén pode realizar unha proba de ASAv (ASA virtual para hipervisores VMWare/Hyper-V/KVM e plataformas de nube AWS/Azure) de socios autorizados ou poñendo en contacto cos representantes de Cisco que traballan contigo..

Aquí descríbese o procedemento para emitir licenzas AnyConnect COVID-19.

Preparei unha guía paso a paso para unha sinxela implantación do Clúster de equilibrio de carga VPN como a tecnoloxía VPN máis escalable.

O exemplo que aparece a continuación será bastante sinxelo en canto aos algoritmos de autenticación e autorización empregados, pero será unha boa opción para un inicio rápido (que actualmente falta para moitos) coa capacidade de adaptarse profundamente ás túas necesidades durante o proceso de implantación.

Breve información: A tecnoloxía VPN Load Balancing Cluster non é unha función de conmutación por fallo nin unha función de agrupación no seu sentido nativo, esta tecnoloxía pode combinar modelos ASA completamente diferentes (con certas restricións) para equilibrar a carga de conexións VPN de acceso remoto. Non hai sincronización de sesións e configuracións entre os nodos deste tipo de clúster, pero é posible equilibrar automaticamente as conexións VPN e garantir a tolerancia a fallos das conexións VPN ata que permaneza polo menos un nodo activo no clúster. A carga no clúster equilibra automaticamente dependendo da carga de traballo dos nodos polo número de sesións VPN.

Para a conmutación por fallo de nodos específicos do clúster (se é necesario), pódese usar un ficheiro, polo que a conexión activa será xestionada polo nodo principal do ficheiro. A transferencia de ficheiros non é unha condición necesaria para garantir a tolerancia a fallos dentro do clúster de equilibrio de carga, o propio clúster, en caso de falla dun nodo, transferirá a sesión do usuario a outro nodo activo, pero sen gardar o estado de conexión, que é precisamente proporcionada polo ficheiro. En consecuencia, é posible, se é necesario, combinar estas dúas tecnoloxías.

Un clúster de equilibrio de carga VPN pode conter máis de dous nodos.

O clúster de equilibrio de carga VPN é compatible con ASA 5512-X e superior.

Dado que cada ASA dentro do clúster de equilibrio de carga VPN é unha unidade independente en termos de configuración, realizamos todos os pasos de configuración individualmente en cada dispositivo individual.

Detalles da tecnoloxía aquí

A topoloxía lóxica do exemplo dado:

Implementación dun clúster de equilibrio de carga VPN ASA

Implementación principal:

  1. Implementamos instancias ASAv dos modelos que necesitamos (ASAv5/10/30/50) a partir da imaxe.

  2. Asignamos as interfaces INSIDE / OUTSIDE ás mesmas VLAN (Fóra na súa propia VLAN, INSIDE na súa propia, pero xeralmente dentro do clúster, vexa a topoloxía), é importante que as interfaces do mesmo tipo estean no mesmo segmento L2.

  3. Licenzas:

    • Polo momento a instalación de ASAv non terá ningunha licenza e estará limitada a 100 kbps.
    • Para instalar unha licenza, debes xerar un token na túa conta intelixente: https://software.cisco.com/ -> Licenzas de software intelixente
    • Na xanela que se abre, fai clic no botón Novo token

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Asegúrese de que na xanela que se abre hai un campo activo e unha marca de verificación está marcada Permitir a funcionalidade controlada pola exportación… Sen este campo activo, non poderás usar as funcións de cifrado forte e, en consecuencia, VPN. Se este campo non está activo, póñase en contacto co equipo da túa conta cunha solicitude de activación.

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Despois de premer o botón Crear ficha, crearase un token que usaremos para obter unha licenza para ASAv, cópiao:

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Repita os pasos C,D,E para cada ASAv implantado.
    • Para facilitar a copia do token, permitamos temporalmente o telnet. Imos configurar cada ASA (o exemplo de abaixo ilustra a configuración de ASA-1). telnet non funciona con fóra, se realmente o necesitas, cambia o nivel de seguranza a 100 para fóra e devolveo.

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

    • Para rexistrar un token na nube Smart-Account, debes proporcionar acceso a Internet para ASA, detalles aquí.

    En resumo, necesítase ASA:

    • acceso vía HTTPS a Internet;
    • sincronización horaria (máis correctamente, vía NTP);
    • servidor DNS rexistrado;
      • Telnet ao noso ASA e realizamos a configuración para activar a licenza a través de 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>

    • Comprobamos que o dispositivo rexistrou correctamente unha licenza e que as opcións de cifrado están dispoñibles:

    Implementación dun clúster de equilibrio de carga VPN ASA

    Implementación dun clúster de equilibrio de carga VPN ASA

  4. Configura un SSL-VPN básico en cada pasarela

    • A continuación, configure o acceso a través de SSH e 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 
    !

    • Para que o ASDM funcione, primeiro debes descargalo desde o sitio web cisco.com, no meu caso é o seguinte ficheiro:

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Para que o cliente AnyConnect funcione, necesitará cargar unha imaxe a cada ASA para cada sistema operativo cliente de escritorio utilizado (planeado para usar Linux/Windows/MAC), necesitará un ficheiro con Paquete de implementación de cabeceira No título:

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Os ficheiros descargados pódense cargar, por exemplo, nun servidor FTP e cargarse en cada ASA individual:

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Configuramos o certificado ASDM e autoasinado para SSL-VPN (recoméndase utilizar un certificado de confianza na produción). O FQDN establecido do enderezo do clúster virtual (vpn-demo.ashes.cc), así como cada FQDN asociado ao enderezo externo de cada nodo do clúster, debe resolverse na zona DNS externa ao enderezo IP da interface OUTSIDE (ou ao enderezo asignado se se usa o reenvío de portos udp/443 (DTLS) e tcp/443(TLS)). A información detallada sobre os requisitos para o certificado especifícase na sección Verificación do certificado documentación.

    !
    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               

    • Non esquezas especificar o porto para comprobar que o ASDM funciona, por exemplo:

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Imos realizar a configuración básica do túnel:
    • Poñemos a rede corporativa dispoñible a través do túnel e deixemos que Internet vaia directamente (non é o método máis seguro se non hai proteccións no host que se conecta, é posible penetrar a través dun host infectado e mostrar datos corporativos, opción). política de túnel dividido tunnelall permitirá que todo o tráfico de aloxamento entre no túnel. Con todo túnel dividido fai posible descargar a pasarela VPN e non procesar o tráfico de Internet do host)
    • Imos emitir enderezos desde a subrede 192.168.20.0/24 aos anfitrións do túnel (agrupar de 10 a 30 enderezos (para o nodo 1)). Cada nodo do clúster VPN debe ter o seu propio grupo.
    • Realizaremos a autenticación básica cun usuario creado localmente no ASA (Isto non se recomenda, este é o método máis sinxelo), é mellor facer a autenticación mediante LDAP/RADIO, ou mellor aínda, gravata Autenticación multifactor (MFA), V.g. 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
    !

    • (OPCIONAL): No exemplo anterior, usamos un usuario local na ITU para autenticar usuarios remotos, o que por suposto, excepto no laboratorio, é pouco aplicable. Vou dar un exemplo de como adaptar rapidamente a configuración para a autenticación RADIUS servidor, por exemplo usado Motor de servizos de identidade de 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 
    !

    Esta integración permitiu non só integrar rapidamente o procedemento de autenticación co servizo de directorio AD, senón tamén distinguir se o ordenador conectado pertence a AD, comprender se este dispositivo é corporativo ou persoal e avaliar o estado do dispositivo conectado. .

    Implementación dun clúster de equilibrio de carga VPN ASA

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Configuremos o NAT transparente para que non se escriba o tráfico entre o cliente e os recursos da rede da rede corporativa:

    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

    • (OPCIONAL): Para expor aos nosos clientes a Internet a través do ASA (ao usar tunelall opcións) usando PAT, así como saír pola mesma interface OUTSIDE desde a que están conectados, cómpre realizar os seguintes axustes

    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 
    !

    • Cando se utiliza un clúster, é extremadamente importante habilitar a rede interna para entender que ASA encamiña o tráfico de retorno aos usuarios, para iso é necesario redistribuír as rutas/32 enderezos emitidos aos clientes.
      Polo momento, aínda non configuramos o clúster, pero xa temos pasarelas VPN funcionando que se poden conectar individualmente mediante FQDN ou IP.

    Implementación dun clúster de equilibrio de carga VPN ASA

    Vemos o cliente conectado na táboa de enrutamento do primeiro ASA:

    Implementación dun clúster de equilibrio de carga VPN ASA

    Para que todo o noso clúster VPN e toda a rede corporativa coñezan a ruta ao noso cliente, redistribuiremos o prefixo do cliente nun protocolo de enrutamento dinámico, por exemplo 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

    Agora temos unha ruta ao cliente desde a segunda pasarela ASA-2 e os usuarios conectados a diferentes pasarelas VPN dentro do clúster poden, por exemplo, comunicarse directamente a través dun softphone corporativo, así como devolver o tráfico dos recursos solicitados polo usuario. chegar á pasarela VPN desexada:

    Implementación dun clúster de equilibrio de carga VPN ASA

  5. Pasemos á configuración do clúster de equilibrio de carga.

    O enderezo 192.168.31.40 empregarase como unha IP virtual (VIP: todos os clientes VPN conectaranse inicialmente a ela), desde este enderezo o clúster mestre fará un REDIRECT a un nodo do clúster menos cargado. Non esquezas escribir rexistro DNS cara adiante e inversa tanto para cada enderezo externo/FQDN de cada nodo do clúster, como para 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)#

    • Comprobamos o funcionamento do clúster con dous clientes conectados:

    Implementación dun clúster de equilibrio de carga VPN ASA

    • Fagamos a experiencia do cliente máis cómoda co perfil AnyConnect cargado automaticamente a través de ASDM.

    Implementación dun clúster de equilibrio de carga VPN ASA

    Nomeamos o perfil dun xeito cómodo e asociamos a nosa política de grupo:

    Implementación dun clúster de equilibrio de carga VPN ASA

    Despois da seguinte conexión do cliente, este perfil descargarase e instalarase automaticamente no cliente AnyConnect, polo que se precisas conectarte, seleccionalo na lista:

    Implementación dun clúster de equilibrio de carga VPN ASA

    Como creamos este perfil só nun ASA mediante ASDM, non esquezas repetir os pasos nos outros ASA do clúster.

Conclusión: Así, implantamos rapidamente un clúster de varias pasarelas VPN con equilibrio de carga automático. Engadir novos nodos ao clúster é sinxelo, cun simple escalado horizontal mediante a implantación de novas máquinas virtuais ASAv ou o uso de ASA de hardware. O cliente AnyConnect, rico en funcións, pode mellorar moito a conexión remota segura usando o Postura (estimacións do estado), máis eficazmente utilizado en conxunto co sistema de control centralizado e contabilidade de accesos Motor de servizos de identidade.

Fonte: www.habr.com

Engadir un comentario