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 :

Composants utilisés

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

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 :

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

Network Diagram

Scénarios

Nombre maximal de sessions par utilisateur

Configuration

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

Maximum Sessions per User

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 :

Connect Android Phone and Windows Machine with Same Credentials


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 :

Maximum Limit not Exceeded

Max Sessions Policy Passes
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 :


Third Connection with Another Device and Same Credentials Initiated

Authentication Failed
Authentication Details - Failure Reason 22089


22089 Max Sessions Policy Failed. Max Sessions User Limit Exceeded

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 :

Session is not Permitted

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 :

Both Sessions have Status Started



Nombre maximal de sessions pour le groupe

Configurer


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


Max Sessions Test


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.

Network Access Users

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

Connect to Network with Credentials from Internal Group named Group Test2

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

Max Sessions Limit per Group is Enforced


5400 Authentication Failed

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 :

22097 Max Sessions Policy Failed. Max Sessions Group Limit Exceeded.




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.

User Max Sessions Configured with both Features Working Independently

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 :


User Permitted based on Maximum Session for Group 2

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

GroupTest 1 and GroupTest 2 Enabled

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

Max Sessions Set to 2

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 :

User Denied Access

Maximum Sessions for User in Group

Nombre maximal de sessions pour l'utilisateur du groupe

Configurer

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

Configuration Enforces 2 Sessions for Internal Group, GroupTest 2

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

Exemple

Alice est membre de GroupTest2 :

Network Access Users

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 :

Maximum Sessions for User in Group

Journaux Radius-Live détaillés :

User in GroupTest 2 can have 2 Simultaneous Sessions

Detailed RADIUS Live Logs

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 :

User Max Sessions is Configured to Allow Only One Session per User

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 :

User Max Sessions takes Precedence so ISE Returns Access-Reject Based on Limit Exceeded



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 :

Reason for Denial Checked under Detailed RADIUS Live Log

Notifications that Max Sessions Policy Failed due to User Limit Exceeded

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.

Maximum Session for Group and Maximum Session for User in that 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.

Maximum of 3 Sessions is Allowed in GroupTest2

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

User connect via Two Devices

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 :


When User Tries to Connect via Third Device, Access is Denied

Authentication Details show the Failure Reason



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 :


User Tries to Access the Network and Gains Access since Max Sessions for GroupTest2 is not yet Full

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) :

When User tries to Access the Network from Second Device, Failure occurs because Max Session for Group was Exceeded
22097 Max Sessions Policy Failed, Max Sessions Group Limit Exceeded


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
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 :

Max Session Set to Allow Only One User

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.

Initial User Connection

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 :

Connection not Allowed before 5 Minutes from Last Successful Authentication

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.

Connection Allowed after 5 Minutes from Last Authentication

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

All Three Sessions Started

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 :

Central Web Authentication

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 :

Limit Guest Access

Authentification Web locale

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

Local Web Authentication

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 :

RADIUS Live Logs Report

Dépannage

Journaux actifs Radius

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

RADIUS Live Logs

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 :

Global Max User Session Exceeded

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 :

Group Max Sessions Limit is Exceeded

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 :

Max Sessions Cache Success

Échec:

Max Sessions Cache Failure

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 :

ISE Debugs

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