目录

简介

先决条件

要求

使用的组件

背景信息

网络图

场景

每个用户的最大会话数

配置

示例

组的最大会话数

配置

示例

转角案例

组中用户的最大会话数

配置

示例

组的最大会话数以及该组用户的最大会话数

配置

示例

计数器时间限制

配置

示例

最大会话功能和访客访问权限

集中Web身份验证

本地Web身份验证

故障排除

Radius实时日志

ISE调试

简介

本文档介绍如何配置身份服务引擎(ISE)2.2中引入的最大会话功能。

先决条件

要求

Cisco 建议您了解以下主题：

- RADIUS协议

- 无线局域网控制器(WLC)上的802.1x配置

- ISE及其角色（角色）

使用的组件

本文档中的信息基于以下软件和硬件版本：

- 思科身份服务引擎版本2.2

- 无线LAN控制器8.0.100.0

- 思科Catalyst交换机3750 15.2(3)E2

- Windows 7计算机

- 运行6.0.1的Android电话

- 运行5.0的Android电话

- Apple iPad iOS 9.1

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

“最大会话数”功能提供了一种按用户或按身份组控制和强制执行实时会话的方法。本文档适用于RADIUS会话，但也可以用于TACACS会话。

ISE版本2.2可以根据以下并发会话检测和构建实施策略：

- User Identity — 限制每个特定用户的会话数

- 身份组 — 限制每个特定组的会话数量

- User in a Group — 限制每个用户属于特定组的会话数

并发会话的实施和计数是唯一的，由每个策略服务节点(PSN)管理。PSN之间没有会话计数方面的同步。并发会话功能在运行时进程中实现，数据仅存储在内存中。如果PSN重新启动，MaxSessions计数器将重置。

用户会话计数对用户名不区分大小写，并且独立于使用的网络访问设备（只要使用相同的PSN节点）。

网络图

场景

每个用户的最大会话数

配置

导航到管理>System >设置>最大会话，如图所示：

要启用此功能，请取消选中Unlimited session per user复选框（默认情况下已选中）。在Maximum per user Sessions字段中，配置特定用户在每个PSN上可以拥有的会话数。在本例中，它设置为2。

来自外部身份源（例如，Active Directory）的用户也受此配置的影响。

示例

Bob是来自Active Directory域的帐户的用户名，该帐户已连接并加入ISE服务器。User Maximum Sessions配置为值2，这意味着对于超过此数量的同一用户，不允许任何会话（每个PSN）。

如图所示，用户Bob使用相同的凭证连接Android Phone和Windows计算机：

由于未超出最大会话限制，因此允许两个会话。查看详细的Radius Live日志，如图所示：

22081 Max sessions policy passed step提供最大并发会话检查成功的信息。

启动与另一设备的第三个连接和相同的凭证后，Bob会收到PermitAccess，但Access-Reject会发送到身份验证器：

不允许会话，即使在Radius实时日志中，您可以看到它达到了正确的授权配置文件。要检查实时会话，请导航到操作> Radius >实时会话:

在这种情况下，两个会话的状态都是Started，这表示会话的Accounting Start到达ISE。必须接收Radius Accounting for Max Session才能正常工作，会话计数期间不会考虑已验证状态（允许会话，但不计费）：

组的最大会话数

配置

导航到管理>System>设置>最大会话数>组:

此配置最多为内部身份组GroupTest2实施2个会话：您只能为内部组为每个组配置实施。

示例

Alice、Pablo和Peter是内部ISE用户库的用户。它们都是名为GroupTest2的组的成员。根据本示例中的配置，根据组成员资格将会话的最大值设置为2。

Pablo和Peter使用来自名为GroupTest2的内部组的凭证连接到网络：

一旦Alice尝试连接，将强制每个组的MaxSessions限制：

由于Peter和Pablo用尽了最大会话组限制，因此Alice不允许连接到网络：

转角案例

如果配置了User Maximum Sessions，则两个功能独立工作。在本示例中，User Max Sessions设置为1,Maximum Session for Group设置为2。

根据组的最大会话数（2个会话）允许Peter，但由于用户最大会话数配置（一个会话）导致他无法连接到网络：

如果用户同时是一个以上组的成员，并且为其配置了组的最大会话数，则连接后，ISE会针对用户所属的每个组增加组缓存的最大会话数的计数器。

在本示例中，Alice和Pablo都是GroupTest1和GroupTest2的成员。Veronica仅属于GroupTest1,Peter属于GroupTest2

GroupTest1和GroupTest2的Max Session设置为2:

当Alice和Pablo连接到网络时，它们超出了两个组的会话限制。Veronica（仅属于GroupTest1和Peter），GroupTest2的成员无法连接，因为组的最大会话数已达到配置的最大值：

