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

Poursuite de la série d'articles sur le thème de l'organisation VPN d'accès à distance accès Je ne peux m'empêcher de partager mon intéressante expérience de déploiement configuration VPN hautement sécurisée. Une tâche non triviale a été présentée par un client (il y a des inventeurs dans les villages russes), mais le défi a été accepté et mis en œuvre de manière créative. Le résultat est un concept intéressant avec les caractéristiques suivantes :

  1. Plusieurs facteurs de protection contre la substitution du terminal (avec engagement strict pour l'utilisateur) ;
    • Évaluer la conformité du PC de l'utilisateur avec l'UDID attribué au PC autorisé dans la base de données d'authentification ;
    • Avec MFA utilisant l'UDID du PC du certificat pour l'authentification secondaire via Cisco DUO (Vous pouvez en joindre n'importe quel compatible SAML/Radius);
  2. Authentification multifacteur :
    • Certificat utilisateur avec vérification du champ et authentification secondaire contre l'un d'eux ;
    • Login (inchangeable, extrait du certificat) et mot de passe ;
  3. Estimation de l'état de l'hôte connecté (Posture)

Composants de la solution utilisés :

  • Cisco ASA (passerelle VPN) ;
  • Cisco ISE (Authentification/Autorisation/Comptabilité, Évaluation d'état, CA) ;
  • Cisco DUO (authentification multifacteur) (Vous pouvez en joindre n'importe quel compatible SAML/Radius);
  • Cisco AnyConnect (Agent polyvalent pour postes de travail et OS mobiles) ;

Commençons par les exigences du client :

  1. L'utilisateur doit, grâce à son authentification Login/Mot de passe, pouvoir télécharger le client AnyConnect depuis la passerelle VPN ; tous les modules AnyConnect nécessaires doivent être installés automatiquement conformément à la politique de l'utilisateur ;
  2. L'utilisateur devrait pouvoir émettre automatiquement un certificat (pour l'un des scénarios, le scénario principal est l'émission manuelle et le téléchargement sur un PC), mais j'ai implémenté l'émission automatique à des fins de démonstration (il n'est jamais trop tard pour le supprimer).
  3. L'authentification de base doit s'effectuer en plusieurs étapes, il y a d'abord l'authentification par certificat avec analyse des champs nécessaires et leurs valeurs, puis login/mot de passe, seulement cette fois le nom d'utilisateur spécifié dans le champ du certificat doit être inséré dans la fenêtre de connexion Nom du sujet (CN) sans possibilité de modification.
  4. Vous devez vous assurer que l'appareil à partir duquel vous vous connectez est l'ordinateur portable d'entreprise fourni à l'utilisateur pour un accès à distance, et non autre chose. (Plusieurs options ont été proposées pour satisfaire à cette exigence)
  5. L'état du dispositif de connexion (à ce stade le PC) doit être évalué en vérifiant tout un tableau complet des exigences du client (résumant) :
    • Fichiers et leurs propriétés ;
    • Entrées de registre ;
    • Correctifs de système d'exploitation de la liste fournie (intégration SCCM ultérieure) ;
    • Disponibilité d'un antivirus d'un fabricant spécifique et pertinence des signatures ;
    • Activité de certains services ;
    • Disponibilité de certains programmes installés ;

Pour commencer, je vous suggère de regarder définitivement la démonstration vidéo de l'implémentation résultante sur Youtube (5 minutes).

Je propose maintenant d'examiner les détails de mise en œuvre non abordés dans le clip vidéo.

Préparons le profil AnyConnect :

J'ai déjà donné un exemple de création de profil (en termes d'élément de menu dans ASDM) dans mon article sur la configuration Cluster d'équilibrage de charge VPN. Je voudrais maintenant noter séparément les options dont nous aurons besoin :

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

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

Configurons l'émission automatique d'un certificat côté profil, en indiquant notamment les paramètres du certificat et, de manière caractéristique, faisons attention au champ Initiales (I), où une valeur spécifique est saisie manuellement C'EST TOI QUI L'AS FAIT machine de test (identifiant de périphérique unique généré par le client Cisco AnyConnect).

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

Ici, je souhaite faire une parenthèse lyrique, puisque cet article décrit le concept : à des fins de démonstration, l'UDID pour la délivrance d'un certificat est saisi dans le champ Initiales du profil AnyConnect. Bien sûr, dans la vraie vie, si vous faites cela, alors tous les clients recevront un certificat avec le même UDID dans ce domaine et rien ne fonctionnera pour eux, puisqu'ils ont besoin de l'UDID de leur PC spécifique. AnyConnect, malheureusement, n'implémente pas encore la substitution du champ UDID dans le profil de demande de certificat via une variable d'environnement, comme il le fait par exemple avec une variable %UTILISATEUR%.

Il convient de noter que le client (de ce scénario) envisage initialement de délivrer indépendamment des certificats avec un UDID donné en mode manuel à de tels PC protégés, ce qui ne lui pose pas de problème. Cependant, pour la plupart d’entre nous, nous voulons de l’automatisation (enfin, pour moi c’est vrai =)).

Et c’est ce que je peux proposer en termes d’automatisation. Si AnyConnect n'est pas encore en mesure d'émettre automatiquement un certificat en remplaçant dynamiquement l'UDID, il existe un autre moyen qui nécessitera un peu de réflexion créative et des mains habiles - je vais vous expliquer le concept. Tout d'abord, regardons comment l'UDID est généré 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 — Plateforme de hachage SHA-256UUID
  • Linux/Unix — Hachage SHA-256 de l'UUID de la partition racine.
  • apple iOS — Plateforme de hachage SHA-256UUID
  • Android – Voir document sur lien

En conséquence, nous créons un script pour notre système d'exploitation Windows d'entreprise, avec ce script, nous calculons localement l'UDID à l'aide d'entrées connues et formons une demande de délivrance d'un certificat en entrant cet UDID dans le champ requis, en passant, vous pouvez également utiliser une machine certificat délivré par AD (en ajoutant une double authentification par certificat au schéma Certificat multiple).

Préparons les paramètres côté Cisco ASA :

Créons un TrustPoint pour le serveur ISE CA, ce sera celui qui délivrera les certificats aux clients. Je ne considérerai pas la procédure d'importation de Key-Chain ; un exemple est décrit dans mon article sur la configuration Cluster d'équilibrage de charge VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Nous configurons la distribution par Tunnel-Group en fonction de règles conformément aux champs du certificat utilisé pour l'authentification. Le profil AnyConnect que nous avons créé à l'étape précédente est également configuré ici. Veuillez noter que j'utilise la valeur SECUREBANK-RA, pour transférer les utilisateurs disposant d'un certificat délivré vers un groupe de tunnels BANQUE-SÉCURISÉE-VPN, veuillez noter que j'ai ce champ dans la colonne de demande de certificat de 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
!

Mise en place de serveurs d'authentification. Dans mon cas, il s'agit d'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 *****
!
! DUO RADIUS PROXY
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
!

Nous créons des politiques de groupe et des groupes de tunnels et leurs composants auxiliaires :

Groupe de tunnels Groupe WEBVPN par défaut sera utilisé principalement pour télécharger le client VPN AnyConnect et émettre un certificat utilisateur en utilisant la fonction SCEP-Proxy de l'ASA ; pour cela, nous avons les options correspondantes activées à la fois sur le groupe de tunnels lui-même et sur la politique de groupe associée AC-Téléchargement, et sur le profil AnyConnect chargé (champs d'émission d'un certificat, etc.). Également dans cette politique de groupe, nous indiquons la nécessité de télécharger Module de posture ISE.

Groupe de tunnels BANQUE-SÉCURISÉE-VPN sera automatiquement utilisé par le client lors de l'authentification avec le certificat émis à l'étape précédente, car, conformément à la carte du certificat, la connexion tombera spécifiquement sur ce groupe de tunnels. Je vais vous parler d'options intéressantes ici :

  • groupe de serveurs d'authentification secondaire DUO # Définir l'authentification secondaire sur le serveur DUO (Radius Proxy)
  • nom d'utilisateur à partir du certificatCN # Pour l'authentification primaire, nous utilisons le champ CN du certificat pour hériter du login de l'utilisateur
  • nom d'utilisateur secondaire à partir du certificat I # Pour l'authentification secondaire sur le serveur DUO, nous utilisons le nom d'utilisateur extrait et les champs Initiales (I) du certificat.
  • client de pré-remplissage du nom d'utilisateur # rendre le nom d'utilisateur pré-rempli dans la fenêtre d'authentification sans possibilité de le modifier
  • client secondaire-pré-remplissage-nom d'utilisateur masquer utilisation-commun-mot de passe push # Nous masquons la fenêtre de saisie du login/mot de passe pour l'authentification secondaire DUO et utilisons la méthode de notification (sms/push/téléphone) - dock pour demander l'authentification au lieu du champ du mot de passe ici

!
access-list posture-redirect extended permit tcp any host 72.163.1.80 
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 accounting-server-group ISE
 default-group-policy AC-DOWNLOAD
 scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
 authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 secondary-authentication-server-group DUO
 accounting-server-group ISE
 default-group-policy SECURE-BANK-VPN
 username-from-certificate CN
 secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
 authentication aaa certificate
 pre-fill-username client
 secondary-pre-fill-username client hide use-common-password push
 group-alias SECURE-BANK-VPN enable
 dns-group ASHES-DNS
!

Passons ensuite à ISE :

Nous configurons un utilisateur local (vous pouvez utiliser AD/LDAP/ODBC, etc.), pour plus de simplicité, j'ai créé un utilisateur local dans ISE lui-même et je l'ai attribué sur le terrain la description IDID PC à partir duquel il est autorisé à se connecter via VPN. Si j'utilise l'authentification locale sur ISE, je serai limité à un seul appareil, car il n'y a pas beaucoup de champs, mais dans les bases de données d'authentification tierces, je n'aurai pas de telles restrictions.

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

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

  • Étape 1 — Politique de téléchargement de l'agent AnyConnect et d'émission d'un certificat
  • Étape 2 — Politique d'authentification primaire Connexion (à partir du certificat)/Mot de passe + Certificat avec validation UDID
  • Étape 3 — Authentification secondaire via Cisco DUO (MFA) utilisant l'UDID comme nom d'utilisateur + évaluation de l'état
  • Étape 4 — L'autorisation définitive est en l'état :
    • Conforme ;
    • Validation UDID (à partir du certificat + liaison de connexion),
    • Cisco DUO MFA ;
    • Authentification par login ;
    • Authentification du certificat ;

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

Regardons une condition intéressante UUID_VALIDATED, il semble simplement que l'utilisateur authentifiant provienne en réalité d'un PC avec un UDID autorisé associé dans le champ Description compte, les conditions ressemblent à ceci :

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

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

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

Vous pouvez vérifier exactement comment l'UDID du client AnyConnect nous parvient en consultant les détails de la session client dans ISE. En détail nous verrons qu'AnyConnect à travers le mécanisme ACIDEX envoie non seulement des informations sur la plateforme, mais également l'UDID de l'appareil comme Cisco-AV-PAIR:

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

Faisons attention au certificat délivré à l'utilisateur et au terrain Initiales (I), qui est utilisé comme identifiant pour l'authentification MFA secondaire sur Cisco DUO :

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

Du côté DUO Radius Proxy dans le journal, nous pouvons voir clairement comment la demande d'authentification est effectuée, elle utilise l'UDID comme nom d'utilisateur :

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

Depuis le portail DUO, nous voyons un événement d'authentification réussi :

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

Et dans les propriétés utilisateur, je l'ai défini ALIAS, que j'ai utilisé pour la connexion, à son tour, il s'agit de l'UDID du PC autorisé pour la connexion :

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

En conséquence, nous avons obtenu :

  • Authentification multifacteur des utilisateurs et des appareils ;
  • Protection contre l'usurpation d'identité de l'appareil de l'utilisateur ;
  • Évaluer l'état de l'appareil ;
  • Potentiel de contrôle accru avec certificat de machine de domaine, etc. ;
  • Protection complète du lieu de travail à distance avec des modules de sécurité déployés automatiquement ;

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

Source: habr.com

Ajouter un commentaire