Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Informations générales

Diagramme du réseau

Scénarios

Nombre maximal de sessions par utilisateur

Configuration

Exemple

Nombre maximal de sessions pour le groupe

Configurer

Exemple

Cas de coin

Nombre maximal de sessions pour l'utilisateur du groupe

Configurer

Exemple

Nombre maximal de sessions pour le groupe et Nombre maximal de sessions pour l'utilisateur de ce groupe

Configurer

Exemple

Délai du compteur

Configurer

Exemple

Fonctionnalité de session maximale et accès invité

Authentification Web centralisée

Authentification Web locale

Dépannage

Journaux actifs Radius

Débogages ISE

Introduction

Ce document décrit comment configurer la fonctionnalité Nombre maximal de sessions introduite dans Identity Services Engine (ISE) 2.2.

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- Protocole RADIUS

- Configuration 802.1x sur contrôleur LAN sans fil (WLC)

- ISE et ses personas (rôles)

Composants utilisés

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

- Cisco Identity Service Engine version 2.2

- Contrôleur LAN sans fil 8.0.10.0

- Commutateur Cisco Catalyst 3750 15.2(3)E2

- Ordinateur Windows 7

- Téléphone Android exécutant 6.0.1

- Téléphone Android 5.0

- Apple iPad iOS 9.1

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

La fonction Nombre maximal de sessions permet de contrôler et d'appliquer des sessions en direct par utilisateur ou par groupe d'identités. Ce document est destiné aux sessions RADIUS, mais il peut également être utilisé pour les sessions TACACS.

ISE version 2.2 peut détecter et créer une politique d'application basée sur la session simultanée de :

- Identité utilisateur : limite le nombre de sessions par utilisateur spécifique

- Groupe d'identités : limite le nombre de sessions par groupe spécifique

- Utilisateur d'un groupe : limite le nombre de sessions par utilisateur, appartenant à un groupe spécifique

L'application et le nombre d'une session simultanée sont uniques et gérés par chaque noeud de service de stratégie (PSN). Il n'y a pas de synchronisation entre les PSN en termes de nombre de sessions. La fonction Session simultanée est implémentée dans le processus d'exécution et les données sont stockées uniquement en mémoire. En cas de redémarrage PSN, les compteurs MaxSessions sont réinitialisés.

Le nombre de sessions utilisateur est insensible à la casse en ce qui concerne les noms d'utilisateur et indépendant du périphérique d'accès réseau utilisé (tant que vous utilisez le même noeud PSN).

Diagramme du réseau

Scénarios

Nombre maximal de sessions par utilisateur

Configuration

Accédez à Administration > System > Settings > Max Sessions comme indiqué dans l'image :

Pour activer la fonctionnalité, décochez la case Session illimitée par utilisateur, qui est cochée par défaut. Dans le champ Maximum per user Sessions, configurez le nombre de sessions que chaque utilisateur peut avoir sur chaque PSN. Dans cet exemple, il est défini sur 2.

Les utilisateurs des sources d'identité externes (par exemple, Active Directory) sont également affectés par cette configuration.

Exemple

Bob est le nom d'utilisateur d'un compte du domaine Active Directory qui est connecté et joint au serveur ISE. Le nombre maximal de sessions utilisateur est configuré avec la valeur 2, ce qui signifie qu'aucune session pour le même utilisateur au-delà de ce nombre n'est autorisée (par PSN).

Comme l'illustre l'image, l'utilisateur Bob se connecte à un téléphone Android et à une machine Windows avec les mêmes informations d'identification :

Les deux sessions sont autorisées car la limite maximale de sessions n'est pas dépassée. Voir le journal détaillé Radius Live, présenté dans l'image :

L'étape 22081 Max sessions policy pass fournit des informations indiquant que la vérification du nombre maximal de sessions simultanées a réussi.

Une fois la troisième connexion avec un autre périphérique et les mêmes informations d'identification établies, Bob reçoit PermitAccess, mais Access-Reject est envoyé à l'authentificateur :

