Mise en œuvre du concept d'accès distant hautement sécurisé

En poursuivant la série d'articles sur l'organisation VPN d'accès à distance de l'accès, je ne peux m'empêcher de partager une expérience intéressante de déploiement d'une configuration VPN hautement sécurisée. Une tâche peu triviale m'a été confiée par un client (il y a des inventeurs dans les villages russes), mais défi accepté et réalisé de manière créative. Le résultat est un concept intéressant avec les caractéristiques suivantes :

  1. Plusieurs facteurs de protection contre le spoofing de l'appareil final (fortement lié à l'utilisateur);
    • Évaluation de la conformité du PC de l'utilisateur avec le UDID du PC autorisé dans la base d'authentification;
    • Avec MFA, utilisant le UDID du PC du certificat pour une authentification secondaire via Cisco DUO (Il est possible de connecter tout système compatible SAML/RADIUS);
  2. Authentification multifactorielle :
    • Certificat de l'utilisateur avec vérification des champs et authentification secondaire par l'un d'entre eux;
    • Identifiant (non modifiable, extrait du certificat) et mot de passe;
  3. Évaluation de l'état de l'hôte se connectant (Posture)

Composants utilisés dans la solution :

  • Cisco ASA (Passerelle VPN);
  • Cisco ISE (Authentification / Autorisation / Comptabilité, Évaluation de l'État, CA);
  • Cisco DUO (Authentification multifactorielle) (Il est possible de connecter tout système compatible SAML/RADIUS);
  • Cisco AnyConnect (Agent multi-usage pour stations de travail et systèmes d'exploitation mobiles);

Commençons par les exigences du client :

  1. L'utilisateur doit pouvoir télécharger le client AnyConnect depuis la passerelle VPN à l'aide de son authentification Identifiant/Mot de passe, tous les modules nécessaires d'AnyConnect doivent être installés automatiquement selon la politique de l'utilisateur;
  2. L'utilisateur doit avoir la capacité d'émettre un certificat automatiquement (pour l'un des scénarios, le scénario principal étant l'émission manuelle et le chargement sur le PC), j'ai mis en œuvre une émission automatique à des fins de démonstration (il n'est jamais trop tard pour le retirer).
  3. L'authentification principale doit se dérouler en plusieurs étapes, tout d'abord l'authentification du certificat avec analyse des champs nécessaires et de leurs valeurs, ensuite identifiant/mot de passe, mais cette fois, le nom d'utilisateur indiqué dans le champ du certificat doit être pré-rempli dans la fenêtre de connexion Nom du sujet (CN) sans possibilité de modification.
  4. Il est nécessaire de s'assurer que l'appareil à partir duquel la connexion est effectuée est l'ordinateur portable d'entreprise délivré à l'utilisateur pour l'accès à distance, et rien d'autre. (Plusieurs options ont été mises en place pour satisfaire cette exigence)
  5. Une évaluation de l'état de l'appareil connecté (à ce stade, un PC) doit être effectuée en vérifiant l'ensemble des exigences du client (en résumé) :
    • Fichiers et leurs propriétés ;
    • Clés du registre ;
    • Mises à jour du système d'exploitation à partir de la liste fournie (intégration ultérieure de SCCM) ;
    • Présence d'un antivirus d'un certain fournisseur et pertinence des signatures ;
    • Activité de certains services ;
    • Présence de certains programmes installés ;

Pour commencer, je propose de regarder par obligation la démonstration vidéo de la réalisation obtenue sur Youtube (5 minutes).

Lire la vidéo

Je vous propose maintenant de considérer les détails de la mise en œuvre non abordés dans la vidéo.

Préparons le profil AnyConnect :

Un exemple de création de profil (dans le menu ASDM) que j'ai déjà mentionné dans mon article sur la configuration du Cluster VPN Load-Balancing.Je veux maintenant souligner les options dont nous aurons besoin :

Dans le profil, nous indiquerons la passerelle VPN et le nom du profil pour la connexion sur le client final :

Mise en œuvre du concept d'accès distant hautement sécurisé

Nous allons configurer l'automatisation de la délivrance du certificat du côté du profil, en spécifiant, en particulier, les paramètres du certificat et, ce qui est significatif, nous porterons attention au champ Initials (I), où une valeur spécifique est saisie manuellement UDID de la machine de test (Identifiant unique de l'appareil, généré par le client Cisco AnyConnect).

