此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍常见的身份服务引擎(ISE)终端安全评估服务问题:“AnyConnect ISE终端安全评估模块显示兼容……”
本文档介绍常见的身份服务引擎(ISE)终端安全评估服务问题- AnyConnect ISE终端安全评估模块在ISE上的会话状态为挂起时显示合规性。
虽然症状始终相同,但此问题有多个根本原因。
通常,对此类问题进行故障排除会非常耗时,从而造成严重影响。
本文档解释:
有关后面介绍的概念的详细说明,请参阅:
此问题通常表现为浏览器中缺少网络访问或持续重定向到ISE客户端调配门户,同时,AnyConect ISE终端安全评估模块将终端安全评估状态显示为兼容。
典型的最终用户体验:
通常,在此问题的初始分类中,ISE管理员会执行Radius Live日志调查,以确保有实际身份验证命中ISE。
在此阶段发现的第一个症状指示终端和ISE之间的状态不匹配,如在实时日志或RADIUS身份验证报告终端的最后成功身份验证显示Pending状态一样。
典型的ISE管理员体验:
注意:当上述问题出现时,活动日志中并不总是显示c.和d.。状态状态为Compliant的会话事件对于由过时或虚拟会话引起的场景更常见(在本文档的后面部分进行介绍)。
此问题通常表现在两个有问题的场景中,并且每个场景都有多个根本原因。场景:
在这种情况下,我们通常处理PSN会话缓存中的过时或幻像会话。
AnyConnect中的ISE终端安全评估模块具有有限数量的触发发现过程的事件。在身份验证或重新身份验证期间,可能未检测到任何事件。
为了更好地了解问题,请调查所需的ISE会话管理逻辑和AnyConnect发现过程。
在ISE部署中,有两个人员负责会话管理流程:PSN和监控节点(MNT)。
要正确排查并识别此问题,必须了解两个角色上的会话管理理论。
如图所示,MNT节点根据来自PSN的通过身份验证系统日志消息创建季节。
会话状态可以稍后由系统日志更新,以进行记帐。
MNT上的会话删除在3种情况下发生:
1. 没有记帐开始的会话在创建后大约60分钟就被删除:每5分钟执行一个cron作业以检查会话状态并清除它们。
2. 在同一cron作业处理记帐停止约15分钟后,终止的会话被删除。
3. 每次执行时相同的cron都会删除处于“已启动”状态超过5天(120小时)的会话。已启动状态表示MNT节点同时处理身份验证和记帐以启动会话的系统日志。
来自PSN的系统日志消息示例:
当在DEBUG中启用runtime-aaa组件时,这些消息会记录到prrt-server.log中。 粗体部分可用于构建搜索正则表达式。
已通过身份验证:
AcsLogs,2020-04-07 10:07:29,202,DEBUG,0x7fa0ada91700,cntx=0000629480,sesn=skuchere-ise26-1/375283310/10872,CPMSessionID=0A3E946C00000073559C0123,user=bob@example.com,CallingStationID=00-50-56-B6-0B-C6,FramedIPAddress=192.168.255.205,Log_Message=[2020-04-07 22:53:24.288 +02:00 0000423024 5200 NOTICE Passed-Authentication: Authentication succeeded, ConfigVersionId=87, Device IP Address=10.62.148.108, DestinationIPAddress=192.168.43.26, DestinationPort=1812, UserName=bob@example.com, Protocol=Radius, RequestLatency=45, NetworkDeviceName=3850-1-BB, User-Name=bob@example.com, NAS-IP-Address=10.62.148.108, NAS-Port=50105, Service-Type=Framed, Framed-IP-Address=192.168.255.205, Framed-MTU=1472, State=37CPMSessionID=0A3E946C00000073559C0123\;42SessionID=skuchere-ise26-1/375283310/10872\;, Calling-Station-ID=00-50-56-B6-0B-C6, NAS-Port-Type=Ethernet, NAS-Port-Id=GigabitEthernet1/0/5, EAP-Key-Name=, cisco-av-pair=service-type=Framed, cisco-av-pair=audit-session-id=0A3E946C00000073559C0123, cisco-av-pair=method=dot1x, cisco-av-pair=client-iif-id=526638260, NetworkDeviceProfileName=Cisco, NetworkDeviceProfileId=b0699505-3150-4215-a80e-6753d45bf56c, IsThirdPartyDeviceFlow=false, RadiusFlowType=Wired802_1x, AcsSessionID=skuchere-ise26-1/375283310/10872, AuthenticationIdentityStore=EXAMPLE, AuthenticationMethod=MSCHAPV2, SelectedAccessService=Default Network Access, SelectedAuthorizationProfiles=PermitAccess, IsMachineAuthentication=false, IdentityGroup=Endpoint Identity Groups:Profiled:Workstation, Step=11001, Step=11017, Step=15049, Step=15008, Step=15048, Step=15048, Step=15048, Step=11507, Step=12500, Step=12625, Step=11006, Step=11001, Step=11018, Step=12301, Step=12300, Step=12625, Step=11006, Step=11001, Step=11018, Step=12302, Step=12318, Step=12800, Step=12805, Step=12806, Step=12807, Step=12808, Step=12810, Step=12811, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=12318, Step=12812, Step=12813, Step=12804, Step=12801, Step=12802, Step=12816, Step=12310, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=12313, Step=11521, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=11522, Step=11806, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=11808, Step=15041, Step=22072, Step=15013, Step=24210, Step=24216, Step=15013, Step=24430, Step=24325, Step=24313, Step=24319, Step=24323, Step=24343, Step=24402, Step=22037, Step=11824, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=11810, Step=11814, Step=11519, Step=12314, Step=12305, Step=11006, Step=11001, Step=11018, Step=12304, Step=24715, Step=15036, Step=24209, Step=24211, Step=24432, Step=24325, Step=24313, Step=24319, Step=24323, Step=24355, Step=24416, Step=15048, Step=15016, Step=22081, Step=22080, Step=12306, Step=11503, Step=11002, SelectedAuthenticationIdentityStores=Internal Users, SelectedAuthenticationIdentityStores=All_AD_Join_Points, SelectedAuthenticationIdentityStores=Guest Users, AuthenticationStatus=AuthenticationPassed, NetworkDeviceGroups=IPSEC#Is IPSEC Device#No, NetworkDeviceGroups=Location#All Locations, NetworkDeviceGroups=Device Type#All Device Types, IdentityPolicyMatchedRule=Dot1X, AuthorizationPolicyMatchedRule=Compliant-Wired, EapTunnel=PEAP, EapAuthentication=EAP-MSCHAPv2, CPMSessionID=0A3E946C00000073559C0123, EndPointMACAddress=00-50-56-B6-0B-C6, PostureAssessmentStatus=NotApplicable, EndPointMatchedProfile=Microsoft-Workstation, ISEPolicySetName=Default, IdentitySelectionMatchedRule=Dot1X, AD-User-Resolved-Identities=bob@example.com, AD-User-Candidate-Identities=bob@example.com, AD-User-Join-Point=EXAMPLE.COM, StepData=4= Radius.NAS-IP-Address, StepData=5= Cisco-VPN3000.CVPN3000/ASA/PIX7x-Tunnel-Group-Name, StepData=6= DEVICE.Device Type, StepData=77=All_User_ID_Stores, StepData=78=Internal Users, StepData=81=All_AD_Join_Points, StepData=82=All_AD_Join_Points, StepData=83=bob@example.com, StepData=84=example.com, StepData=85=example.com, StepData=87=bob@example.com, StepData=88=All_AD_Join_Points, StepData=109=EXAMPLE, StepData=110=bob@example.com, StepData=111=example.com, StepData=112=example.com, StepData=114=example.com, StepData=115=EXAMPLE, StepData=116= EXAMPLE.ExternalGroups, AD-User-Resolved-DNs=CN=bob\,CN=Users\,DC=example\,DC=com, AD-User-DNS-Domain=example.com, AD-Groups-Names=example.com/Users/Domain Users, AD-User-NetBios-Name=EXAMPLE, IsMachineIdentity=false, UserAccountControl=66048, AD-User-SamAccount-Name=bob, AD-User-Qualified-Name=bob@example.com, allowEasyWiredSession=false, TLSCipher=ECDHE-RSA-AES256-GCM-SHA384, TLSVersion=TLSv1.2, DTLSSupport=Unknown, HostIdentityGroup=Endpoint Identity Groups:Profiled:Workstation, Network Device Profile=Cisco, Location=Location#All Locations, Device Type=Device Type#All Device Types, IPSEC=IPSEC#Is IPSEC Device#No, ExternalGroups=S-1-5-21-875452798-754861120-3039794717-513, IdentityAccessRestricted=false, PostureStatus=Compliant, Response={Class=CACS:0A3E946C00000073559C0123:skuchere-ise26-1/375283310/10872; EAP-Key-Name=19:5e:8c:e9:13:0c:89:23:78:49:ad:2b:d4:31:63:51:27:81:db:e2:61:b1:51:36:6d:11:10:41:ce:3b:aa:cc:c6:66:4e:7c:92:f8:83:c5:06:84:ac:95:4c:5b:f1:b2:37:a2:f5:04:4e:9e:4d:08:79:55:b7:4d:9a:41:f5:b2:0a; MS-MPPE-Send-Key=****; MS-MPPE-Recv-Key=****; LicenseTypes=65541; },],MessageFormatter.cpp:107
记帐开始:
AcsLogs,2020-04-07 10:07:30,202,DEBUG,0x7fa0ad68d700,cntx=0000561096,sesn=skuchere-ise26-1/375283310/10211,CPMSessionID=0A3E946C00000073559C0123,user=bob@example.com,CallingStationID=00-50-56-B6-0B-C6,FramedIPAddress=192.168.255.205,Log_Message=[2020-04-07 10:07:30.857 +02:00 0000382874 3000 NOTICE Radius-Accounting: RADIUS Accounting start request, ConfigVersionId=87, Device IP Address=10.62.148.108, UserName=bob@example.com, RequestLatency=7, NetworkDeviceName=3850-1-BB, User-Name=bob@example.com, NAS-IP-Address=10.62.148.108, NAS-Port=50105, Framed-IP-Address=192.168.255.205, Class=CACS:0A3E946C00000073559C0123:skuchere-ise26-1/375283310/10210, Called-Station-ID=00-E1-6D-D1-4F-05, Calling-Station-ID=00-50-56-B6-0B-C6, Acct-Status-Type=Start, Acct-Delay-Time=0, Acct-Session-Id=00000041, Acct-Authentic=Remote, Event-Timestamp=1586279242, NAS-Port-Type=Ethernet, NAS-Port-Id=GigabitEthernet1/0/5, cisco-av-pair=audit-session-id=0A3E946C00000073559C0123, cisco-av-pair=method=dot1x, AcsSessionID=skuchere-ise26-1/375283310/10211, SelectedAccessService=Default Network Access, Step=11004, Step=11017, Step=15049, Step=15008, Step=15048, Step=22083, Step=11005, NetworkDeviceGroups=IPSEC#Is IPSEC Device#No, NetworkDeviceGroups=Location#All Locations, NetworkDeviceGroups=Device Type#All Device Types, CPMSessionID=0A3E946C00000073559C0123, Network Device Profile=Cisco, Location=Location#All Locations, Device Type=Device Type#All Device Types, IPSEC=IPSEC#Is IPSEC Device#No, ],MessageFormatter.cpp:107
中期会计更新:
AcsLogs,2020-04-07 22:57:48,642,DEBUG,0x7fa0adb92700,cntx=0000629843,sesn=skuchere-ise26-1/375283310/10877,CPMSessionID=0A3E946C00000073559C0123,user=bob@example.com,CallingStationID=00-50-56-B6-0B-C6,FramedIPAddress=192.168.255.205,Log_Message=[2020-04-07 22:57:48.650 +02:00 0000423268 3002 NOTICE Radius-Accounting: RADIUS Accounting watchdog update, ConfigVersionId=87, Device IP Address=10.62.148.108, UserName=bob@example.com, RequestLatency=8, NetworkDeviceName=3850-1-BB, User-Name=bob@example.com, NAS-IP-Address=10.62.148.108, NAS-Port=50105, Framed-IP-Address=192.168.255.205, Class=CACS:0A3E946C00000073559C0123:skuchere-ise26-1/375283310/10872, Called-Station-ID=00-E1-6D-D1-4F-05, Calling-Station-ID=00-50-56-B6-0B-C6, Acct-Status-Type=Interim-Update, Acct-Delay-Time=0, Acct-Input-Octets=2293926, Acct-Output-Octets=0, Acct-Session-Id=00000041, Acct-Authentic=Remote, Acct-Input-Packets=15785, Acct-Output-Packets=0, Event-Timestamp=1586325462, NAS-Port-Type=Ethernet, NAS-Port-Id=GigabitEthernet1/0/5, cisco-av-pair=audit-session-id=0A3E946C00000073559C0123, cisco-av-pair=method=dot1x, AcsSessionID=skuchere-ise26-1/375283310/10877, SelectedAccessService=Default Network Access, Step=11004, Step=11017, Step=15049, Step=15008, Step=22085, Step=11005, NetworkDeviceGroups=IPSEC#Is IPSEC Device#No, NetworkDeviceGroups=Location#All Locations, NetworkDeviceGroups=Device Type#All Device Types, CPMSessionID=0A3E946C00000073559C0123, Network Device Profile=Cisco, Location=Location#All Locations, Device Type=Device Type#All Device Types, IPSEC=IPSEC#Is IPSEC Device#No, ],MessageFormatter.cpp:107
记帐停止:
AcsLogs,2020-04-08 11:43:22,356,DEBUG,0x7fa0ad68d700,cntx=0000696242,sesn=skuchere-ise26-1/375283310/11515,CPMSessionID=0A3E946C00000073559C0123,user=bob@example.com,CallingStationID=00-50-56-B6-0B-C6,FramedIPAddress=192.168.255.205,Log_Message=[2020-04-08 11:43:22.368 +02:00 0000463071 3001 NOTICE Radius-Accounting: RADIUS Accounting stop request, ConfigVersionId=88, Device IP Address=10.62.148.108, UserName=bob@example.com, RequestLatency=12, NetworkDeviceName=3850-1-BB, User-Name=bob@example.com, NAS-IP-Address=10.62.148.108, NAS-Port=50105, Framed-IP-Address=192.168.255.205, Class=CACS:0A3E946C00000073559C0123:skuchere-ise26-1/375283310/11503, Called-Station-ID=00-E1-6D-D1-4F-05, Calling-Station-ID=00-50-56-B6-0B-C6, Acct-Status-Type=Stop, Acct-Delay-Time=0, Acct-Input-Octets=4147916, Acct-Output-Octets=0, Acct-Session-Id=00000041, Acct-Authentic=Remote, Acct-Session-Time=92157, Acct-Input-Packets=29120, Acct-Output-Packets=0, Acct-Terminate-Cause=Lost Carrier, Event-Timestamp=1586371399, NAS-Port-Type=Ethernet, NAS-Port-Id=GigabitEthernet1/0/5, Framed-IPv6-Address=2001:10::100, Framed-IPv6-Address=2001:10::101, cisco-av-pair=audit-session-id=0A3E946C00000073559C0123, cisco-av-pair=method=dot1x, AcsSessionID=skuchere-ise26-1/375283310/11515, SelectedAccessService=Default Network Access, Step=11004, Step=11017, Step=15049, Step=15008, Step=22084, Step=11005, NetworkDeviceGroups=IPSEC#Is IPSEC Device#No, NetworkDeviceGroups=Location#All Locations, NetworkDeviceGroups=Device Type#All Device Types, CPMSessionID=0A3E946C00000073559C0123, Network Device Profile=Cisco, Location=Location#All Locations, Device Type=Device Type#All Device Types, IPSEC=IPSEC#Is IPSEC Device#No, ],MessageFormatter.cpp:107
PSN会话缓存是内存中存储特定PSN的所有活动会话的数据库。会话缓存始终位于节点本地。
ISE中没有一种机制可以将FULL会话状态从一个节点复制到另一个节点。
对于每个活动会话ID,PSN存储身份验证/授权阶段收集的所有属性(例如,内部/外部用户组、网络接入设备(NAD)属性、证书属性等)。PSN使用这些属性来选择不同的策略类型(例如身份验证、授权、客户端调配和状态)。
重新启动节点(或节点上的服务)时,会话缓存将被完全删除。
当前会话处理逻辑在两种情况下在会话缓存中创建新条目。现有会话的后续详细信息可以通过来自NAD的记帐消息进行更新。
当涉及会话删除时,PSN将实现以下逻辑:
在ISE部署中,未执行实际身份验证的PSN已处理现有会话的记帐停止:
过时会话示例:
1. 在PSN上为会话ABC成功进行身份验证。
2. PSN在会话缓存中创建条目。
3. 进行状态评估。
4. 会话标记为合规。
5. 授权更改(COA)(由状态更改触发)导致终端重新进行身份验证以应用下一个访问级别。
6. 会话ABC的记帐停止到达PSN2。
之后,ABC在PSN1上停滞在陈旧状态,因为此PSN上未处理要将其删除的记帐停止消息。
如果部署未遇到大量身份验证尝试,则会长时间删除会话。
在以下情况下,PSN会话缓存中出现过期的会话:
负载均衡器(LB)环境中过时的会话示例:
1. 会话ABC的初始身份验证由PSN 1执行。
2. 此身份验证会在负载均衡器上启动粘性计时器。
3. PSN 1在本地缓存中为会话ABC创建条目。
4. 已通过身份验证的系统日志消息已传输到MNT节点。
5. 会话ABC的条目在MNT会话目录中创建,其状态为Authenticated。
6. 会话ABC的记帐开始消息到达PSN 1。
7. 使用来自Accounting-Start的信息更新会话ABC的会话缓存条目。
8. Accounting-Start的系统日志消息传输到MNT节点。
9. 会话状态更新为已启动。
10. 负载均衡器上的粘性计时器过期。
11. 会话ABC的记帐停止由负载均衡器转发到PSN 2。
12. 记账停止的系统日志消息由PSN 2转发到MNT。
13. 会话ABC在MNT上标记为已终止。
幻像会话是记帐临时更新到达未对此特定会话执行身份验证的PSN时的场景。在这种情况下,将在PSN会话缓存中创建一个新条目。
如果PSN没有收到此会话的记帐停止消息,则不会删除该条目,除非PSN达到活动会话的限制。
幻像会话示例:
1. 在PSN1上为会话ABC执行与过时会话示例中所述的步骤相同的步骤。
2. 会话ABC在PSN1会话缓存中的状态为Compliant。
3. 会话ABC的记帐临时更新到达PSN2。
4. 在PSN2上创建会话ABC的会话条目。由于会话条目是根据记账消息创建的,因此其属性数量有限。例如,状态不可用于会话ABC。用户组和其他授权特定属性等内容也不存在。
在以下情况下,虚拟会话显示在PSN会话缓存中:
以下示例是在通往PSN1的网络路径上出现临时问题的场景中的幻像会话:
1. 会话ABC的初始身份验证由PSN执行。
2. PSN1在本地缓存中为会话ABC创建条目。
3. 通过身份验证的系统日志消息将传输到MNT节点。
4. 会话ABC的条目在TimesTen DB中创建,状态为Authenticated。
5. 会话ABC的记帐开始消息到达PSN 1。
6. 使用来自Accounting-Start的信息更新会话ABC的会话缓存条目。
7. Accounting-Start的系统日志消息传输到MNT节点。
8. 会话状态更新为Started。
9. 会话ABC的中期记帐更新将转发到PSN2。
10. PSN2在本地缓存中为会话ABC创建条目。
11. 会话ABC的Accounting-Stop将转发到PSN1。
12. 会话ABC的条目会从PSN1上的会话缓存中删除。
13. 记账停止的系统日志消息由PSN 1转发到MNT。
14. 会话ABC在MNT上标记为终止。
这描述了为长寿命VPN连接创建的虚拟会话场景:
1. PSN1上的初始身份验证。
2. 会话ABC在会话缓存中创建。
3. 记帐会启动PSN处理的消息。
4. 将新的IP地址分配给虚拟专用网络(VPN)适配器。
5. 带有IP地址信息的临时记帐更新到达PSN中。
6. 将IP地址信息添加到会话缓存中。
7. 对PSN1进行状态评估。
8. 状态在会话中更新。
9. ISE执行COA推送;这将触发要分配的新访问级别。
10. 网络路径出现中断,使PSN1无法访问。
11. 在临时更新间隔到期后,ASA/FTD检测到PSN1不可访问。
12. 中期会计更新发生在PSN2上。
13. 虚拟会话在PSN2会话缓存中创建。
如果PSN1稍后变为可访问(14),则所有后续记帐消息都在该处转发(15,16),并且这会在PSN2会话缓存中保留会话ABC一段未定义的时间。
要了解过时会话和虚拟会话如何中断安全评估,您可以查看AnyConnect ISE安全评估模块发现过程:
阶段1发现:
在此阶段,ISE终端安全评估模块执行4个同时问题,以定位对终端执行身份验证的PSN。
首先,图中的3个探测基于重定向(默认GW IP)。发现主机IP(如果已定义)和enroll.cisco.com IP;这些探测功能始终将代理指向正确的PSN,因为重定向URL取自NAD本身。
将向ConnectionData.xml文件中显示的所有主服务器发送探测编号4。 此文件在第一次成功的安全评估尝试后创建。如果客户端在PSN之间迁移,可以稍后更新文件内容。
在Windows系统上,文件位置是C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\ISE Posture\。
由于所有阶段1探测同时执行,因此仅当所有其他3个探测失败或ISE终端安全评估模块无法在5秒内与重定向URL中返回的PSN建立正确通信时,才会使用探测4的结果。
当探测器4到达PSN时,它包含终端上发现的活动IP和MAC地址列表。PSN使用此数据在本地缓存中查找此终端的会话。
如果PSN的终端会话已过期或幻像,则可能导致客户端稍后显示错误的终端安全评估状态。
当代理获取探测4的多个应答时(ConnectionData.xml可以包含多个主PSN),将始终使用最快的应答。
阶段2发现:
所有阶段2发现探测无重定向,这意味着每个探测都会触发目标PSN上的会话查找。
如果PSN无法在本地会话缓存中找到会话,则必须执行MNT查找(仅基于MAC地址)以查找会话所有者并将所有者名称返回到代理。
由于所有探测都会触发会话查找,因此由于过时或幻像会话导致的问题,第2阶段发现会受到更大的影响。
如果PSN进入第2阶段,会话缓存中存在的发现探测功能会为同一终端创建陈旧或幻像条目。这会导致错误的安全评估状态返回给最终用户。
该示例显示当PSN保留过时会话或幻像会话时状态如何发生:
注意:仅当所有基于重定向的发现探测失败或实施非重定向安全评估时,才会出现此问题。
1. 任何ISE终端安全评估模块发出的Find my session probe。
2. PSN在会话缓存中执行会话查找。如果要找到会话,则会出现陈旧或幻像会话问题。
3. PSN运行客户端调配策略选择。如果缺少身份验证/授权属性和客户配置的所有策略的虚拟会话非常具体(例如,为特定Active Directory组创建策略),则PSN无法分配正确的客户端调配策略。这可能显示在错误消息“Bypassing AnyConnect scan your network is configured to use Cisco NAC Agent”中。
4. 对于虚拟会话场景,ISE终端安全评估模块继续初始终端安全评估请求。此请求包含有关终端上检测到的所有安全和补丁管理产品的信息。
5. PSN使用来自请求和会话属性的信息来匹配正确的终端安全评估策略。由于此时幻像会话缺少属性,因此没有要匹配的策略。在这种情况下,PSN会响应其合规的终端。这是当安全评估策略不匹配时的默认ISE行为。
注意:当存在可从虚拟会话属性中选择的通用策略时,我们继续执行步骤6。
6. PSN将选定的安全评估策略返回给代理。
注意:当无法选择任何策略时,PSN将返回兼容状态。
7. 代理将每个策略/要求的状态返回为“通过”或“失败”。
8. 对ISE进行报告评估,并将会话状态更改为合规。
注意:如果出现由虚拟会话引起的终端安全评估问题,ISE管理员可能会注意到某些失败的终端安全评估COA。在这种情况下,会从错误的PSN和错误的会话ID执行COA请求。
ISE终端安全评估模块旨在监控终端上有限数量的事件,以触发发现进程。
触发发现的事件:
ISE终端安全评估模块未检测到新的dot1x身份验证、PC解锁和IP地址更改。
在以下情况下,ISE终端安全评估模块无法检测新的身份验证或重新身份验证尝试:
下图展示了由原始PSN中断导致的不同PSN上重新进行身份验证的示例。具有负载均衡器的场景看起来非常类似。
在负载均衡器的情况下,由于粘性计时器到期,重新身份验证被定向到不同的PSN。
1. PSN1上的初始身份验证
2. 在PSN1会话缓存中创建会话ABC。
3. 使用PSN1执行状态评估。
4. 会话ABS状态变为兼容。
5. COA由状态更改触发,导致终端重新身份验证以应用下一个访问级别。
6. PSN1变得不可用。
7. 会话ABC的重新身份验证命中PSN2。
8. 由于这是PSN2的新会话,因此会话的状态会变为挂起。
初始状态由PSN分配给会话:
注意:状态机仅描述初始状态选择。最初标记为Unknown的每个会话以后可能会根据从ISE终端安全评估模块收到的报告评估变为合规或不合规。
这种情况可能发生在两种最常见的情景中:
新的会话ID可以在某些其他极端情况下生成。例如,在某些情况下,无线漫游是造成这种情况的一个原因。
主要的一点是,除非配置了终端安全评估租用,否则ISE PSN总是会将新会话置于终端安全评估挂起状态。安全评估租期将在本文档后面部分进行说明。
确定AnyConnect在重定向状态时是否显示合规是由过期/幻像会话导致的。当终端处于有问题的状态时,我们需要获取对终端的访问权限。
1. 点击AnyConnect UI中的齿轮图标
2. 在新窗口中,定位至“系统扫描”>“统计信息”
在此,请注意以下两个要素:
演示显示识别问题所需步骤的记录:
以上示例用于将过时或幻像会话的问题与发现进程未启动的问题区分开来。
同时,我们需要确定触发问题的实际会话,以便更好地了解它究竟如何变成陈旧或幻像会话问题。
虽然在某些情况下,无法避免陈旧和幻像会话,但我们需要确保实施最佳实践,以便在环境中不创建任何陈旧/幻像会话。
分析从重现问题的终端获取的DART捆绑包。
为此,DART捆绑包实用程序需要以管理员身份启动并执行日志清除。
收集DART捆绑包后,将其取消存档并重点关注Cisco AnyConnect ISE终端安全评估模块文件夹中的AnyConnect_ISEPosture.txt文件。此文件包含所有与发现相关的事件。
1. 开始故障排除并确定发现重启的所有时刻。要搜索的关键字是Restarting Discovery或HTTP Discovery。 此处,导航至问题时刻发生的发现重启行:
2. 发现重启后有多行,其中有一行包含- 正在探测无MNT阶段目标。这是第1阶段发现开始的标志:
建议以不同颜色突出显示所有具有相同颜色的基于重定向的探测器和之前从ConnectionData.xml(身份验证状态目标)获取的PSN。
通常,PSN FQDN非常相似,很难找出差异。
3. 阅读日志文件,查看每次探测的结果。下面是失败探测的示例:
4. 对于阶段1或阶段2,在发现重启后的文件中的某个位置,您会看到一个或多个PSN的成功回复:
5. 几行后,都有一行带有关键字MSG_NS_SWISS_NEW_SESSION。
此行包含PSN在会话查找后选择的实际会话ID。
使用此会话ID在ISE上进行进一步调查,以确定此会话如何变成陈旧/幻影:
在clientwebapp组件启用到DEBUG的guest.log中,可以看到使用过时/幻像会话进行应答的PSN。
PSN从ISE终端安全评估代理获取请求。这是来自AnyConnect的请求,因为User-Agent值:
cisco.cpm.client.posture.PostureStatusServlet -::- Got http request from 192.168.255.228 user agent is: Mozilla/4.0 (compatible; WINDOWS; 1.2.1.6.1.48; AnyConnect Posture Agent v.4.6.03049)
cisco.cpm.client.posture.PostureStatusServlet -::- mac_list from http request ==> C0:4A:00:1F:6B:39
cisco.cpm.client.posture.PostureStatusServlet -::- iplist from http request ==> 192.168.255.228
cisco.cpm.client.posture.PostureStatusServlet -::- Session id from http request - req.getParameter(sessionId) ==> null
请求包含IP地址和MAC地址数组。在此特定示例中,每个数组仅包含一个值。
日志显示来自请求的会话ID为null,这表示这是来自非基于重定向的探测的请求。
之后,您可以看到如何使用来自数组的值来定位会话ID:
cpm.client.provisioning.utils.ProvisioningUtil -::- the input ipAddress from the list currently processed in the for loop ==> 192.168.255.228
cpm.client.provisioning.utils.ProvisioningUtil -::- the ipAddress that matched the http request remote address ==> 192.168.255.228
cpm.client.provisioning.utils.ProvisioningUtil -::- the clientMac from the macarray list for the for loop index matching the ipAddress list index ==> C0-4A-00-1F-6B-39
cisco.cpm.client.posture.PostureStatusServlet -::- Found Client IP matching the remote IP 192.168.255.228, corresponding mac address C0-4A-00-1F-6B-39
cpm.client.provisioning.utils.ProvisioningUtil -::- Session = 0a3e949c000000495c216240
在关键字为Sent http response的行之后,您可以看到来自实际回复的内容:
cisco.cpm.client.posture.PostureStatusServlet -::- Sent an http response to 192.168.255.228 with X-ISE-PDP=clemea19-ise1.demo.local.
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-PDP value is clemea19-ise1.demo.local
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-POSTURE value is /auth/perfigo_validate.jsp
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-POSTURE_PORT value is 8443
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-AC_PKG_PORT value is 8443
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-GUESTFLOW value is false
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-AC_CONFIG_URL value is https://clemea19-ise1.demo.local:8443/auth/anyconnect?uuid=f62337c2-7f2e-4b7f-a89a-3508d761173c
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-AC_CONFIG_URI value is /auth/anyconnect?uuid=f62337c2-7f2e-4b7f-a89a-3508d761173c
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-AC_PKG_URL value is https://clemea19-ise1.demo.local:8443/auth/provisioning/download/066ac0d6-2df9-4a2c-a129-fabf1ace36aa
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-AC_PKG_URI value is /auth/provisioning/download/066ac0d6-2df9-4a2c-a129-fabf1ace36aa
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-AC_PKG_VER value is 4.6.3049.0
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-STATUS_PATH value is /auth/status
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-BACKUP_SERVERS value is clemea19-ise2.demo.local
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-SessionId value is 0a3e949c000000495c216240
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-PostureDomain value is posture_domain
cpm.client.provisioning.utils.ProvisioningUtil -::- header X-ISE-POSTURE_STATUS value is Unknown
了解过时/幻像会话的ID后,您可以调查Radius记帐报告,以便更好地了解导致此会话成为过时/幻像的原因:
以下是一个报告示例,其中显示ciscolive-ise2上如何遗留过时的会话:
在这里,与上一期相同的逻辑同样适用。唯一的区别是需要重点关注“最新扫描开始时间”。对于此类问题,上次扫描的时间戳位于过去某处。
通常,当最终用户发现问题时,会看到一段时间前发生的扫描。在ISE Radius Live日志中,发现有问题的终端最近的身份验证尝试。
演示显示识别问题所需步骤的记录:
此处的方案与高级对过期/幻像会话进行故障排除部分非常相似。 主要故障排除要素是DART捆绑调查。
在DART捆绑包中,您可以搜索发现重新启动(如前一个问题中所示),并确认在报告问题的那一刻没有发现重新启动。
在ISE端,请重点查看Radius实时日志/ Radius身份验证报告,以确认PSN之间存在故障切换或NAD已生成新的会话ID。
过去,ISE上没有能够解决本文档中描述的问题的功能,因此唯一的方法是依靠在网络上实施的一组最佳实践,并且ISE端最大限度地降低风险。
尽可能始终实施基于重定向的状态
对此建议的一个常见反驳是用户体验不佳;操作系统或浏览器中出现弹出窗口。这表示在后台的AnyConnect ISE终端安全评估模块执行评估流程时的重定向。
作为此问题的解决方案,可以仅重定向ISE终端安全评估模块发现探测和有选择地允许所有其他流量。
本示例显示旨在仅将HTTP请求重定向到发现主机(本示例中为10.1.1.1)和enroll.cisco.com (172.16.1.80)的重定向ACL:
ip access-list extended REDIRECT-DH-ENROLL
permit tcp any host 10.1.1.1 eq www
permit tcp any host 172.16.1.80
deny ip any any
为了保持可接受的安全级别,此类重定向ACL可与从ISE分配的DACL结合使用。
Pending状态仅允许连接到终端经过身份验证的PSN
此方法适用于不支持URL重定向的环境(例如,使用第三方NAD的实施)。
作为解决方案,实施多个PosturePending授权策略(每个PSN一个)。每个策略需要包含进行身份验证的PSN名称作为条件之一。
在分配给每个策略的授权配置文件中,必须阻止对所有PSN的访问,进行身份验证的节点除外。
为2节点部署创建授权策略:
1. PSN1的状态挂起策略
2. 用作策略条件的PSN1名称。
3. 具有ACL的授权配置文件,阻止对除PSN1外的所有PSN的访问。
4. PSN2的状态挂起策略。
5. 用作策略条件的PSN2名称。
6. 具有ACL的授权配置文件,阻止对除PSN2外的所有PSN的访问。
7. 状态“兼容”授权策略。
下图说明了此方法的运作方式:
1. 身份验证命中PSN1。
2. 由于配置了授权策略,PSN1会向除PSN1之外的所有其他节点分配阻止访问的授权配置文件。
3. AnyConnect ISE终端安全评估模块重新启动发现过程。
4. 与之前分配的ACL一样,NAD阻止对PSN2的探测。
5. 在需要分配的ACL允许探测到PSN1。
负载均衡器最佳实践
Posture Over VPN使用案例
本示例显示为20小时配置的临时记帐更新间隔。这不会阻止携带分配给终端的IP地址的初始临时更新。
aaa-server ISE protocol radius
interim-accounting-update periodic 20
group-policy SSL-VPN attributes
vpn-idle-timeout 1200
vpn-session-timeout 1200
启用安全评估租用
这是ISE上的一项功能,可在定义的时间段(1-365天)内将终端标记为合规。终端安全评估租用值是终端属性,这意味着其存储为ISE数据库。
所有终端属性(包括终端安全评估租用)均在ISE部署中的所有节点上复制。
当PSN获得新的终端安全评估会话时,可以利用租用立即将会话标记为兼容。
为了做出此决策,PSN使用3个值。这些值包括:
1. 在ISE设置中为终端安全评估租用定义的天数:导航到管理>系统>终端安全评估>常规设置:
2. PostureExpiry属性的值是包含Epoch时间戳的实际终端属性。 在ISE管理员启用终端安全评估租用后,终端安全评估第一次成功尝试时会填充PostureExpiry值。
稍后,此值会在租用到期后进行的下一次成功安全评估尝试时更新。
当一个终端安全评估时,您会在Context Visibility > Endpoints中看到PostureExpiry:
此值可以转换为人类可读的时间戳,例如,此处- https://www.epochconverter.com/
3.进行新身份验证时的PSN系统时间
当终端安全评估租赁的身份验证到达PSN时,它使用PostureExpiry和系统日期获取上次成功的状态检查所经过的天数。
如果结果值在设置中定义的状态租用间隔内,则会话会获取兼容状态。
如果结果值高于租用值,会话将获得Unknown状态。
这会触发再次执行安全评估并且可保存新的PostureExpiry值。
下图描述了发生故障切换时的过程:
1. 对PSN1进行初始身份验证。
2. 会话ABC在会话缓存中创建。
3. 进行状态评估。
4. 会话状态更改为合规
5. COA由状态更改触发,导致终端重新身份验证以应用下一个访问级别。
6. PostureExpiry值保存在终端中。
7. 终端数据在部署中复制。
8. 下一次身份验证命中PSN2。
9. PSN2检查终端是否在有效的终端安全评估租用内。
11. 会话会作为兼容添加到会话缓存。
12. 由于有效租期,创建状态为Compliant的会话。
重新身份验证实施
请始终使用RADIUS-Request从ISE推送重新身份验证计时器,在Maintain Connectivity During Reauthentication中选择此计时器。 此设置可确保NAD在重新身份验证时保持相同的会话ID。
.
具有负载均衡器的环境
可以实施相同的一组最佳实践(在过时/幻像会话部分中说明)。
不同的子网可用于待定和合规状态
当网络设计提供机会使用不同的子网Pending和Compliant状态时,此方法确保每次状态更改都会导致默认网关更改。
与重新身份验证计时器相同的时间间隔内使用的状态评估
可以启用状态评估,间隔等于重新身份验证计时器。在这种情况下,当原始PSN变得不可用时,PRA故障将重新启动发现过程。
作为已实施的增强功能(在Cisco Bug ID CSCvi35647中进行了说明)的一部分,ISE 2.6的补丁6具有一项新功能,能够在ISE部署的所有节点间实现会话状态共享。
此增强功能已集成到未来版本中:ISE 2.7补丁2和ISE 3.0。
此新功能基于ISE 2.6中引入的轻量级会话目录(LSD)机制。在较新的版本中,此功能已重命名为轻量数据分发(LDD) Radius会话目录。 默认情况下启用轻量级数据分发,允许在ISE节点之间共享有限的会话情景。 在PSN之间不存在完整会话情景复制,每个会话仅共享有限数量的属性。
当部署中的一个节点必须确定当前会话所有者时,轻会话目录消除对MNT执行资源昂贵的API调用的需要。
大多数情况下,COA流启动时需要查找所有者。使用LDD,每个PSN可以从本地Radius会话目录缓存中找到会话的实际所有者。
此功能包含以下元素:
此缓存存在于每个ISE节点上并存储ISE部署中显示的所有活动会话。每个会话在缓存中具有有限数量的属性。
以下是每个会话的Radius会话目录中存储的属性示例:
在ISE部署中的每个节点上都形成了发布者、相关队列和使用者交换。这可确保所有ISE节点之间形成全网状拓扑。
Radius会话目录在此处表示发布者。当PSN处理新的成功身份验证时,会在PSN会话缓存中创建新会话。
对于此会话,会将一组有限的属性放入Radius会话目录中。
注意:常规RabbitMQ术语和体系结构不在本文档范围之内。
该图说明了COA流如何与RSD缓存配合工作:
1. 对PSN1进行初始身份验证。
2. 会话ABC在会话缓存中创建。
3. 将所需属性保存到RSD中。
4. 通过RabbitMQ与所有其他ISE节点共享会话。
5. 会话在所有ISE节点的RSD缓存中创建。
6. 新的配置文件数据到达PSN2。
7. 重新分析终端,并且(在需要COA执行PSN2的更改情况下)继续下一步。
8. 内部API调用将提交到RSD缓存以执行COA。
9. 来自RSD缓存的数据用于准备代理COA消息。它从一个ISE节点到另一个ISE节点,并包含目标节点可用于向NAD发回CAO请求的所有详细信息。COA消息首先在内部传输到PRRT运行时(ISE内的实际AAA服务器)。
10. PSN2向PSN1发送COA消息。
11. PSN1向需要发送COA消息。
要排除ISE上通过LDD进行的通信故障,请将Light Session Director 组件启用为DEBUG:
以下是来自lsd.log文件的调试消息示例,该消息用于在原始PSN上创建和发布:
DEBUG [pool-45-thread-6][] cisco.cpm.lsd.service.LSDRedisClient -::::- Mapping Session ID 0a3e9498000008e05e071990 to session {"sessionID":"0a3e9498000008e05e071990","endpointMAC":"C0-4A-00-1F-6B-39","callingStationId":"c0-4a-00-1f-6b-39","ipv6AdressLst":[],"psnIP":"192.168.43.26","deviceIP":"192.168.255.102","destinationIP":"192.168.43.26","nasIP":"192.168.255.102","auditSessionID":"0a3e9498000008e05e071990","acctSessionID":"5e07197b/c0:4a:00:1f:6b:39/2299","timeStamp":1577523495,"status":"Started","id":"614f6c44-6c78-4289-b9fd-b352ff012ca4"}
DEBUG [PrRTEvents-Executor-2][] cisco.cpm.lsd.service.LSDNetAccessEventListener -::::- Publishing session update for session 0a3e9498000008e05e071990
DEBUG [PrRTEvents-Executor-2][] cisco.cpm.lsd.service.SessionPublisher -::::- Forwarding session 07a26b4b-ea13-438b-99b5-0bbadc9d8bac to batch manager
在所有其他ISE节点上,您会看到会话的使用方式:
[pool-35-thread-38][] cisco.cpm.lsd.service.SessionConsumer -::::- Consumer is processing : sessionID:[0a3e9498000008e05e071990] status:[Started] id:[614f6c44-6c78-4289-b9fd-b352ff012ca4] auditSessionID:[0a3e9498000008e05e071990] accountingSessionID:[5e07197b/c0:4a:00:1f:6b:39/2299] endpointMAC:[C0-4A-00-1F-6B-39] callingStationId: [c0-4a-00-1f-6b-39] endpointIP:[null], IPv6 : [[]], psnIP:[192.168.43.26] deviceIP:[192.168.255.102] destinationIP:[192.168.43.26] nasIP:[192.168.255.102] nasIPv6:[null] timeStamp:[1577523495]
当根本原因是过时/幻像会话或不同PSN上的重新身份验证未触发发现重启时,状态共享可解决问题。
当会话变为合规时,此信息会置于会话RSD中,之后可供部署中的每个PSN使用。
还有一些其它角点情况上述特征无法解决。例如,当NAD在同一PSN上使用不同的会话ID运行重新身份验证时。
此类场景可使用本文档中描述的最佳实践来处理。
此图展示了用于测试状态共享状态的拓扑:
要创建过时会话,最初必须在skuchere-ise26-1上执行身份验证。然后,必须重新配置NAD以将记帐发送到skuchere-ise26-3。
将一条记帐消息转发到错误的PSN后,必须重新配置NAD(再次)以将记帐发送回skuchere-ise26-1。
图中演示了证明在skuchere-ise26-3上存在幻像会话的记帐报告:
1. skuchere-ise26-1处理的Accounting-Start消息。
2. skuchere-ise处理的同一会话的临时记帐更新26-3。
3. 会话稍后在skuchere-ise26-1上结束。
一段时间后,终端再次连接到网络,但重定向不再有效。在PSN的guest.log - skuchere-ise26-3中,您可以看到以下日志消息,并且在DEBUG中启用了client-webapp组件:
2020-04-08 13:30:48,217 DEBUG [https-jsse-nio-192.168.43.226-8443-exec-4][] cisco.cpm.client.posture.Util -::- Local session 0A3E946C0000007D5B679296 is stale. Newer session for 00-50-56-B6-0B-C6 is 0A3E946C000000805B7C43A3. Owned by skuchere-ise26-1.example.com
当PSN检测到它保留终端的过时/幻像会话时,它不会回复ISE终端安全评估模块,这使我们能够从发生最新身份验证的PSN获得正确答案。
作为会话查找时过期/幻像会话问题的解决方案,PSN会检查终端在RSD中是否存在任何新会话。
如果RSD包含的会话ID与PSN在本地会话缓存中的不同,则它假定会话(在会话缓存中显示)已过期。
为了重现此场景,在分配给合规状态终端的授权配置文件中启用了一个简短的重新身份验证计时器。
之后,NAD重新配置为将身份验证和记帐发送到另一个PSN (skuchere-ise26-3)。
当重新身份验证计时器到期时,同一会话不在不同PSN上进行身份验证。
图中显示身份验证报告,其中显示从skuchere-ise26-1到skuchere-ise26-3的同一会话的故障切换:
1. 在skuchere-ise26-1上进行身份验证,分配具有重定向的授权配置文件。
2. 状态评估成功后的COA。
3. 分配符合状态的授权配置文件时的下一个身份验证。
4. 身份验证到达不同的PSN,但它仍然获取合规状态的授权配置文件。
在启用了epm-pip和nsf-session组件进行DEBUG的情况下,在ise-psc.log中进行故障切换后,新PSN上的会话将处于兼容状态:
2020-04-09 11:06:42,176 DEBUG [Thread-7979][] cpm.nsf.session.impl.SessionCache -::::- Looking up session 0A3E946C000000896011D045 for attribute Session Session.PostureStatus
2020-04-09 11:06:42,176 DEBUG [Thread-7979][] cpm.nsf.session.api.ExecutionContext -::::- Execution context has session id 0A3E946C000000896011D045
2020-04-09 11:06:42,176 DEBUG [Thread-7979][] cpm.nsf.session.impl.PIPManager -::::- Returning a PIP com.cisco.cpm.nsf.session.impl.SessionPIP for type SESSION and flow null
2020-04-09 11:06:42,176 DEBUG [Thread-7979][] cpm.nsf.session.api.ExecutionContext -::::- Execution context has session id 0A3E946C000000896011D045
2020-04-09 11:06:42,176 DEBUG [Thread-7979][] cpm.nsf.session.impl.SessionCache -::::- Looking up session 0A3E946C000000896011D045
2020-04-09 11:06:42,176 DEBUG [SessionLifecycleNotifier][] cpm.nsf.session.internal.LRUAgingAlogrithm -::::- Accessed session 0A3E946C000000896011D045
2020-04-09 11:06:42,176 DEBUG [Thread-7979][] cpm.nsf.session.impl.SessionCache -::::- Returning for session 0A3E946C000000896011D045 data Attrs: {SavedUserNames=[bob@example.com], Acs.LastStepTime=1586423202174, Acs.AD-User-Qualified-Name=bob@example.com, Acs.AD-User-Resolved-DNs=CN=bob,CN=Users,DC=example,DC=com, Acs.StepData=[110=EXAMPLE, 111=bob@example.com, 112=example.com, 113=example.com, 115=example.com, 116=EXAMPLE], Acs.AD-Log-Id=[1585911138/4778, 1585911138/4779], __IntIdGrps__=[Ljava.lang.String;@6d3c29b5, IdentityGroup.Description=[Ljava.lang.String;@3fca88fb, EXAMPLE.ExternalGroups=S-1-5-21-875452798-754861120-3039794717-513, Acs.AD-Groups-Names=example.com/Users/Domain Users, Acs.AuthenCPMSessionID=0A3E946C000000896011D045, Acs.IsMachineAuthentication=false, InternalEndpoint.IdentityGroup=[Ljava.lang.String;@6daf4c5, IDStoreUserQueryCache=[EXAMPLE#bob@example.com], Acs.CurrentIDStoreName=EXAMPLE, Acs.AD-User-Join-Point=EXAMPLE.COM, Acs.Step=[24432, 24325, 24313, 24319, 24323, 24355, 24416], Acs.CustomerMessageDuplicator=, Network Access.WasMachineAuthenticated=false, IdentityGroup.Name=[Ljava.lang.String;@570ab37a, Acs.StepDataStart=110, Acs.AD-User-DNS-Domain=example.com, Network Access.AuthenticationMethod=4, Acs.AD-User-Resolved-Identities=bob@example.com, InternalUser.IdentityGroup=[Ljava.lang.String;@51a6caed, Acs.AuthenticationMethod=4, Acs.AD-User-NetBios-Name=EXAMPLE, Normalised Radius.RadiusFlowType=0, Network Access.AuthenticationIdentityStore=EXAMPLE, EXAMPLE.IdentityAccessRestricted=false, Acs.AD-User-SamAccount-Name=bob}
IndexValues: {}
2020-04-09 11:06:42,177 DEBUG [Thread-7979][] cisco.cpm.posture.pip.PostureStatusPIP -::::- set postureStatus based on posture LSD dictionary: Compliant
2020-04-09 11:06:42,177 DEBUG [Thread-7979][] cisco.cpm.posture.pip.PostureStatusPIP -::::- PostureStatusPIP for mac 00-50-56-B6-0B-C6 - Attribute Session.PostureStatus value is Compliant
通过在状态选择过程中添加额外的逻辑即可解决原始问题。
此图演示了已更改的内容(更改以红色突出显示):
版本 | 发布日期 | 备注 |
---|---|---|
2.0 |
31-May-2023 |
重新认证 |
1.0 |
22-Apr-2020 |
初始版本 |