Déploiement d'un cluster ASA VPN Load-Balancing

Dans cet article, je voudrais fournir un guide Ă©tape par Ă©tape sur la façon de dĂ©ployer rapidement le schĂ©ma le plus Ă©volutif Ă  ce jour. VPN d'accĂšs Ă  distance basĂ© sur AnyConnect et Cisco ASA – Cluster de rĂ©partition de charge VPN.

Introduction : De nombreuses entreprises dans le monde entier, compte tenu de la situation actuelle avec la COVID-19, font des efforts pour transférer leurs employés en mode de travail à distance. En raison de la masse de cette transition vers le travail à distance, la charge sur les passerelles VPN existantes des entreprises augmente de maniÚre critique et il est nécessaire de les évoluer trÚs rapidement. D'autre part, beaucoup d'entreprises doivent apprendre à la hùte ce qu'est le travail à distance.

Pour aider les entreprises à mettre en place un accÚs VPN pratique, sécurisé et évolutif pour leurs employés dans les plus brefs délais, Cisco propose des licences pour le client SSL-VPN multifonctionnel AnyConnect pendant une durée pouvant aller jusqu'à 13 semaines. Il est également possible d'obtenir ASAv en version d'essai (ASA virtuelle pour hyperviseurs VMWare/Hyper-V/KVM et plates-formes cloud AWS/Azure) auprÚs de partenaires autorisés ou en contactant les représentants de Cisco qui travaillent avec vous..

La procédure d'obtention des licences AnyConnect COVID-19 est décrite ici..

J'ai préparé un guide étape par étape pour un déploiement simple d'un cluster de répartition de charge VPN comme la technologie VPN la plus évolutive.

L'exemple ci-dessous sera assez simple en termes d'algorithmes d'authentification et d'autorisation utilisés, mais sera un bon point de départ (ce qui fait défaut à beaucoup en ce moment) avec la possibilité d'une adaptation approfondie en fonction de vos besoins lors du déploiement.

Informations succinctes : La technologie Cluster de rĂ©partition de charge VPN n'est pas un basculement et n'est pas une fonction de clustering au sens natif, cette technologie permet de regrouper diffĂ©rents modĂšles ASA (avec certaines limitations) en vue de la rĂ©partition de charge des connexions VPN d'accĂšs Ă  distance. La synchronisation des sessions et des configurations entre les nƓuds de ce cluster est absente, mais une rĂ©partition automatique de la charge des connexions VPN et une garantie de disponibilitĂ© des connexions VPN sont possibles tant qu'il reste au moins un nƓud actif dans le cluster. La charge dans le cluster est rĂ©partie automatiquement en fonction de l'utilisation des nƓuds par le nombre de sessions VPN.

Pour assurer la redondance des nƓuds spĂ©cifiques du cluster (si nĂ©cessaire), on peut utiliser un file-over, de sorte que la connexion active soit gĂ©rĂ©e par le nƓud primaire du file-over. Le file-over n'est pas une condition nĂ©cessaire Ă  la redondance au sein du cluster de rĂ©partition de charge, le cluster lui-mĂȘme, en cas de dĂ©faillance d'un nƓud, transfĂ©rera la session utilisateur vers un autre nƓud actif, mais sans conserver l'Ă©tat de la connexion, ce que garantit justement le file-over. Par consĂ©quent, il est possible de combiner ces deux technologies si besoin.

Un cluster de rĂ©partition de charge VPN peut contenir plus de deux nƓuds.

Le cluster de répartition de charge VPN est pris en charge sur ASA 5512-X et versions supérieures.

Étant donnĂ© que chaque ASA au sein d'un cluster de rĂ©partition de charge VPN est une unitĂ© indĂ©pendante en ce qui concerne les configurations, toutes les Ă©tapes de la configuration sont effectuĂ©es individuellement sur chaque appareil.

Détails de la technologie ici

La topologie logique de l'exemple fourni :

Déploiement d'un cluster ASA VPN Load-Balancing

