Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Esempio di rete

Scenari

Numero massimo di sessioni per utente

Configurazione

Esempio

Sessione massima per il gruppo

Configurazione

Esempio

Bordi

Numero massimo di sessioni per utente nel gruppo

Configurazione

Esempio

Sessione massima per il gruppo e Sessione massima per l'utente nel gruppo

Configurazione

Esempio

Limite di tempo contatore

Configurazione

Esempio

Funzionalità sessione massima e accesso guest

Autenticazione Web centrale

Autenticazione Web locale

Risoluzione dei problemi

Registri attivi Radius

Debug ISE

Introduzione

In questo documento viene descritto come configurare la funzionalità Maximum Sessions introdotta in Identity Services Engine (ISE) 2.2.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Protocollo RADIUS

- Configurazione 802.1x su controller WLC

- ISE e il suo personale (ruoli)

Componenti usati

Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:

- Cisco Identity Service Engine versione 2.2

- Controller LAN wireless 8.0.100.0

- Cisco Catalyst Switch 3750 15.2(3)E2

- Computer Windows 7

- Android Phone con versione 6.0.1

- Android Phone con versione 5.0

- Apple iPad iOS 9.1

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Premesse

La funzionalità Sessioni massime consente di controllare e applicare le sessioni in tempo reale per utente o per gruppo di identità. Questo documento è destinato alle sessioni RADIUS, ma può essere usato anche per le sessioni TACACS.

ISE versione 2.2 è in grado di rilevare e creare regole di applicazione basate sulla sessione simultanea di:

- Identità utente: limita il numero di sessioni per utente specifico

- Gruppo di identità - limita il numero di sessioni per gruppo specifico

- Utente in un gruppo - limita il numero di sessioni per utente, appartenente a un gruppo specifico

L'applicazione e il conteggio di una sessione concorrente sono univoci e gestiti da ogni PSN (Policy Service Node). Nessuna sincronizzazione tra i PSN in termini di numero di sessioni. La funzione Sessione concorrente viene implementata nel processo di runtime e i dati vengono memorizzati solo nella memoria. In caso di riavvio del PSN, i contatori MaxSessions vengono reimpostati.

Per il numero di sessioni utente non viene fatta distinzione tra maiuscole e minuscole in relazione ai nomi utente e non viene utilizzata la periferica di accesso alla rete (purché si utilizzi lo stesso nodo PSN).

Esempio di rete

Scenari

Numero massimo di sessioni per utente

Configurazione

Passare a Amministrazione > Sistema > Impostazioni > Sessioni massime come mostrato nell'immagine:

Per attivare la funzione, deselezionare la casella di controllo Sessione illimitata per utente, che è selezionata per impostazione predefinita. Nel campo Numero massimo di sessioni per utente configurare il numero di sessioni che un utente specifico può avere su ogni PSN. In questo esempio viene impostato su 2.

Questa configurazione interessa anche gli utenti di origini di identità esterne, ad esempio Active Directory.

Esempio

Bob è il nome utente di un account del dominio di Active Directory connesso e collegato al server ISE. User Maximum Sessions è configurato con il valore 2, ovvero non è consentita alcuna sessione per lo stesso utente oltre questo numero (per PSN).

Come mostrato nell'immagine, l'utente Bob si connette con Android Phone e il computer Windows con le stesse credenziali:

Entrambe le sessioni sono consentite perché non viene superato il limite massimo di sessioni. Vedere il registro dettagliato di Radius Live, mostrato nell'immagine:

Il passaggio 22081 del criterio Numero massimo di sessioni passato fornisce informazioni sull'esito positivo del controllo del numero massimo di sessioni simultanee.

Una volta avviata la terza connessione con un altro dispositivo e le stesse credenziali, Bob riceve PermitAccess, ma Access-Reject viene inviato all'autenticatore:

La sessione non è consentita, anche se nel registro Radius Live è presente il profilo di autorizzazione corretto. Per controllare le sessioni attive, selezionare Operazioni > Raggio > Sessioni attive:

In questo caso, entrambe le sessioni hanno lo stato Started (Avviato), che indica che l'Accounting Start è arrivato su ISE per la sessione. È necessario ricevere l'accounting Radius affinché Max Session funzioni correttamente. Lo stato Authenticated (Session consentita, ma nessun accounting) non viene preso in considerazione durante il conteggio delle sessioni:

Sessione massima per il gruppo

Configurazione

Selezionare Amministrazione > Sistema > Impostazioni > Sessioni massime > Gruppo:

Questa configurazione impone un massimo di 2 sessioni per il gruppo di identità interno GroupTest2: è possibile configurare l'imposizione per gruppo solo per i gruppi interni.

Esempio

Alice, Pablo e Peter sono gli utenti del Negozio Interno ISE. Tutti sono membri del gruppo denominato GroupTest2. In base alla configurazione di questo esempio, il valore massimo delle sessioni è impostato su 2 in base all'appartenenza al gruppo.

Pablo e Peter si connettono alla rete con le credenziali del gruppo interno denominato GroupTest2:

Quando Alice tenta di connettersi, viene applicato il limite MaxSessions per gruppo:

Alice non è autorizzata a connettersi alla rete perché il limite massimo di gruppi di sessioni è utilizzato da Peter e Pablo:

Bordi

Se è stato configurato User Maximum Sessions, entrambe le funzionalità funzioneranno in modo indipendente. In questo esempio, User Max Sessions è impostato su 1 e Maximum Session for Group è impostato su 2.

Peter è autorizzato in base alla sessione massima per il gruppo (2 sessioni), ma a causa della configurazione delle sessioni massime dell'utente (una sessione) non riesce a connettersi alla rete:

Se l'utente è membro di più gruppi contemporaneamente e il numero massimo di sessioni per il gruppo è configurato per tali utenti, dopo la connessione ISE aumenta il contatore del numero massimo di sessioni per la cache del gruppo per ogni gruppo a cui l'utente appartiene.

In questo esempio, Alice e Paolo sono membri di GroupTest1 e GroupTest2. Veronica appartiene solo a GroupTest1 e Peter a GroupTest2

Max Session for Group è impostato su 2 per GroupTest1 e GroupTest2:

Quando Alice e Pablo sono connessi alla rete, superano i limiti di sessione per entrambi i gruppi. Veronica, che appartiene solo a GroupTest1 e Peter, membro di GroupTest2, non è in grado di connettersi perché Max Session per Group ha raggiunto il valore configurato massimo:

Numero massimo di sessioni per utente nel gruppo

Configurazione

Passare a Amministrazione > Sistema > Impostazioni > Sessioni massime > Gruppo.

Questa configurazione impone un massimo di 2 sessioni per il GroupTest2 del gruppo di identità interno.

Esempio

Alice è membro di GroupTest2:

Questa funzione funziona in modo simile a User Maximum Session - ISE limita il numero di sessioni simultanee che un utente all'interno del gruppo interno specificato può avere. Questa configurazione ha effetto solo sull'utente che appartiene al gruppo configurato.

Alice, in qualità di membro di GroupTest2, può avere due sessioni simultanee. Una volta connessa al terzo dispositivo, ISE restituisce PermitAccess e Access-Reject in base al superamento del valore di Maximum Session for User in Group:

Log dettagliati Radius-Live:

Se è attivata anche l'opzione Sessioni massime utente, entrambe le funzionalità funzionano in modo indipendente. Se un utente Alice è membro del gruppo GroupTest2 con la sessione massima per l'utente nel gruppo configurato per 2 e contemporaneamente la configurazione di User Max Sessions consente solo una sessione per utente, la priorità sarà User Max Sessions:

Quando Alice tenta di connettersi con il secondo dispositivo, ISE restituisce Access-Reject in base al superamento del limite massimo di utenti per sessione:

Il motivo del rifiuto può essere controllato nel dettagliato Raggio Live-Log. Il limite massimo di sessioni utente è la causa dell'errore:

Sessione massima per il gruppo e Sessione massima per l'utente nel gruppo

Configurazione

Passare a Amministrazione > Sistema > Impostazioni > Sessioni massime > Gruppo.

Questa configurazione impone un numero massimo di sessioni pari a 3 nel gruppo di identità interno GroupTest2 e un numero massimo di sessioni pari a 2 per l'utente in tale gruppo.

Esempio

Alice e Pablo sono membri di GroupTest2. In base alla configurazione di questo esempio, in GroupTest2 è consentito un massimo di 3 sessioni. ISE garantisce che un singolo utente possa avere al massimo 2 sessioni all'interno di questo gruppo.

Alice si connette tramite due dispositivi. Entrambi gli endpoint sono connessi alla rete:

Quando Alice tenta di connettersi tramite un terzo dispositivo, l'accesso viene negato e viene superato il limite massimo di sessioni per l'utente nel gruppo:

Se Pablo tenta di accedere alla rete, è in grado di farlo poiché Max Session for Group, GroupTest2, non è ancora pieno:

Quando Pablo tenta di accedere alla rete da un secondo dispositivo, non riesce perché ha superato il limite massimo di sessioni per il gruppo (anche se ha solo 1 sessione):

Come negli esempi precedenti, se si abilita Sessioni massime utente, questa funzione viene eseguita in modo indipendente.

Limite di tempo contatore

Configurazione

Passare a Amministrazione > Sistema > Impostazioni > Sessioni massime > Limite di tempo contatore.

Il limite di tempo del contatore è la funzione che specifica l'intervallo di tempo durante il quale la sessione viene conteggiata in termini di cache sessione massima. Questa funzionalità consente di specificare il tempo trascorso il quale il PSN elimina la sessione dal contatore e consente nuove sessioni.

Per attivare la funzione, è necessario deselezionare la casella di controllo Illimitato - nessun limite di tempo che è selezionata per impostazione predefinita. Nel campo modificabile, è possibile impostare il tempo durante il quale la sessione viene presa in considerazione nei contatori di MaxSession.

Tenere presente che le sessioni dopo il tempo configurato non vengono disconnesse o rimosse dal database delle sessioni. Dopo l'ora configurata non è presente alcun CoA (Terminate Chain of Authorization).

Esempio

User Max Session è impostato per consentire una sola sessione per l'utente:

Alice si connette alla rete utilizzando l'indirizzo IP alle 11:00:34, la seconda autenticazione avviene alle 11:07 e l'accesso è consentito anche se viene superato il valore User Maximum Session. Entrambe le autenticazioni hanno esito positivo a causa del limite di tempo del contatore.

Alice cerca di collegarsi a un altro dispositivo prima che siano trascorsi 5 minuti dall'ultimo passaggio di connessione riuscito. ISE rifiuta l'autenticazione:

Dopo 5 minuti dall'ultima autenticazione, Alice è riuscita a connettersi alla rete con un dispositivo aggiuntivo.

Nelle sessioni in diretta, è possibile vedere tutte e tre le sessioni nello stato Avviato:

Funzionalità sessione massima e accesso guest

Autenticazione Web centrale

Con una sessione configurata in Sessione massima utente, è ancora possibile connettersi con l'account Guest1 per entrambe le sessioni:

Per limitare l'accesso guest, è possibile specificare il numero massimo di accessi simultanei nella configurazione Guest Type.

Passare a Centri di lavoro > Accesso guest > Portale e componenti > Tipi guest e modificare l'opzione Numero massimo di accessi simultanei, come mostrato nell'immagine:

Autenticazione Web locale

Se in Sessione massima utente è configurata una sessione, non è possibile connettersi:

Come per i Live Log Radius, il Guest1 è sempre correttamente autenticato in termini di autenticazione del portale. Dopo che WLC ha inviato la richiesta RADIUS con la seconda sessione per Guest1, ISE nega l'accesso a causa del superamento del limite di utenti:

Risoluzione dei problemi

Registri attivi Radius

Il report dettagliato sul raggio è il primo strumento per la risoluzione dei problemi relativi alla feature MaxSession.

Questo motivo di errore indica che il limite massimo globale di sessioni utente è stato superato per questa sessione/utente, come mostrato nell'immagine:

Questo motivo di errore indica che il limite massimo di sessioni del gruppo è stato superato per questa sessione/utente, come mostrato nell'immagine:

Questo motivo di errore indica che per la sessione o l'utente corrente è stato superato il limite massimo di sessioni per gli utenti del gruppo.

Il controllo della cache MaxSession avviene dopo la selezione del profilo di autorizzazione:

Operazione completata:

Errore:

Debug ISE

Il numero massimo di registri di sessione si trova nel file prrt-server.log. Per raccoglierli, impostare il componente runtime-AAA sul livello DEBUG (selezionare Amministrazione > Sistema > Log > Configurazione log di debug > PSN), come mostrato nell'immagine:

Per ottenere il file port-server.log, selezionare Operazioni > Risoluzione dei problemi > Log di download > PSN > Log di debug. I log sessione max vengono raccolti anche nei debug degli endpoint (Operazioni > Risoluzione dei problemi > Strumenti diagnostici > Strumenti generali > Debug degli endpoint).

Controllo sessione massima utente superato correttamente:

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 incrementa SessionCounter solo dopo aver ricevuto l'avvio accounting per la sessione:

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

Errore di controllo della sessione massima utente:

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