组中用户的最大会话数

配置

导航到管理>System >设置>最大会话数>组。

此配置最多为内部身份组GroupTest2实施2个会话。

示例

Alice是GroupTest2的成员：

此功能的工作方式类似于用户最大会话 — ISE限制指定内部组内用户可拥有的并发会话数。此配置仅影响属于已配置组的用户。

Alice作为GroupTest2的成员，可以有2个同步会话。连接到第三台设备后，ISE根据组中用户的最大会话数超出，返回PermitAccess和Access-Reject:

详细的Radius实时日志：

如果同时启用User Maximum Sessions，则两个功能独立工作。如果用户Alice是组GroupTest2的成员，且组Maximum Session for User in Group配置为2，同时将User Max Sessions配置为每个用户只允许一个会话，则User Max Sessions优先：

当Alice尝试连接第二个设备时，ISE根据超过最大会话用户限制返回访问拒绝：

拒绝原因可以在详细的Radius Live-Log下检查。最大会话用户限制是失败的原因：

组的最大会话数以及该组用户的最大会话数

配置

导航到管理>System >设置>最大会话数>组。

此配置在内部身份组GroupTest2中实施最多3个会话，为该组中的用户实施最多2个会话。

示例

Alice和Pablo是GroupTest2的成员。根据本示例中的配置，GroupTest2中最多允许3个会话。ISE确保单个用户在此组内最多可以有2个会话。

Alice通过两个设备连接。两个终端均连接到网络：

当Alice尝试通过第三台设备连接时，访问被拒绝，超过组内用户的最大会话数限制：

如果Pablo尝试访问网络，则由于GroupTest2的Max Session尚未满，他能够执行此操作：

当Pablo尝试从第二台设备访问网络时，他因超过组的最大会话限制而失败（即使他只有1个会话）：

如前面的示例所示，如果启用User Maximum Sessions，它将独立工作。

计数器时间限制

配置

导航到管理>System >设置>最大会话>计数器时间限制。

Counter Time Limit是指定会话在最大会话缓存中计数的时间间隔的功能。此功能允许您指定PSN从计数器删除会话的时间以及允许新会话的时间。

要启用此功能，您需要取消选中Unlimited - no time limits复选框（默认情况下已选中）。在可编辑的字段中，您可以设置在MaxSession的计数器考虑会话的时间长度。

请记住，配置时间后的会话不会断开连接，也不会从会话数据库中删除。在配置的时间之后没有终止授权链(CoA)。

示例

User Max Session设置为仅允许用户一个会话：

Alice在11:00:34使用IPad连接到网络，第二次身份验证在11:07进行，即使超过用户最大会话值，仍允许访问。由于计数器时间限制，两个身份验证均成功。

Alice尝试在上次成功连接通过5分钟之前连接到其他设备，ISE拒绝身份验证：

在上次身份验证后5分钟后，Alice可以使用其他设备连接到网络。

在实时会话中，您可以看到所有三个会话处于Started:

最大会话功能和访客访问权限

集中Web身份验证

在User Maximum Session feature下配置一个会话后，您仍然能够使用两个会话的Guest1帐户进行连接：

为了限制访客访问，您可以在访客类型配置中指定Maximum simultaneous logins。

导航到工作中心(Work Centers)>访客接入(Guest Access)>门户和组件(Portal & Components)>访客类型(Guest Types)并更改最大同时登录(Maximum simultaneous logins)选项，如图所示：

本地Web身份验证

在User Maximum Session下配置了一个会话，您将无法连接：

根据Radius Live-logs，Guest1始终根据门户身份验证进行正确身份验证。一旦WLC通过第二个会话发送Guest1的RADIUS请求，ISE会拒绝访问，因为超过用户限制：

故障排除

Radius实时日志

详细的Radius报告是排除MaxSession功能故障的第一个位置。

此故障原因表示此会话/用户已超过全局最大用户会话限制，如图所示：

此故障原因表示此会话/用户超出组最大会话数限制，如图所示：

此失败原因表示此会话/用户超出了“组用户最大会话数”限制。

MaxSession缓存的检查在选择授权配置文件后发生：

成功：

故障：

ISE调试

最大会话日志位于prrt-server.log中。要收集这些信息，请将runtime-AAA组件设置为DEBUG级别(导航到Administration > System > Logging > Debug Log Configuration > PSN)，如图所示：

要获取文件prrt-server.log，请导航到操作>故障排除>下载日志> PSN >调试日志。最大会话日志也收集在终端调试中(Operations > Troubleshoot > Diagnostic Tools > General Tools > EndPoint Debug)。

用户最大会话检查已正确通过：

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仅在收到SessionCounter会话的Accounting Start后增加SessionCounter:

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

用户最大会话检查失败：

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