La session n'est pas autorisée, même si dans le journal Radius en direct, vous pouvez voir qu'elle atteint le profil d'autorisation correct. Afin de vérifier les sessions en direct, naviguez à Operations > Radius > Live Sessions :

Dans ce cas, l'état des deux sessions est Démarré, ce qui indique que Accounting Start est arrivé sur ISE pour la session. Il est nécessaire de recevoir le compte Radius pour que la session maximale fonctionne correctement, l'état Authenticated (Session autorisée, mais pas de compte) n'est pas pris en compte lors du comptage de session :

Nombre maximal de sessions pour le groupe

Configurer

Accédez à Administration > System > Settings > Max Sessions > Group :

Cette configuration impose 2 sessions au maximum pour le groupe d'identité interne GroupTest2 : vous pouvez configurer l'application par groupe uniquement pour les groupes internes.

Exemple

Alice, Pablo et Peter sont les utilisateurs du magasin d'utilisateurs ISE interne. Tous sont membres du groupe GroupTest2. Selon la configuration de cet exemple, la valeur maximale des sessions est définie sur 2 en fonction de l'appartenance au groupe.

Pablo et Peter se connectent au réseau avec leurs informations d'identification du groupe interne GroupTest2 :

Une fois qu'Alice tente de se connecter, la limite MaxSessions par groupe est appliquée :

Alice n'est pas autorisée à se connecter au réseau car la limite de groupe de session maximale est utilisée par Peter et Pablo :

Cas de coin

Si le nombre maximal de sessions utilisateur est configuré, les deux fonctionnalités fonctionnent indépendamment. Dans cet exemple, le nombre maximal de sessions utilisateur est défini sur 1 et le nombre maximal de sessions pour le groupe sur 2.

Peter est autorisé en fonction de la session maximale pour le groupe (2 sessions), mais en raison de la configuration de sessions maximales de l'utilisateur (une session), il ne parvient pas à se connecter au réseau :

Si l'utilisateur est membre de plusieurs groupes à la fois et que le nombre maximal de sessions pour le groupe est configuré pour lui, une fois connecté, ISE augmente le compteur du cache Nombre maximal de sessions pour le groupe pour chaque groupe auquel l'utilisateur appartient.

Dans cet exemple, Alice et Pablo sont membres de GroupTest1 et de GroupTest2. Veronica appartient uniquement à GroupTest1 et Peter à GroupTest2

La session maximale du groupe est définie sur 2 pour GroupTest1 et GroupTest2 :

Lorsque Alice et Pablo sont connectées au réseau, elles dépassent les limites de session pour les deux groupes. Veronica, qui appartient uniquement à GroupTest1 et Peter, membres de GroupTest2, ne peuvent pas se connecter car la valeur maximale configurée de la session pour le groupe a été atteinte :

Nombre maximal de sessions pour l'utilisateur du groupe

Configurer

Accédez à Administration > System > Settings > Max Sessions > Group.

Cette configuration impose 2 sessions maximum pour le groupe d'identités interne GroupTest2.

Exemple

Alice est membre de GroupTest2 :

Cette fonction fonctionne de la même manière que la fonction Nombre maximal de sessions utilisateur - ISE limite le nombre de sessions simultanées que l'utilisateur peut avoir dans un groupe interne spécifié. Cette configuration affecte uniquement l'utilisateur, qui appartient au groupe configuré.

Alice, en tant que membre du GroupTest2, peut avoir 2 sessions simultanées. Une fois connecté au troisième périphérique, ISE retourne PermitAccess et Access-Reject en fonction du dépassement de la session maximale pour l'utilisateur du groupe :

Journaux Radius-Live détaillés :

Si l'option Nombre maximal de sessions utilisateur est également activée, les deux fonctionnalités fonctionnent indépendamment. Si un utilisateur Alice est membre du groupe GroupTest2 avec le nombre maximal de sessions pour l'utilisateur du groupe configuré pour 2, et en même temps que le nombre maximal de sessions utilisateur est configuré pour autoriser une seule session par utilisateur, le nombre maximal de sessions utilisateur est prioritaire :

Lorsqu'Alice tente de se connecter au deuxième périphérique, ISE renvoie la valeur Access-Reject en fonction de la limite maximale de session utilisateur dépassée :

La raison du refus peut être vérifiée sous le Live-Log détaillé de Radius. La limite maximale de sessions utilisateur est la raison de l'échec :

Nombre maximal de sessions pour le groupe et Nombre maximal de sessions pour l'utilisateur de ce groupe

Configurer

Accédez à Administration > System > Settings > Max Sessions > Group.

Cette configuration impose une session maximale de 3 dans le groupe d'identité interne GroupTest2 et de 2 sessions maximales pour l'utilisateur de ce groupe.

Exemple

Alice et Pablo sont membres de GroupTest2. Selon la configuration de cet exemple, un maximum de 3 sessions est autorisé dans GroupTest2. ISE garantit qu'un utilisateur unique peut avoir au maximum 2 sessions dans ce groupe.

Alice se connecte via deux périphériques. Les deux terminaux sont connectés au réseau :

Lorsque Alice tente de se connecter via un troisième périphérique, l'accès est refusé avec la limite de session maximale pour l'utilisateur du groupe dépassée :

Si Pablo tente d'accéder au réseau, il peut le faire car la session max. du groupe GroupTest2 n'est pas encore complète :

Lorsque Pablo tente d'accéder au réseau à partir du deuxième périphérique, il échoue car il a dépassé la limite de session maximale pour le groupe (même s'il n'a qu'une seule session) :

Comme dans les exemples précédents, si vous activez Nombre maximal de sessions utilisateur, cela fonctionne indépendamment.

Délai du compteur

Configurer

Accédez à Administration > System > Settings > Max Sessions > Counter Time Limit.

Counter Time limit est la fonctionnalité qui spécifie l'intervalle de temps pendant lequel la session est comptée en termes de cache de session maximale. Cette fonctionnalité vous permet de spécifier l'heure après laquelle PSN supprime la session du compteur et autorise de nouvelles sessions.

Pour activer la fonctionnalité, vous devez décocher Unlimited - no time limit case qui est cochée par défaut. Dans le champ modifiable, vous pouvez définir l'heure de prise en compte de la session dans les compteurs de MaxSession.

Gardez à l'esprit que les sessions après l'heure configurée ne sont pas déconnectées ou supprimées de la base de données de session. Il n'y a pas de fin de chaîne d'autorisation après l'heure configurée.

Exemple

User Max Session est défini pour autoriser une seule session pour l'utilisateur :

Alice se connecte au réseau à l'aide de l'IPad à 11:00:34, la deuxième authentification a lieu à 11:07 et même si la valeur User Maximum Session est dépassée, l'accès est autorisé. Les deux authentifications ont réussi en raison de la limite de temps du compteur.

Alice tente de se connecter à un autre périphérique dans les 5 minutes suivant la dernière connexion réussie, ISE refuse l'authentification :

Après 5 minutes à partir de la dernière authentification, Alice a pu se connecter au réseau avec un périphérique supplémentaire.

Sur les sessions en direct, vous pouvez voir les trois sessions dans l'état Démarré :

Fonctionnalité de session maximale et accès invité

Authentification Web centralisée

Avec une session configurée sous la fonction Session maximale utilisateur, vous pouvez toujours vous connecter au compte Guest1 pour les deux sessions :

Afin de limiter l'accès invité, vous pouvez spécifier le nombre maximal de connexions simultanées dans la configuration Type d'invité.

Accédez à Work Centers > Guest Access > Portal & Components > Guest Types et modifiez l'option Maximum simultanées logins, comme indiqué dans l'image :

Authentification Web locale

Avec une session configurée sous User Maximum Session, vous ne pouvez pas vous connecter :

Selon les journaux Radius Live-logs, l'invité 1 est toujours correctement authentifié en termes d'authentification du portail. Une fois que le WLC envoie la requête RADIUS avec la deuxième session pour l'invité 1, ISE refuse l'accès en raison d'un dépassement de la limite d'utilisateur :