Mise en œuvre du concept d'accès distant hautement sécurisé

Ici, je souhaite faire une parenthèse lyrique, car cet article décrit un concept, pour des raisons démonstratives, ici le UDID est saisi pour la délivrance du certificat dans le champ Initials du profil AnyConnect. Bien sûr, dans la vraie vie, si vous faites cela, tous les clients recevront un certificat avec le même UDID dans ce champ et rien ne fonctionnera pour eux, car ils ont besoin du UDID de leur propre PC. Malheureusement, AnyConnect ne gère pas encore la substitution dans le profil d'une requête de certificat pour le champ UDID via une variable d'environnement, comme il le fait par exemple avec la variable %USER%.

Il convient de noter que le client (de ce scénario) prévoit initialement de délivrer lui-même des certificats avec le UDID donné manuellement pour ces PC protégés, ce qui ne lui pose pas de problème. Cependant, pour la plupart d'entre nous, l'automatisation est souhaitée (en tout cas, pour moi, c'est certain =).

Voici ce que je peux proposer en matière d'automatisation. Si le certificat est délivré automatiquement, AnyConnect peut dynamiquement substituer le UDID. Cependant, il existe une autre méthode qui demandera un peu de créativité et de compétences – je vais expliquer le concept. Pour commencer, examinons comment le UDID est formé sur différents systèmes d'exploitation par l'agent AnyConnect :

  • Windows — hachage SHA-256 de la combinaison de la clé de registre DigitalProductID et Machine SID
  • OSX — hachage SHA-256 de PlatformUUID
  • Linux — hachage SHA-256 de l'UUID de la partition racine.
  • Apple iOS — hachage SHA-256 de PlatformUUID
  • Android – Voir le document sur le lien

Nous allons donc créer un script pour nos systèmes d'exploitation Windows d'entreprise, ce script calculera localement le UDID en fonction des paramètres connus et formera une demande de délivrance de certificat en insérant ce UDID dans le champ requis. Au fait, il est possible d'utiliser également le certificat machine délivré par AD (en ajoutant à la procédure une double authentification par certificat. Certificat multiple).

Préparons les configurations du côté de Cisco ASA :

Créons un TrustPoint pour le serveur ISE CA, qui délivrera les certificats aux clients. Je ne vais pas aborder la procédure d'importation de Key-Chain, un exemple est décrit dans mon article sur la configuration. du Cluster VPN Load-Balancing..

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Nous configurons la distribution par Tunnel-Group sur la base des règles correspondant aux champs dans le certificat utilisé pour l'authentification. Un profil AnyConnect, que nous avons créé à l'étape précédente, est également configuré ici. Je souligne que j'utilise la valeur SECUREBANK-RA, pour transférer les utilisateurs avec le certificat délivré dans le groupe de tunnel SECURE-BANK-VPN, notez que ce champ est renseigné dans la demande de certificat du profil AnyConnect.

tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
 subject-name attr ou eq securebank-ra
!
webvpn
 anyconnect profiles SECUREBANK disk0:\/securebank.xml
 certificate-group-map OU-Map 6 SECURE-BANK-VPN
!

Nous configurons les serveurs d'authentification. Dans mon cas, il s'agit de l'ISE pour la première étape d'authentification et de DUO (Radius Proxy) comme MFA.

! CISCO ISE
aaa-server ISE protocol radius
 authorize-only
 interim-accounting-update periodic 24
 dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
 key *****
!
! PROXY RADIUS DUO
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
 timeout 60
 key *****
 authentication-port 1812
 accounting-port 1813
 no mschapv2-capable
!

Créons des politiques de groupes et des groupes de tunnel ainsi que leurs composants auxiliaires :

Groupe de tunnel DefaultWEBVPNGroup sera principalement utilisée pour télécharger le client AnyConnect VPN et émettre un certificat utilisateur en utilisant la fonction SCEP-Proxy ASA, pour cela nous avons activé les options correspondantes à la fois dans le groupe de tunnel lui-même et dans la politique de groupe associée. AC-Téléchargement, ainsi que dans le profil AnyConnect téléchargé (champs d'émission de certificat, etc.). De plus, dans cette politique de groupe, nous précisons la nécessité de télécharger. Module de posture ISE.

Groupe de tunnel SECURE-BANK-VPN sera automatiquement utilisé par le client lors de l'authentification avec le certificat émis au cours de l'étape précédente, car conformément à la carte des certificats, la connexion sera effectuée sur ce groupe de tunnel. Je vais parler ici des options intéressantes :

  • groupe de serveurs d'authentification secondaire DUO # Задаем вторичную аутентификацию на сервере DUO (Radius Proxy)
  • nom d'utilisateur du certificat CN # Используем для первичной аутентификации поле CN сертификата для наследования логина пользователя
  • nom d'utilisateur secondaire du certificat I # Для вторичной аутентификации на сервере DUO используем имя пользователя, извлеченное и поля Initials (I) сертификата.
  • nom d'utilisateur pré-rempli client # делаем предзаполненным имя пользователя в окне аутентификации без возможности изменения
  • nom d'utilisateur secondaire pré-rempli client cacher utiliser mot de passe commun push # Прячем окно ввода логина/пароля для вторичной аутентификации DUO и используем для запроса аутентификации вместо поля пароля метод уведомления (sms/push/phone) – дока ici

!
access-list posture-redirect étendue permettre tcp any host 72.163.1.80 
access-list posture-redirect étendue interdire ip any any
!
access-list VPN-Filter étendue permettre ip any any
!
ip pool local vpn-pool 192.168.100.33-192.168.100.63 masque 255.255.255.224
!
politique de groupe SECURE-BANK-VPN interne
politique de groupe SECURE-BANK-VPN attributs
 serveur-dns valeur 192.168.99.155 192.168.99.130
 filtre-vpn valeur VPN-Filter
 protocole-de-tunnel-vpn ssl-client 
 politique-de-tunnel-splitté tunnelall
 domaine-par-défaut valeur ashes.cc
 pools-d'adresse valeur vpn-pool
 webvpn
  anyconnect ssl dtls activer
  anyconnect mtu 1300
  anyconnect garder-installateur installé
  anyconnect ssl maintenir en vie 20
  anyconnect ssl rekey temps aucun
  anyconnect ssl rekey méthode ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval passerelle 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules valeur iseposture
  anyconnect profils valeur SECUREBANK type utilisateur
!
politique de groupe AC-TÉLÉCHARGEMENT interne
politique de groupe AC-TÉLÉCHARGEMENT attributs
 serveur-dns valeur 192.168.99.155 192.168.99.130
 filtre-vpn valeur VPN-Filter
 protocole-de-tunnel-vpn ssl-client 
 politique-de-tunnel-splitté tunnelall
 domaine-par-défaut valeur ashes.cc
 pools-d'adresse valeur vpn-pool
 scep-forwarding-url valeur http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls activer
  anyconnect mtu 1300
  anyconnect garder-installateur installé
  anyconnect ssl maintenir en vie 20
  anyconnect ssl rekey temps aucun
  anyconnect ssl rekey méthode ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval passerelle 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules valeur iseposture
  anyconnect profils valeur SECUREBANK type utilisateur
!
groupe-tunnel DefaultWEBVPNGroup attributs-généraux
 pool-d'adresse vpn-pool
 groupe-serveur-d'authentification ISE
 groupe-serveur-de-comptabilité ISE
 politique-de-groupe-par-défaut AC-TÉLÉCHARGEMENT
 scep-enrollment activer
groupe-tunnel DefaultWEBVPNGroup attributs-webvpn
 authentification aaa certificat
!
groupe-tunnel SECURE-BANK-VPN type accès à distance
groupe-tunnel SECURE-BANK-VPN attributs-généraux
 pool-d'adresse vpn-pool
 groupe-serveur-d'authentification ISE
 groupe-serveur-d'authentification-secondaire DUO
 groupe-serveur-de-comptabilité ISE
 politique-de-groupe-par-défaut SECURE-BANK-VPN
 nom d'utilisateur du certificat CN
 nom d'utilisateur secondaire du certificat I
groupe-tunnel SECURE-BANK-VPN attributs-webvpn
 authentification aaa certificat
 nom d'utilisateur pré-rempli client
 nom d'utilisateur secondaire pré-rempli client cacher utiliser mot de passe commun push
 alias-groupe SECURE-BANK-VPN activer
 groupe-dns ASHES-DNS
!

Ensuite, passons à l'ISE :

Nous configurons un utilisateur local (il est possible d'utiliser également AD/LDAP/ODBC, etc.), pour simplifier, j'ai créé un utilisateur local directement dans l'ISE et assignez-le au champ description UDID de l'ordinateur à partir duquel il est autorisé à se connecter via VPN. En cas d'utilisation de l'authentification locale sur l'ISE, je serai limité à un seul appareil, puisque les champs sont peu nombreux, mais avec des bases d'authentification tiers, je n'aurai pas de telles restrictions.

Mise en œuvre du concept d'accès distant hautement sécurisé

Examinons la politique d'autorisation, qui est divisée en quatre étapes de connexion :

  • Étape 1 — Politique pour le téléchargement de l'agent AnyConnect et la délivrance du certificat
  • Étape 2 — Politique d'authentification primaire Login (du certificat)/Mot de passe + Certificat avec validation UDID
  • Étape 3 — Authentification secondaire via Cisco DUO (MFA) avec UDID comme nom d'utilisateur + Évaluation de l'état
  • Étape 4 — Autorisation finale dans l'état :
    • Conforme;
    • validation UDID (du certificat + association au login),
    • Cisco DUO MFA;
    • Authentification par login;
    • Authentification par certificat;

Mise en œuvre du concept d'accès distant hautement sécurisé

Examinons une condition intéressante UUID_VALIDATED, c'est justement ce qui vérifie que l'utilisateur qui s'authentifie provient réellement d'un ordinateur avec un UDID autorisé associé au champ Description du compte, les conditions sont les suivantes :

Mise en œuvre du concept d'accès distant hautement sécurisé

Le profil d'autorisation utilisé aux étapes 1, 2 et 3 est le suivant :

Mise en œuvre du concept d'accès distant hautement sécurisé

Vérifions comment nous recevons le UDID du client AnyConnect en consultant les détails de la session client dans l'ISE. Dans les détails, nous verrons que AnyConnect à travers le mécanisme ACIDEX envoie non seulement des données sur la plateforme, mais aussi le UDID de l'appareil comme Cisco-AV-PAIR:

Mise en œuvre du concept d'accès distant hautement sécurisé

Notons le certificat délivré à l'utilisateur et le champ Initials (I), qui est utilisé pour le prendre comme login pour l'authentification secondaire MFA sur Cisco DUO :

Mise en œuvre du concept d'accès distant hautement sécurisé

Du côté du proxy Radius DUO, nous voyons clairement comment la demande d'authentification est faite, en utilisant l'UDID comme nom d'utilisateur :

Mise en œuvre du concept d'accès distant hautement sécurisé

Du côté du portail DUO, nous avons un événement d'authentification réussi :

Mise en œuvre du concept d'accès distant hautement sécurisé

Et dans les propriétés de l'utilisateur, j'ai défini ALIAS, que j'ai utilisé pour le login, qui est aussi le UDID autorisé pour le login de l'ordinateur :

Mise en œuvre du concept d'accès distant hautement sécurisé

En conséquence, nous avons obtenu :

  • Une authentification multi-facteurs pour l'utilisateur et l'appareil ;
  • Protection contre le remplacement de l'appareil de l'utilisateur ;
  • Évaluation de l'état de l'appareil ;
  • Potentiel pour un contrôle renforcé avec un certificat machine de domaine, etc.
  • Protection complète de l'espace de travail à distance avec des modules de sécurité déployables automatiquement ;

Liens vers les articles de la série Cisco VPN :

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