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.
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.
Implementamos instancias ASAv dos modelos que necesitamos (ASAv5/10/30/50) a partir da imaxe.
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.
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
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.
Despois de premer o botón Crear ficha, crearase un token que usaremos para obter unha licenza para ASAv, cópiao:
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í.
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:
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:
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:
Os ficheiros descargados pódense cargar, por exemplo, nun servidor FTP e cargarse en cada ASA individual:
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:
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.
(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:
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. .
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
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.
Vemos o cliente conectado na táboa de enrutamento do primeiro 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:
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:
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.
Comprobamos o funcionamento do clúster con dous clientes conectados:
Fagamos a experiencia do cliente máis cómoda co perfil AnyConnect cargado automaticamente a través de ASDM.
Nomeamos o perfil dun xeito cómodo e asociamos a nosa política de grupo:
Despois da seguinte conexión do cliente, este perfil descargarase e instalarase automaticamente no cliente AnyConnect, polo que se precisas conectarte, seleccionalo na lista:
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.