Dépannage

Journaux actifs Radius

Le rapport Radius détaillé est le premier endroit pour dépanner la fonctionnalité MaxSession.

Ce motif d'échec indique que la limite maximale de sessions utilisateur globale est dépassée pour cette session/cet utilisateur, comme illustré dans l'image :

Ce motif d'échec indique que la limite de sessions max. du groupe est dépassée pour cette session/cet utilisateur, comme l'illustre l'image :

Ce motif d'échec indique que la limite de sessions max. de l'utilisateur du groupe est dépassée pour cette session/cet utilisateur.

La vérification du cache MaxSession se produit après la sélection du profil d'autorisation :

Réussite :

Échec:

Débogages ISE

Le nombre maximal de journaux de session se trouve dans le fichier prt-server.log. Afin de collecter ces données, définissez le composant runtime-AAA au niveau DEBUG ( naviguez vers Administration > System > Logging > Debug Log Configuration > PSN), comme indiqué dans l'image :

Afin d'obtenir File port-server.log, naviguez vers Operations > Troubleshoot > Download Logs > PSN > Debug Logs. Les journaux de session max. sont également collectés dans les débogages de point de terminaison (Opérations > Dépannage > Outils de diagnostic > Outils généraux > Débogage de point de terminaison).

La vérification de la session maximale utilisateur a réussi :