Déploiement initial :

  1. Nous déployons des instances ASAv à partir des images des modÚles qui nous intéressent (ASAv5/10/30/50).

  2. Nous attribuons les interfaces INSIDE/OUTSIDE aux VLAN identiques (Outside dans son propre VLAN, INSIDE dans le sien, mais commun dans le cadre du cluster, voir la topologie), il est important que les interfaces d'un mĂȘme type soient dans le mĂȘme segment L2.

  3. Licences :

    • Au moment de l'installation, ASAv n'aura aucune licence et sera limitĂ©e Ă  une performance de 100 kbit/s.
    • Pour installer la licence, vous devez gĂ©nĂ©rer un jeton dans votre compte Smart-Account : https://software.cisco.com/ -> Smart Software Licensing
    • Dans la fenĂȘtre qui s'ouvre, cliquez sur le bouton Nouveau jeton

    Déploiement d'un cluster ASA VPN Load-Balancing

    • Assurez-vous que dans la fenĂȘtre ouverte, il y a un champ actif et que la case est cochĂ©e Autoriser la fonctionnalitĂ© contrĂŽlĂ©e par exportation
 Sans ce champ actif, vous ne pourrez pas utiliser les fonctions de cryptage fort et donc VPN. Si ce champ n'est pas actif, veuillez contacter votre Ă©quipe de comptes pour demander son activation.

    Déploiement d'un cluster ASA VPN Load-Balancing

    • AprĂšs avoir cliquĂ© sur le bouton CrĂ©er un jeton, un jeton sera créé que nous utiliserons pour obtenir la licence pour ASAv, nous le copierons :

    Déploiement d'un cluster ASA VPN Load-Balancing

    • RĂ©pĂ©tez les Ă©tapes C, D, E pour chaque ASAv dĂ©ployĂ©e.
    • Pour faciliter la copie du jeton, nous allons temporairement autoriser telnet. Nous configurerons chaque ASA (l'exemple ci-dessous illustre les configurations sur ASA-1). telnet depuis l'extĂ©rieur ne fonctionne pas, si vraiment nĂ©cessaire, changez le niveau de sĂ©curitĂ© Ă  100 sur l'extĂ©rieur, puis revenez en arriĂšre.

    !
    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 le jeton dans le cloud Smart-Account, il est nĂ©cessaire d'accorder un accĂšs Internet Ă  l'ASA, les dĂ©tails ici.

    En résumé, l'ASA a besoin de :

    • un accĂšs HTTPS Ă  Internet ;
    • une synchronisation horaire (de prĂ©fĂ©rence via NTP) ;
    • un serveur DNS configurĂ© ;
      • Nous nous connectons par telnet Ă  nos 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 
    !
    ! Vérifions le bon fonctionnement du 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:
    !!!!!
    !
    ! Vérifions la synchronisation 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
    !
    ! Configurons notre ASAv pour Smart-Licensing (selon votre profil, dans mon cas 100M Ă  titre d'exemple)
    !
    ciscoasa(config)# license smart
    ciscoasa(config-smart-lic)# feature tier standard
    ciscoasa(config-smart-lic)# throughput level 100M
    !
    ! Si nécessaire, vous pouvez configurer l'accÚs Internet via un proxy, utilisez le bloc de commandes suivant :
    !call-home
    !  http-proxy ip_address port port
    !
    ! Ensuite, nous insérons le jeton copié depuis le portail Smart-Account (<token>) et enregistrons la licence
    !
    ciscoasa(config)# end
    ciscoasa# license smart register idtoken <token>

    • VĂ©rifions que l'appareil a bien enregistrĂ© la licence et que les options de cryptage sont disponibles :

    Déploiement d'un cluster ASA VPN Load-Balancing

    Déploiement d'un cluster ASA VPN Load-Balancing

  4. Configurons un VPN SSL de base sur chaque passerelle

    • Ensuite, configurons 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
    !
    ! Démarrons le serveur HTTPS pour ASDM sur le port 445 afin de ne pas entrer en conflit avec le portail SSL-VPN
    !
    vpn-demo-1(config)# http server enable 445 
    !

    • Pour faire fonctionner ASDM, il faut d'abord le tĂ©lĂ©charger depuis le site cisco.com, dans mon cas, il s'agit du fichier suivant :

    Déploiement d'un cluster ASA VPN Load-Balancing

    • Pour faire fonctionner le client AnyConnect, il est nĂ©cessaire de tĂ©lĂ©charger sur chaque ASA une image pour chaque systĂšme d'exploitation de bureau utilisĂ© (prĂ©vu pour Linux/Windows/MAC), il faudra un fichier avec Package de DĂ©ploiement Headend dans le nom :

    Déploiement d'un cluster ASA VPN Load-Balancing

    • Les fichiers tĂ©lĂ©chargĂ©s peuvent ĂȘtre tĂ©lĂ©chargĂ©s, par exemple, sur un serveur FTP et transfĂ©rĂ©s sur chaque ASA :

    Déploiement d'un cluster ASA VPN Load-Balancing

    • Configurez ASDM et le certificat auto-signĂ© pour le SSL-VPN (il est recommandĂ© d'utiliser un certificat de confiance en production). Le FQDN configurĂ© de l'adresse virtuelle du cluster (vpn-demo.ashes.cc), ainsi que chaque FQDN associĂ© Ă  l'adresse externe de chaque nƓud du cluster doit ĂȘtre rĂ©solu dans la zone DNS externe sur l'adresse IP de l'interface OUTSIDE (ou sur l'adresse mappĂ©e, si un transfert de port udp/443 (DTLS) et tcp/443 (TLS) est utilisĂ©). Des informations dĂ©taillĂ©es sur les exigences relatives au certificat sont indiquĂ©es dans la section VĂ©rification du Certificat la 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
    % Le nom de domaine complÚtement qualifié dans le certificat sera : vpn-demo.ashes.cc
    Générer un certificat auto-signé ? [yes/no]: yes
    vpn-demo-1(config)# 
    !
    vpn-demo-1(config)# sh cry ca certificates 
    Certificat
    Statut : Disponible
    Numéro de Série du Certificat : 4d43725e
    Utilisation du Certificat : Usage Général
    Type de Clé Publique : RSA (4096 bits)
    Algorithme de Signature : SHA256 avec Chiffrement RSA
    Nom de l'Émetteur : 
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Nom du Sujet :
    serialNumber=9A439T02F95
    hostname=vpn-demo.ashes.cc
    cn=*.ashes.cc
    ou=ashes-lab
    o=ashes
    c=ru
    Date de Validité : 
    date de début : 00:16:17 MSK Mar 19 2020
    date de fin : 00:16:17 MSK Mar 17 2030
    Stockage : config
    Points de Confiance Associés : SELF 
    
    Certificat CA
    Statut : Disponible
    Numéro de Série du Certificat : 0509
    Utilisation du Certificat : Usage Général
    Type de Clé Publique : RSA (4096 bits)
    Algorithme de Signature : SHA1 avec Chiffrement RSA
    Nom de l'Émetteur : 
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Nom du Sujet : 
    cn=QuoVadis Root CA 2
    o=QuoVadis Limited
    c=BM
    Date de Validité : 
    date de début : 21:27:00 MSK Nov 24 2006
    date de fin : 21:23:33 MSK Nov 24 2031
    Stockage : config
    Points de Confiance Associés : _SmartCallHome_ServerCA               

    • Pour vĂ©rifier le fonctionnement d'ASDM, n'oubliez pas d'indiquer le port, par exemple :

    Déploiement d'un cluster ASA VPN Load-Balancing

    • Nous allons effectuer les configurations de base du tunnel :
    • Rendons le rĂ©seau d'entreprise accessible via le tunnel, tandis que l'Internet sera accessible directement (ce n'est pas la mĂ©thode la plus sĂ»re en l'absence de mesures de protection sur l'hĂŽte connectĂ©, une intrusion par un hĂŽte infectĂ© est possible et des donnĂ©es d'entreprise peuvent ĂȘtre compromises, option split-tunnel-policy tunnelall aurachemise tout le trafic de l'hĂŽte dans le tunnel. Cela dit, Le Split-Tunnel permet de dĂ©charger la passerelle VPN et de ne pas traiter le trafic Internet de l'hĂŽte)
    • Nous attribuerons aux hĂŽtes dans le tunnel des adresses du sous-rĂ©seau 192.168.20.0/24 (pool avec 10 Ă  30 adresses (pour le nƓud #1)). Chaque nƓud du cluster VPN doit avoir son propre pool.
    • Nous allons effectuer une authentification de base avec un utilisateur créé localement sur l'ASA (ce n'est pas recommandĂ©, c'est la mĂ©thode la plus simple), il est prĂ©fĂ©rable de faire l'authentification via LDAP/RADIUS, et encore mieux de lier Multi-Factor Authentication (MFA), par 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
    !

    • (OPTIONNEL): Dans l'exemple ci-dessus, nous avons utilisĂ© un utilisateur local sur l'ASA pour authentifier des utilisateurs distants, ce qui, bien sĂ»r, Ă  part en laboratoire, n'est guĂšre applicable. Je vais donner un exemple de la façon d'adapter rapidement la configuration pour l'authentification sur RADIUS le serveur, pour l'exemple c'est utilisĂ© Cisco Identity Services Engine:

    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 avec le service d'annuaire AD, mais aussi de différencier l'appartenance de l'ordinateur connecté à l'AD, de comprendre si c'est un appareil d'entreprise ou personnel et d'évaluer l'état de l'appareil connecté.

    Déploiement d'un cluster ASA VPN Load-Balancing

    Déploiement d'un cluster ASA VPN Load-Balancing

    • Faisons une configuration de NAT Transparent pour que le trafic entre le client et les ressources du rĂ©seau d'entreprise ne soit pas 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

    • (OPTIONNEL) : Pour faire accĂ©der nos clients Ă  Internet via l'ASA (en utilisant tunnelall options) en utilisant PAT, et sortir Ă©galement par la mĂȘme interface OUTSIDE, depuis laquelle ils se connectent, il est nĂ©cessaire de rĂ©aliser les configurations suivantes.

    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
    !

    • Il est extrĂȘmement important, lors de l'utilisation d'un cluster, de permettre au rĂ©seau interne de comprendre vers quel ASA router le trafic retour des utilisateurs. Pour cela, il est nĂ©cessaire de rĂ©aliser la redistribution des routes des adresses /32 attribuĂ©es aux clients.
      À ce jour, nous n'avons pas encore configurĂ© le cluster, mais nous avons dĂ©jĂ  des passerelles VPN fonctionnelles auxquelles on peut se connecter individuellement par FQDN ou IP.

    Déploiement d'un cluster ASA VPN Load-Balancing

    Nous voyons le client connecté dans la table de routage du premier ASA :

    Déploiement d'un cluster ASA VPN Load-Balancing

    Pour que tout notre cluster VPN et l'ensemble du réseau d'entreprise connaissent le chemin vers notre client, nous allons procéder à la redistribution du préfixe client dans le 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 un chemin vers le client depuis la seconde passerelle ASA-2, et les utilisateurs connectés à différentes passerelles VPN au sein du cluster peuvent, par exemple, communiquer directement via le logiciel de téléphonie de l'entreprise, tout comme le trafic retour des ressources demandées par l'utilisateur arrivera sur la passerelle VPN appropriée :

    Déploiement d'un cluster ASA VPN Load-Balancing

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

    L'adresse 192.168.31.40 sera utilisĂ©e comme IP Virtuelle (VIP — tous les clients VPN se connecteront initialement Ă  celle-ci), Ă  partir de cette adresse, le MaĂźtre du cluster fera une REDIRECTION vers un nƓud du cluster moins chargĂ©. N'oubliez pas d'indiquer l'enregistrement DNS direct et inverse pour chaque adresse externe/FQDN de chaque nƓud du cluster, ainsi que pour le 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)#

    • Nous vĂ©rifions le fonctionnement du cluster avec deux clients connectĂ©s :

    Déploiement d'un cluster ASA VPN Load-Balancing

    • AmĂ©liorons l'expĂ©rience utilisateur avec un profil AnyConnect chargĂ© automatiquement via ASDM.

    Déploiement d'un cluster ASA VPN Load-Balancing

    Nommons le profil de maniĂšre pratique et associons notre politique de groupe Ă  celui-ci :

    Déploiement d'un cluster ASA VPN Load-Balancing

    AprÚs la prochaine connexion du client, ce profil sera téléchargé et installé automatiquement dans le client AnyConnect, il suffira alors de le sélectionner dans la liste si nécessaire :

    Déploiement d'un cluster ASA VPN Load-Balancing

    Comme nous avons créé ce profil uniquement sur une ASA à l'aide d'ASDM, n'oubliez pas de répéter les étapes sur les autres ASA du cluster.

Conclusion : Ainsi, nous avons rapidement dĂ©ployĂ© un cluster de plusieurs passerelles VPN avec Ă©quilibrage de charge automatique. Ajouter de nouveaux nƓuds au cluster est facile, en obtenant un simple redimensionnement horizontal en dĂ©ployant de nouvelles machines virtuelles ASAv ou en utilisant des ASA matĂ©riels. Le client polyvalent AnyConnect peut considĂ©rablement Ă©tendre les capacitĂ©s de connexion sĂ©curisĂ©e Ă  distance grĂące Ă  la fonction Posture (Ă©valuation de l'Ă©tat), qui est le plus efficace lorsqu'elle est utilisĂ©e conjointement avec le systĂšme de contrĂŽle centralisĂ© et de suivi des accĂšs Identity Services Engine.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster