Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Informations générales

Diagramme du réseau

Configurer

Authentification et autorisation des utilisateurs avec la base de données locale

Désactivez la fonction de téléchargement AnyConnect (facultatif).

Remise du profil XML AnyConnect

Flux de communication

Échange IKEv2 et EAP

Vérifier

Dépannage

Introduction

Ce document décrit comment configurer une tête de réseau Cisco IOS®/ XE pour l'accès via l'authentification AnyConnect IKEv2 / EAP avec la base de données locale des utilisateurs.

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- Protocole IKEv2

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

- Routeur de services cloud Cisco exécutant Cisco IOS® XE 16.9.2

- Client AnyConnect version 4.6.03049 sous Windows 10

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.

Informations générales

AnyConnect-EAP, également connu sous le nom d'authentification globale, permet à un serveur Flex d'authentifier le client AnyConnect via la méthode propriétaire AnyConnect-EAP de Cisco.

Contrairement aux méthodes EAP (Extensible Authentication Protocol) basées sur la norme, telles que EAP-GTC (Generic Token Card), EAP-MD5 (Message Digest 5), etc., le serveur Flex Server ne fonctionne pas en mode d'intercommunication EAP.

Toutes les communications EAP avec le client se terminent sur le serveur Flex et la clé de session requise utilisée pour construire la charge utile AUTH est calculée localement par le serveur Flex.

Le serveur Flex Server doit s'authentifier auprès du client à l'aide des certificats requis par la RFC IKEv2.

L'authentification des utilisateurs locaux est désormais prise en charge sur le serveur Flex Server et l'authentification à distance est facultative.

Cette solution est idéale pour les déploiements à petite échelle avec moins d'utilisateurs d'accès à distance et dans les environnements sans accès à un serveur AAA (Authentication, Authorization, and Accounting) externe.

Cependant, pour les déploiements à grande échelle et dans les scénarios où les attributs par utilisateur sont souhaités, il est toujours recommandé d'utiliser un serveur AAA externe pour l'authentification et l'autorisation.

L'implémentation AnyConnect-EAP permet l'utilisation de Radius pour l'authentification, l'autorisation et la comptabilité à distance.

Diagramme du réseau

Configurer

Authentification et autorisation des utilisateurs avec la base de données locale

Remarque : pour authentifier les utilisateurs par rapport à la base de données locale sur le routeur, EAP doit être utilisé. Cependant, pour utiliser EAP, la méthode d'authentification locale doit être rsa-sig, de sorte que le routeur a besoin d'un certificat approprié installé dessus, et il ne peut pas s'agir d'un certificat auto-signé.

Exemple de configuration qui utilise l'authentification des utilisateurs locaux, l'autorisation des utilisateurs et des groupes distants et la comptabilité à distance.

Étape 1. Activez AAA, configurez les listes d'authentification, d'autorisation et de gestion des comptes et ajoutez un nom d'utilisateur à la base de données locale :

aaa new-model

!

aaa authentication login a-eap-authen-local local

aaa authorization network a-eap-author-grp local

!

username test password cisco123

Étape 2. Configurez un point de confiance destiné à contenir le certificat du routeur. L'importation de fichiers PKCS12 est utilisée dans cet exemple. Pour connaître les autres options, consultez le guide de configuration PKI (Public Key Infrastructure) :

https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/sec_conn_pki/configuration/xe-3s/sec-pki-xe-3s-book/sec-cert-enroll-pki.html

Router(config)# crypto pki import IKEv2-TP pkcs12 bootflash:IKEv2-TP.p12 password cisco123

Étape 3. Définissez un pool local IP pour attribuer des adresses aux clients VPN AnyConnect :

ip local pool ACPOOL 192.168.10.5 192.168.10.10

Étape 4. Créez une stratégie d'autorisation locale IKEv2 :

crypto ikev2 authorization policy ikev2-auth-policy

pool ACPOOL

dns 10.0.1.1

Étape 5 (facultatif). Créez la proposition et la stratégie IKEv2 souhaitées. S'ils ne sont pas configurés, les paramètres Smart par défaut sont utilisés :

crypto ikev2 proposal IKEv2-prop1

encryption aes-cbc-256

integrity sha256

group 14

!

crypto ikev2 policy IKEv2-pol

proposal IKEv2-prop1

Étape 6. Créer un profil AnyConnect

Remarque : le profil AnyConnect doit être fourni à l'ordinateur client. Pour plus d'informations, reportez-vous à la section suivante.

Configurez le profil client à l’aide de l’Éditeur de profil AnyConnect, comme illustré dans l’image :

Cliquez sur Ajouter pour créer une entrée pour la passerelle VPN. Assurez-vous de sélectionner « IPsec » comme « Primary Protocol ». Décochez l'option « Passerelle ASA ».

Enregistrez le profil : File -> Save As. L'équivalent XML du profil :

<?xml version="1.0" encoding="UTF-8"?>

<AnyConnectProfile xmlns="http://schemas.xmlsoap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap/encoding/ AnyConnectProfile.xsd">

<ClientInitialization>

<UseStartBeforeLogon UserControllable="true">false</UseStartBeforeLogon>

<AutomaticCertSelection UserControllable="true">false</AutomaticCertSelection>

<ShowPreConnectMessage>false</ShowPreConnectMessage>

<CertificateStore>All</CertificateStore>

<CertificateStoreMac>All</CertificateStoreMac>

<CertificateStoreOverride>false</CertificateStoreOverride>

<ProxySettings>Native</ProxySettings>

<AllowLocalProxyConnections>true</AllowLocalProxyConnections>

<AuthenticationTimeout>12</AuthenticationTimeout>

<AutoConnectOnStart UserControllable="true">false</AutoConnectOnStart>

<MinimizeOnConnect UserControllable="true">true</MinimizeOnConnect>

<LocalLanAccess UserControllable="true">false</LocalLanAccess>

<DisableCaptivePortalDetection UserControllable="true">false</DisableCaptivePortalDetection>

<ClearSmartcardPin UserControllable="true">true</ClearSmartcardPin>

<IPProtocolSupport>IPv4,IPv6</IPProtocolSupport>

<AutoReconnect UserControllable="false">true

<AutoReconnectBehavior UserControllable="false">ReconnectAfterResume</AutoReconnectBehavior>

</AutoReconnect>

<AutoUpdate UserControllable="false">true</AutoUpdate>

<RSASecurIDIntegration UserControllable="false">Automatic</RSASecurIDIntegration>

<WindowsLogonEnforcement>SingleLocalLogon</WindowsLogonEnforcement>

<WindowsVPNEstablishment>LocalUsersOnly</WindowsVPNEstablishment>

<AutomaticVPNPolicy>false</AutomaticVPNPolicy>

<PPPExclusion UserControllable="false">Disable

<PPPExclusionServerIP UserControllable="false"></PPPExclusionServerIP>

</PPPExclusion>

<EnableScripting UserControllable="false">false</EnableScripting>

<EnableAutomaticServerSelection UserControllable="false">false

<AutoServerSelectionImprovement>20</AutoServerSelectionImprovement>

<AutoServerSelectionSuspendTime>4</AutoServerSelectionSuspendTime>

</EnableAutomaticServerSelection>

<RetainVpnOnLogoff>false

</RetainVpnOnLogoff>

<AllowManualHostInput>true</AllowManualHostInput>

</ClientInitialization>

<ServerList>

<HostEntry>

<HostName>VPN IOS-XE</HostName>

<HostAddress>vpn.example.com</HostAddress>

<PrimaryProtocol>IPsec

<StandardAuthenticationOnly>true

<AuthMethodDuringIKENegotiation>EAP-AnyConnect</AuthMethodDuringIKENegotiation>

</StandardAuthenticationOnly>

</PrimaryProtocol>

</HostEntry>

</ServerList>

</AnyConnectProfile>

