Déploiement d'un cluster d'équilibrage de charge VPN ASA

Dans cet article, je voudrais fournir des instructions étape par étape sur la façon dont vous pouvez déployer rapidement le schéma le plus évolutif du moment. VPN d'accès à distance basé sur l'accès AnyConnect et Cisco ASA - Cluster d'équilibrage de charge VPN.

Введение: De nombreuses entreprises à travers le monde, compte tenu de la situation actuelle avec COVID-19, font des efforts pour transférer leurs employés vers le travail à distance. En raison de la transition massive vers le travail à distance, la charge sur les passerelles VPN existantes des entreprises augmente de manière critique et une capacité très rapide à les faire évoluer est nécessaire. D'autre part, de nombreuses entreprises sont obligées de maîtriser à la hâte le concept de travail à distance à partir de zéro.

Pour aider les entreprises à obtenir un accès VPN pratique, sécurisé et évolutif pour les employés dans les plus brefs délais, Cisco accorde une licence au client VPN SSL riche en fonctionnalités AnyConnect pour une durée maximale de 13 semaines. Vous pouvez également passer un test ASAv (Virtual ASA pour les hyperviseurs VMWare/Hyper-V/KVM et les plateformes cloud AWS/Azure) auprès de partenaires autorisés ou en contactant les représentants Cisco travaillant avec vous..

La procédure de délivrance des licences AnyConnect COVID-19 est décrite ici.

J'ai préparé un guide étape par étape pour un déploiement simple du cluster d'équilibrage de charge VPN en tant que technologie VPN la plus évolutive.

L'exemple ci-dessous sera assez simple au niveau des algorithmes d'authentification et d'autorisation utilisés, mais sera une bonne option pour un démarrage rapide (ce qui n'est actuellement pas suffisant pour beaucoup) avec la possibilité d'une adaptation en profondeur à vos besoins lors du déploiement processus.

Information brève: La technologie VPN Load Balancing Cluster n'est pas un basculement ni une fonction de clustering au sens natif, cette technologie peut combiner des modèles ASA complètement différents (avec certaines restrictions) afin d'équilibrer la charge des connexions VPN d'accès à distance. Il n'y a pas de synchronisation des sessions et des configurations entre les nœuds d'un tel cluster, mais il est possible d'équilibrer automatiquement la charge des connexions VPN et d'assurer la tolérance aux pannes des connexions VPN jusqu'à ce qu'au moins un nœud actif reste dans le cluster. La charge dans le cluster est automatiquement équilibrée en fonction de la charge de travail des nœuds par le nombre de sessions VPN.

Pour le basculement de nœuds spécifiques du cluster (si nécessaire), un filer peut être utilisé, de sorte que la connexion active sera gérée par le nœud principal du filer. Le fileover n'est pas une condition nécessaire pour assurer la tolérance aux pannes au sein du cluster Load-Balancing, le cluster lui-même, en cas de panne d'un nœud, transférera la session utilisateur vers un autre nœud actif, mais sans enregistrer l'état de la connexion, qui est précisément fournies par le déclarant. Ainsi, il est possible, si nécessaire, de combiner ces deux technologies.

Un cluster d'équilibrage de charge VPN peut contenir plus de deux nœuds.

Le cluster d'équilibrage de charge VPN est pris en charge sur ASA 5512-X et supérieur.

Étant donné que chaque ASA au sein du cluster VPN Load-Balancing est une unité indépendante en termes de paramètres, nous effectuons toutes les étapes de configuration individuellement sur chaque appareil individuel.

Détails de la technologie ici

La topologie logique de l'exemple donné :

Déploiement d'un cluster d'équilibrage de charge VPN ASA