2017-01-29 08:33:11,310 INFO   [Thread-83][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,INFO ,0x7fe858867700,cntx=0000001335,sesn=pgruszczise22/275051099/8,CPMSessionID=0a3e944f00000e7d588da8a0,user=Bob,CallingStationID=c0-4a-00-14-56-f4,SessionCache::onMaxSessionsAznEvent: current global configuration data: auditSessionTtl=[3600], maxUserSessions=[2],SessionCache.cpp:283

2017-01-29 08:33:11,311 INFO   [Thread-83][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,INFO ,0x7fe858867700,cntx=0000001335,sesn=pgruszczise22/275051099/8,CPMSessionID=0a3e944f00000e7d588da8a0,user=Bob,CallingStationID=c0-4a-00-14-56-f4,SessionCache::checkMaxSessions: user=[Bob] not found in cache due to first time authorization,SessionCache.cpp:1025

2017-01-29 08:33:11,311 DEBUG  [Thread-83][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,DEBUG,0x7fe858867700,cntx=0000001335,sesn=pgruszczise22/275051099/8,CPMSessionID=0a3e944f00000e7d588da8a0,user=Bob,CallingStationID=c0-4a-00-14-56-f4,SessionCache::onMaxSessionsAznEvent: sessionID=[0a3e944f00000e7d588da8a0]; user=[Bob] - checkMaxSessions passed,SessionCache.cpp:360

2017-01-29 08:33:11,311 INFO   [Thread-83][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,INFO ,0x7fe858867700,cntx=0000001335,sesn=pgruszczise22/275051099/8,CPMSessionID=0a3e944f00000e7d588da8a0,user=Bob,CallingStationID=c0-4a-00-14-56-f4,SessionCache::onMaxSessionsAznEvent: create a new session object sessionID=[0a3e944f00000e7d588da8a0]; user=[Bob],SessionCache.cpp:375

ISE incrémente le compteur de sessions uniquement après avoir reçu le début de la comptabilisation pour la session :

2017-01-29 08:33:11,619 DEBUG  [Thread-90][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- Radius,DEBUG,0x7fe858766700,cntx=0000001503,sesn=pgruszczise22/275051099/9,CPMSessionID=0a3e944f00000e7d588da8a0,CallingStationID=c0-4a-00-14-56-f4,FramedIPAddress=10.62.148.141,RADIUS PACKET:: Code=4(AccountingRequest) Identifier=0 Length=279

[1] User-Name - value: [Bob]

[4] NAS-IP-Address - value: [10.62.148.79]

[5] NAS-Port - value: [1]

[8] Framed-IP-Address - value: [10.62.148.141]

[25] Class - value: [****]

[30] Called-Station-ID - value: [80-e0-1d-8b-72-00]

[31] Calling-Station-ID - value: [c0-4a-00-14-56-f4]

[32] NAS-Identifier - value: [WLC7]

[40] Acct-Status-Type - value: [Start]

[44] Acct-Session-Id - value: [588da8a0/c0:4a:00:14:56:f4/3789]

[45] Acct-Authentic - value: [RADIUS]

[55] Event-Timestamp - value: [1485678753]

[61] NAS-Port-Type - value: [Wireless - IEEE 802.11]

[64] Tunnel-Type - value: [(tag=0) VLAN]

[65] Tunnel-Medium-Type - value: [(tag=0) 802]

[81] Tunnel-Private-Group-ID - value: [(tag=0) 481]

[26] cisco-av-pair - value: [audit-session-id=0a3e944f00000e7d588da8a0]

[26] Airespace-Wlan-Id - value: [4] ,RADIUSHandler.cpp:2003

(...)

2017-01-29 08:33:11,654 DEBUG  [Thread-83][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,DEBUG,0x7fe858867700,cntx=0000001503,sesn=pgruszczise22/275051099/9,CPMSessionID=0a3e944f00000e7d588da8a0,user=Bob,CallingStationID=c0-4a-00-14-56-f4,FramedIPAddress=10.62.148.141,SessionCache::onAccountingStart: user=[Bob]; sessionID=[0a3e944f00000e7d588da8a0],SessionCache.cpp:537

2017-01-29 08:33:11,655 DEBUG  [Thread-83][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,DEBUG,0x7fe858867700,cntx=0000001503,sesn=pgruszczise22/275051099/9,CPMSessionID=0a3e944f00000e7d588da8a0,user=Bob,CallingStationID=c0-4a-00-14-56-f4,FramedIPAddress=10.62.148.141,SessionCache::incrementSessionCounters: user=[Bob] current user session count=[1],SessionCache.cpp:862

Échec de la vérification du nombre maximal de sessions utilisateur :

2017-01-29 08:37:00,534 INFO   [Thread-75][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,INFO ,0x7fe858a69700,cntx=0000005011,sesn=pgruszczise22/275051099/15,CPMSessionID=0a3e944f00000e7f588da966,user=Bob,CallingStationID=34-ab-37-60-63-88,SessionCache::onMaxSessionsAznEvent: current global configuration data: auditSessionTtl=[3600], maxUserSessions=[2],SessionCache.cpp:283

2017-01-29 08:37:00,535 INFO   [Thread-75][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,INFO ,0x7fe858a69700,cntx=0000005011,sesn=pgruszczise22/275051099/15,CPMSessionID=0a3e944f00000e7f588da966,user=Bob,CallingStationID=34-ab-37-60-63-88,SessionCache::checkMaxSessions: user=[Bob] is not authorized because current active user sessions=[2] >= max-user-sessions=[2],SessionCache.cpp:1010

2017-01-29 08:37:00,535 DEBUG  [Thread-75][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- SessionCache,DEBUG,0x7fe858a69700,cntx=0000005011,sesn=pgruszczise22/275051099/15,CPMSessionID=0a3e944f00000e7f588da966,user=Bob,CallingStationID=34-ab-37-60-63-88,SessionCache::onMaxSessionsAznEvent: sessionID=[0a3e944f00000e7f588da966]; user=[Bob] - checkMaxSessions failed,SessionCache.cpp:341

2017-01-29 08:37:00,535 DEBUG  [Thread-75][] cisco.cpm.prrt.impl.PrRTLoggerImpl -:::::- RadiusAuthorization,DEBUG,0x7fe858a69700,cntx=0000005011,sesn=pgruszczise22/275051099/15,CPMSessionID=0a3e944f00000e7f588da966,user=Bob,CallingStationID=34-ab-37-60-63-88,RadiusAuthorization::onResponseMaxSessionsAznEvent return from SessionCache,RadiusAuthorization.cpp:371