Remarque : AnyConnect utilise '*$AnyConnectClient$*' comme identité IKE par défaut de type key-id. Toutefois, cette identité peut être modifiée manuellement dans le profil AnyConnect pour correspondre aux besoins de déploiement.

Remarque : pour télécharger le profil XML sur le routeur, Cisco IOS® XE version 16.9.1 ou ultérieure est requis. Si une version plus ancienne du logiciel Cisco IOS® XE est utilisée, la fonctionnalité de téléchargement de profil doit être désactivée sur le client. Pour plus d'informations, reportez-vous à la section « Désactiver le téléchargeur AnyConnect ».

Téléchargez le profil XML créé dans la mémoire flash du routeur et définissez le profil :

crypto vpn anyconnect profile acvpn bootflash:/acvpn.xml

Remarque : le nom de fichier utilisé pour le profil XML AnyConnect est acvpn.xml.

Étape 7. Créez un profil IKEv2 pour la méthode AnyConnect-EAP d'authentification client.

crypto ikev2 profile AnyConnect-EAP

match identity remote key-id *$AnyConnectClient$*

authentication local rsa-sig

authentication remote anyconnect-eap aggregate

pki trustpoint IKEv2-TP

aaa authentication anyconnect-eap a-eap-authen-local

aaa authorization group anyconnect-eap list a-eap-author-grp ikev2-auth-policy

aaa authorization user anyconnect-eap cached

virtual-template 100

anyconnect profile acvpn

Remarque : la configuration de la méthode d'authentification distante avant la méthode d'authentification locale est acceptée par l'interface de ligne de commande. mais elle n'est pas prise en compte sur les versions qui n'ont pas le correctif pour la demande d'amélioration ID de bogue Cisco CSCvb29701, si la méthode d'authentification distante est eap. Pour ces versions, lorsque la configuration eap est utilisée comme méthode d'authentification distante, assurez-vous que la méthode d'authentification locale est configurée en tant que rsa-sig en premier. Ce problème ne se produit pas avec une autre méthode d'authentification à distance.

Remarque : sur les versions de code affectées par l'ID de bogue Cisco CSCvb24236 , une fois que l'authentification à distance est configurée avant l'authentification locale, la méthode d'authentification à distance ne peut plus être configurée sur ce périphérique. Effectuez une mise à niveau vers une version contenant le correctif pour ce code.

Étape 8. Désactivez la recherche de certificat basée sur HTTP-URL et le serveur HTTP sur le routeur :

no crypto ikev2 http-url cert

no ip http server

no ip http secure-server