Déploiement principal :

  1. Nous déployons des instances ASAv des modèles dont nous avons besoin (ASAv5/10/30/50) à partir de l'image.

  2. On affecte les interfaces INSIDE / OUTSIDE aux mêmes VLAN (Outside dans son propre VLAN, INSIDE dans le sien, mais généralement au sein du cluster, voir la topologie), il est important que des interfaces de même type soient dans le même segment L2.

  3. Licences :

    • Pour le moment, l'installation ASAv n'aura aucune licence et sera limitée à 100kbps.
    • Pour installer une licence, vous devez générer un token dans votre Smart-Account : https://software.cisco.com/ -> Licence logicielle intelligente
    • Dans la fenêtre qui s'ouvre, cliquez sur le bouton Nouveau jeton

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Assurez-vous que dans la fenêtre qui s'ouvre, il y a un champ actif et une coche est cochée Autoriser les fonctionnalités contrôlées par l'exportation… Sans ce champ actif, vous ne pourrez pas utiliser les fonctions de cryptage fort et, par conséquent, VPN. Si ce champ n'est pas actif, veuillez contacter votre équipe de compte avec une demande d'activation.

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Après avoir cliqué sur le bouton Créer un jeton, un jeton sera créé que nous utiliserons pour obtenir une licence pour ASAv, copiez-le :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Répétez les étapes C, D, E pour chaque ASAv déployé.
    • Pour faciliter la copie du jeton, autorisons temporairement telnet. Configurons chaque ASA (l'exemple ci-dessous illustre les paramètres sur ASA-1). telnet ne fonctionne pas avec l'extérieur, si vous en avez vraiment besoin, changez le niveau de sécurité à 100 pour l'extérieur, puis renvoyez-le.

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

    • Pour enregistrer un jeton dans le cloud Smart-Account, vous devez fournir un accès Internet pour ASA, détails ici.

    En bref, ASA est nécessaire :

    • accès via HTTPS à Internet ;
    • synchronisation de l'heure (plus correctement, via NTP);
    • serveur DNS enregistré ;
      • Nous nous connectons par telnet à notre ASA et effectuons les réglages pour activer la licence via 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>

    • Nous vérifions que l'appareil a bien enregistré une licence et que des options de chiffrement sont disponibles :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

  4. Configurer un SSL-VPN de base sur chaque passerelle

    • Ensuite, configurez l'accès via SSH et 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 
    !

    • Pour que l'ASDM fonctionne, il faut d'abord le télécharger depuis le site cisco.com, dans mon cas c'est le fichier suivant :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Pour que le client AnyConnect fonctionne, vous devez télécharger une image sur chaque ASA pour chaque système d'exploitation client de bureau utilisé (prévu pour utiliser Linux / Windows / MAC), vous aurez besoin d'un fichier avec Package de déploiement de tête de réseau Dans le titre :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Les fichiers téléchargés peuvent être téléchargés, par exemple, sur un serveur FTP et téléchargés sur chaque ASA individuelle :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Nous configurons ASDM et un certificat auto-signé pour SSL-VPN (il est recommandé d'utiliser un certificat de confiance en production). Le FQDN défini de l'adresse du cluster virtuel (vpn-demo.ashes.cc), ainsi que chaque FQDN associé à l'adresse externe de chaque nœud du cluster, doit se résoudre dans la zone DNS externe en l'adresse IP de l'interface OUTSIDE (ou à l'adresse mappée si la redirection de port udp/443 est utilisée (DTLS) et tcp/443(TLS)). Des informations détaillées sur les exigences du certificat sont spécifiées dans la section Certificat de vérification Documentation.

    !
    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               

    • N'oubliez pas de spécifier le port pour vérifier que l'ASDM fonctionne, par exemple :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Effectuons les réglages de base du tunnel :
    • Rendons le réseau d'entreprise disponible via le tunnel, et laissons Internet passer directement (ce n'est pas la méthode la plus sûre s'il n'y a pas de protections sur l'hôte qui se connecte, il est possible de pénétrer à travers un hôte infecté et d'afficher les données de l'entreprise, option tunnelall de politique de tunnel partagé laissera tout le trafic de l'hôte dans le tunnel. Néanmoins tunnel divisé permet de décharger la passerelle VPN et de ne pas traiter le trafic Internet de l'hôte)
    • Envoyons les adresses du sous-réseau 192.168.20.0/24 aux hôtes du tunnel (pool de 10 à 30 adresses (pour le nœud #1)). Chaque nœud du cluster VPN doit avoir son propre pool.
    • Nous effectuerons l'authentification de base avec un utilisateur créé localement sur l'ASA (ceci n'est pas recommandé, c'est la méthode la plus simple), il est préférable de faire l'authentification via LDAP/RAYON, ou mieux encore, cravate Authentification multifacteur (MFA)exemple 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
    !

    • (FACULTATIF): Dans l'exemple ci-dessus, nous avons utilisé un utilisateur local sur l'UIT pour authentifier les utilisateurs distants, ce qui bien sûr, sauf en laboratoire, est peu applicable. Je vais donner un exemple de la façon d'adapter rapidement le paramètre d'authentification à RAYON serveur, par exemple utilisé Moteur de services d'identité 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 
    !

    Cette intégration a permis non seulement d'intégrer rapidement la procédure d'authentification au service d'annuaire AD, mais également de distinguer si l'ordinateur connecté appartient à AD, de comprendre si cet appareil est professionnel ou personnel, et d'évaluer l'état de l'appareil connecté .

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Configurons Transparent NAT pour que le trafic entre le client et les ressources du réseau d'entreprise ne soit pas gribouillé :

    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

    • (FACULTATIF): Afin d'exposer nos clients à Internet via l'ASA (lors de l'utilisation tunneltout options) en utilisant PAT, ainsi que la sortie via la même interface OUTSIDE à partir de laquelle ils sont connectés, vous devez effectuer les réglages suivants

    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 
    !

    • Lors de l'utilisation d'un cluster, il est extrêmement important de permettre au réseau interne de comprendre quelle ASA acheminer le trafic de retour vers les utilisateurs, pour cela vous devez redistribuer les routes/32 adresses délivrées aux clients.
      Pour le moment, nous n'avons pas encore configuré le cluster, mais nous avons déjà des passerelles VPN fonctionnelles qui peuvent être connectées individuellement via FQDN ou IP.

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Nous voyons le client connecté dans la table de routage de la première ASA :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Afin que l'ensemble de notre cluster VPN et l'ensemble du réseau d'entreprise connaissent la route vers notre client, nous allons redistribuer le préfixe client dans un protocole de routage dynamique, par exemple 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

    Nous avons maintenant une route vers le client depuis la deuxième passerelle ASA-2 et les utilisateurs connectés à différentes passerelles VPN au sein du cluster peuvent, par exemple, communiquer directement via un softphone d'entreprise, ainsi que renvoyer le trafic à partir des ressources demandées par l'utilisateur. arrivez sur la passerelle VPN souhaitée :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

  5. Passons à la configuration du cluster Load-Balancing.

    L'adresse 192.168.31.40 sera utilisée comme adresse IP virtuelle (VIP - tous les clients VPN s'y connecteront initialement), à partir de cette adresse, le cluster maître effectuera une REDIRECT vers un nœud de cluster moins chargé. N'oubliez pas d'écrire enregistrement DNS avant et arrière à la fois pour chaque adresse externe / FQDN de chaque nœud du cluster, et pour 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)#

    • On vérifie le fonctionnement du cluster avec deux clients connectés :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    • Rendons l'expérience client plus pratique avec le profil AnyConnect chargé automatiquement via ASDM.

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Nous nommons le profil de manière pratique et y associons notre politique de groupe :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Après la prochaine connexion du client, ce profil sera automatiquement téléchargé et installé dans le client AnyConnect, donc si vous avez besoin de vous connecter, il vous suffit de le sélectionner dans la liste :

    Déploiement d'un cluster d'équilibrage de charge VPN ASA

    Puisque nous avons créé ce profil sur seulement un ASA utilisant l'ASDM, n'oubliez pas de répéter les étapes sur les autres ASA dans la batterie.

Conclusion: Ainsi, nous avons rapidement déployé un cluster de plusieurs passerelles VPN avec équilibrage de charge automatique. L'ajout de nouveaux nœuds au cluster est facile, avec une mise à l'échelle horizontale simple en déployant de nouvelles machines virtuelles ASAv ou en utilisant des ASA matériels. Le client AnyConnect riche en fonctionnalités peut considérablement améliorer la connexion à distance sécurisée à l'aide du Posture (estimations de l'état), utilisé le plus efficacement en conjonction avec le système de contrôle centralisé et de comptabilité d'accès Moteur de services d'identité.

Source: habr.com

Ajouter un commentaire