Remarque : reportez-vous à ce document pour confirmer si votre matériel de routeur prend en charge les algorithmes de cryptage NGE (l'exemple précédent comporte des algorithmes NGE), sinon, l'installation de l'association de sécurité IPSec sur le matériel échoue à la dernière étape de la négociation.

Étape 9. Définir les algorithmes de chiffrement et de hachage utilisés pour protéger les données

crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac

mode tunnel

Étape 10. Créer un profil IPSec :

crypto ipsec profile AnyConnect-EAP

set transform-set TS

set ikev2-profile AnyConnect-EAP

Étape 11. Configurez une interface de bouclage avec une adresse IP factice. Les interfaces d'accès virtuel lui empruntent l'adresse IP.

interface loopback100

ip address 10.0.0.1 255.255.255.255

Étape 12. Configurer un modèle virtuel (associer le modèle dans le profil IKEv2)

interface Virtual-Template100 type tunnel

ip unnumbered Loopback100

ip mtu 1400

tunnel mode ipsec ipv4

tunnel protection ipsec profile AnyConnect-EAP

Étape 13 (facultatif). Par défaut, tout le trafic provenant du client est envoyé via le tunnel. Vous pouvez configurer le split tunnel, qui permet uniquement au trafic sélectionné de traverser le tunnel.

ip access-list standard split_tunnel

permit 10.0.0.0 0.255.255.255

!

crypto ikev2 authorization policy ikev2-auth-policy

route set access-list split_tunnel

Étape 14 (facultatif). Si tout le trafic doit passer par le tunnel, configurez NAT afin d'autoriser la connectivité Internet pour les clients distants.

ip access-list extended NAT

permit ip 192.168.10.0 0.0.0.255 any

!

ip nat inside source list NAT interface GigabitEthernet1 overload

!

interface GigabitEthernet1

ip nat outside

!

interface Virtual-Template 100

ip nat inside

Désactivez la fonction de téléchargement AnyConnect (facultatif).

Cette étape n'est nécessaire que si la version du logiciel Cisco IOS® XE antérieure à 16.9.1 est utilisée. Avant Cisco IOS® XE 16.9.1, la capacité de télécharger le profil XML vers le routeur n'était pas disponible. Par défaut, le client AnyConnect tente d'effectuer le téléchargement du profil XML après une connexion réussie. Si le profil n'est pas disponible, la connexion échoue. Pour contourner ce problème, il est possible de désactiver la fonctionnalité de téléchargement de profil AnyConnect sur le client lui-même. Pour ce faire, ce fichier peut être modifié :

For Windows:

C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\AnyConnectLocalPolicy.xml

For MAC OS:

/opt/cisco/anyconnect/AnyConnectLocalPolicy.xml

L'option "BypassDownloader" est définie sur "true", par exemple :

<?xml version="1.0" encoding="UTF-8"?>

<AnyConnectLocalPolicy xmlns="http://schemas.xmlsoap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap/encoding/ AnyConnectLocalPolicy.xsd" acversion="4.6.03049">

<BypassDownloader>true</BypassDownloader>

<EnableCRLCheck>false</EnableCRLCheck>

<ExcludeFirefoxNSSCertStore>false</ExcludeFirefoxNSSCertStore>

<ExcludeMacNativeCertStore>false</ExcludeMacNativeCertStore>

<ExcludePemFileCertStore>false</ExcludePemFileCertStore>

<ExcludeWinNativeCertStore>false</ExcludeWinNativeCertStore>

<FipsMode>false</FipsMode>

<RestrictPreferenceCaching>false</RestrictPreferenceCaching>

<RestrictTunnelProtocols>false</RestrictTunnelProtocols>

<RestrictWebLaunch>false</RestrictWebLaunch>

<StrictCertificateTrust>false</StrictCertificateTrust>

<UpdatePolicy>

<AllowComplianceModuleUpdatesFromAnyServer>true</AllowComplianceModuleUpdatesFromAnyServer>

<AllowISEProfileUpdatesFromAnyServer>true</AllowISEProfileUpdatesFromAnyServer>

<AllowServiceProfileUpdatesFromAnyServer>true</AllowServiceProfileUpdatesFromAnyServer>

<AllowSoftwareUpdatesFromAnyServer>true</AllowSoftwareUpdatesFromAnyServer>

<AllowVPNProfileUpdatesFromAnyServer>true</AllowVPNProfileUpdatesFromAnyServer></UpdatePolicy>

</AnyConnectLocalPolicy>

Après la modification, le client AnyConnect doit être redémarré.

Remise du profil XML AnyConnect

Avec la nouvelle installation d'AnyConnect (sans ajout de profils XML), l'utilisateur peut entrer manuellement le nom de domaine complet de la passerelle VPN dans la barre d'adresse du client AnyConnect. Il en résulte une connexion SSL à la passerelle. Par défaut, le client AnyConnect ne tente pas d’établir le tunnel VPN avec les protocoles IKEv2/IPsec. C'est la raison pour laquelle le profil XML est installé sur le client et est obligatoire pour établir le tunnel IKEv2/IPsec avec la passerelle VPN Cisco IOS® XE.

Le profil est utilisé lorsqu’il est sélectionné dans la liste déroulante de la barre d’adresses AnyConnect.

Le nom qui apparaît est le même que celui spécifié dans « Nom d'affichage » dans l'éditeur de profil AnyConnect.

Le profil XML peut être placé manuellement dans ce répertoire :

For Windows:

C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile

For MAC OS:

/opt/cisco/anyconnect/profile

Le client AnyConnect doit être redémarré pour que le profil soit visible dans l’interface utilisateur graphique. Il ne suffit pas de fermer la fenêtre AnyConnect. Vous pouvez redémarrer le processus en cliquant avec le bouton droit sur l'icône AnyConnect dans la barre d'état système de Windows et en sélectionnant l'option « Quitter » :

Flux de communication

Échange IKEv2 et EAP

Vérifier

Utilisez cette section pour confirmer que votre configuration fonctionne correctement.

! Check IKEv2 SA parameters

Router# show crypto ikev2 sa detailed

IPv4 Crypto IKEv2  SA

Tunnel-id Local                 Remote                fvrf/ivrf            Status

1         192.0.2.1/4500     192.0.2.100/50899    none/none            READY

Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:14, Auth sign: RSA, Auth verify: AnyConnect-EAP

Life/Active Time: 86400/758 sec

CE id: 1004, Session-id: 4

Status Description: Negotiation done

Local spi: 413112E83D493428       Remote spi: 696FA78292A21EA5

Local id: 192.0.2.1

Remote id: *$AnyConnectClient$*

Remote EAP id: test        <------ username

Local req msg id:  0              Remote req msg id:  31

Local next msg id: 0              Remote next msg id: 31

Local req queued:  0              Remote req queued:  31

Local window:      5              Remote window:      1

DPD configured for 0 seconds, retry 0

Fragmentation not  configured.

Dynamic Route Update: disabled

Extended Authentication not configured.

NAT-T is detected  outside

Cisco Trust Security SGT is disabled

Assigned host addr: 192.168.10.8.  <---- Assigned IP

Initiator of SA : No

! Check the crypto session information

Router# show crypto session detail

Crypto session current status

Code: C - IKE Configuration mode, D - Dead Peer Detection

K - Keepalives, N - NAT-traversal, T - cTCP encapsulation

X - IKE Extended Authentication, F - IKE Fragmentation

R - IKE Auto Reconnect, U - IKE Dynamic Route Update

S - SIP VPN

Interface: Virtual-Access1. <----- Virtual interface associated with the client

Profile: AnyConnect-EAP

Uptime: 00:14:54

Session status: UP-ACTIVE

Peer: 192.0.2.100 port 50899 fvrf: (none) ivrf: (none). <----- Public IP of the remote client

Phase1_id: *$AnyConnectClient$*

Desc: (none)

Session ID: 8

IKEv2 SA: local 192.0.2.1/4500 remote 192.0.2.100/50899 Active

Capabilities:N connid:1 lifetime:23:45:06

IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 host 192.168.10.8

Active SAs: 2, origin: crypto map

Inbound:  #pkts dec'ed 89 drop 0 life (KB/Sec) 4607990/2705. <------ Packets received from the client

Outbound: #pkts enc'ed 2 drop 0 life (KB/Sec) 4607999/2705. <------ Packets sent to the client

! Check the actual configuration applied for the Virtual-Acces interface associated with client

Router# show derived-config interface virtual-access 1.

Building configuration...

Derived configuration : 258 bytes

!

interface Virtual-Access1

ip unnumbered Loopback100

ip mtu 1400

ip nat inside

tunnel source 192.0.2.1

tunnel mode ipsec ipv4

tunnel destination 192.0.2.100

tunnel protection ipsec profile AnyConnect-EAP

no tunnel protection ipsec initiate

end

Dépannage

Cette section fournit des informations que vous pouvez utiliser pour dépanner votre configuration.

1. Débogages IKEv2 à collecter à partir de la tête de réseau :

debug crypto ikev2

debug crypto ikev2 packet

debug crypto ikev2 error

2. Débogages AAA pour voir l'attribution des attributs locaux et/ou distants :

debug aaa authorization

debug aaa authentication

3. DART du client AnyConnect.