본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 일반적인 ISE(Identity Service Engine) 상태 서비스 문제를 설명합니다. AnyConnect ISE 상태 모듈은 ISE의 세션 상태가 보류 중인 동안 규정 준수를 표시합니다.이 문제는 점점 더 인기를 끌고 있으며, 증상이 항상 동일하지만 이 문제의 근본 원인은 여러 가지가 있을 수 있습니다.이러한 문제의 트러블슈팅은 상당한 시간이 소요되어 심각한 영향을 미칠 수 있습니다.
이 문서에서는 다음 내용을 설명합니다.
나중에 설명하는 개념을 더 잘 이해하려면 다음 단계를 수행하는 것이 좋습니다.
이 문제는 일반적으로 네트워크 액세스가 없거나 브라우저에서 ISE 클라이언트 프로비저닝 포털에 대한 지속적인 리디렉션 및 동시에 AnyConnect ISE 상태 모듈이 상태 상태를 Compliant로 표시합니다.
일반적인 최종 사용자 환경:
일반적으로 이 문제의 초기 분류 중에 ISE 관리자는 ISE에 도달하는 실제 인증이 있는지 확인하기 위해 Radius Live 로그 조사를 수행합니다.이 단계에서 검색된 첫 번째 증상은 엔드포인트와 ISE 간의 상태 상태 상태 불일치를 나타냅니다(라이브 로그 또는 Radius 인증 보고서 엔드 포인트에 대한 마지막 성공 적 인 인증 이 상태 보류 중 상태 상태 상태 표시).
일반적인 ISE 관리 환경:
참고:c.d.설명된 문제 매니페스트에 항상 표시되는 것은 아닙니다.상태 규정 준수 상태의 세션 이벤트는 이 문서의 뒷부분에 설명되어 있는 오래된 세션 또는 팬텀 세션으로 인해 발생한 시나리오에서 더 일반적입니다.
이 문제는 일반적으로 두 가지 문제가 있는 시나리오에서 나타나며 각 시나리오에는 여러 근본 원인이 있을 수 있습니다.시나리오는 다음과 같습니다.
문제를 더 잘 이해하기 위해 ISE 세션 관리 로직 및 AnyConnect 검색 프로세스가 필요합니다.
ISE 구축에서는 세션 관리 프로세스를 담당하는 두 가지 페르소나가 있습니다.PSN 및 모니터링 노드(MNT). 이 문제를 적절하게 해결하고 식별하려면 두 페르소나의 세션 관리 이론을 이해하는 것이 중요합니다.
그림 MNT 노드에서 설명한 대로 PSN에서 오는 전달된 인증 Syslog 메시지를 기반으로 계절을 생성합니다.나중에 Syslog에서 어카운팅을 위해 세션 상태를 업데이트할 수 있습니다.
MNT에서 세션 제거는 3가지 시나리오에서 발생합니다.
PSN의 Syslog 메시지 예이러한 메시지는 런타임 aaa 구성 요소가 DEBUG에 활성화된 경우 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(Network Access Device) 특성, 인증서 특성 등과 같은 인증/권한 부여 단계 동안 수집된 모든 특성을 저장합니다.이러한 특성은 PSN에서 인증, 권한 부여, 클라이언트 프로비저닝, 포스처 등의 다른 정책 유형을 선택하는 데 사용됩니다.
노드 또는 노드 자체의 서비스가 다시 시작될 때 세션 캐시가 완전히 제거되었습니다.
현재 세션 처리 논리는 두 가지 시나리오에서 세션 캐시에 새 항목을 생성하며, NAD에서 오는 계정 메시지에서 나중에 기존 세션의 세부 정보를 업데이트할 수 있습니다.
세션 제거와 관련하여 PSN은 다음 논리를 구현합니다.
ISE 구축에서 기존 세션에 대한 계정 중지는 실제 인증을 수행하지 않은 PSN에 의해 처리되었습니다.
오래된 세션의 예:
1. 성공적인 인증은 PSN에서 세션 ABC에 대해 수행됩니다.
2. PSN은 세션 캐시에 항목을 생성합니다.
3. 상태 평가
4. 규정 준수로 표시된 세션
5. 상태 변경에 의해 트리거된 COA(Change of Authorization)는 엔드포인트의 재인증을 통해 다음 액세스 레벨을 적용합니다.
6. ABC 세션에 대한 계정 관리 중지는 PSN2에 옵니다.
6단계 세션 후 ABC는 이 PSN에서 이를 제거하기 위해 처리된 어카운팅 중지 메시지가 없으므로 PSN1의 부실 상태가 됩니다.구축에서 많은 인증 시도 횟수가 발생하지 않는 경우 오랫동안 세션을 제거하지 못할 수 있습니다.
오래된 세션은 다음 시나리오에서 PSN 세션 캐시에 나타날 수 있습니다.
LB(Load Balancer) 환경의 부실 세션의 예:
1. PSN 1이 수행하는 세션 ABC에 대한 초기 인증
2. 이 인증은 로드 밸런서에서 고착성 타이머를 시작합니다.
3. PSN 1은 로컬 캐시에 세션 ABC에 대한 입력을 생성합니다.
4. MNT 노드로 전송된 인증을 위한 syslog 메시지.
5. MNT 세션 디렉토리에 생성된 세션 ABC에 대한 입력(인증됨) 상태
6. PSN 1에 있는 ABC 세션에 대한 회계 시작 메시지
7. 회계-시작 정보로 갱신된 세션 ABC에 대한 세션 캐시 입력
8. MNT 노드로 전송된 Accounting-Start에 대한 Syslog 메시지
9. 세션 상태가 시작됨으로 업데이트되었습니다.
10. 고착성 타이머가 로드 밸런서에서 만료됩니다.
11. 로드 밸런서에서 PSN 2로 전달된 세션 ABC에 대한 회계 중지
12. PSN 2에서 MNT로 전달한 Accounting-Stop에 대한 Syslog 메시지
13. MNT에서 종료된 것으로 표시된 세션 ABC
Phantom 세션은 어카운팅 중간 업데이트가 이 특정 세션에 대한 인증을 수행하지 않은 PSN에 전달되는 시나리오입니다.이 시나리오에서는 PSN 세션 캐시에 새 항목이 생성되며, PSN이 이 세션에 대한 계정 중지 메시지를 받지 않으면 PSN이 활성 세션 제한에 도달하지 않으면 항목이 제거되지 않습니다.
Phantom 세션의 예:
1. ABC 세션에 대해 PSN1에서 오래된 세션 예에 설명된 것과 동일한 단계가 발생합니다.
2. 세션 ABC는 PSN1 세션 캐시에서 상태를 준수합니다.
3. ABC가 PSN2에 도달하는 세션에 대한 회계 중간 갱신
4. PSN2에 생성된 세션 ABC에 대한 세션 입력. 회계 메시지에서 생성된 세션 입력부터 속성 수가 제한됩니다.예를 들어, 상태 상태는 세션 ABC에 사용할 수 없습니다.사용자 그룹 및 기타 권한 부여 관련 특성 같은 것도 누락되었습니다.
다음 시나리오에서 Phantom 세션이 PSN 세션 캐시에 나타날 수 있습니다.
PSN1을 향하는 네트워크 경로에서 일시적인 문제가 발생한 시나리오에 대한 팬텀 세션의 예:
1. PSN에서 수행하는 세션 ABC에 대한 초기 인증
2. PSN1은 로컬 캐시에 세션 ABC에 대한 입력을 생성합니다.
3. MNT 노드로 전송된 인증을 위한 syslog 메시지.
4. TimesTen DB에 생성된 세션 ABC에 대한 입력(인증됨 상태).
5. PSN 1에 있는 ABC 세션에 대한 회계 시작 메시지
6. 회계-시작 정보로 갱신된 세션 ABC에 대한 세션 캐시 입력
7. MNT 노드로 전송된 Accounting-Start에 대한 Syslog 메시지
8. 세션 상태가 시작됨으로 업데이트되었습니다.
9. PSN2로 전달된 ABC 세션의 중간 회계 갱신
10. PSN2는 로컬 캐시에 세션 ABC에 대한 항목을 생성합니다.
11. PSN1에 전달된 세션 ABC에 대한 회계 중지
12. PSN1의 세션 캐시에서 세션 ABC에 대한 입력이 제거되었습니다.
13. PSN 1에서 MNT로 전달한 Accounting-Stop에 대한 Syslog 메시지.
14. MNT에서 종료된 것으로 표시된 세션 ABC입니다.
수명이 긴 VPN 연결을 위해 생성되는 팬텀 세션의 시나리오:
1. PSN1에 대한 초기 인증
2. 세션 캐시에 생성된 세션 ABC
3. 회계는 PSN에서 처리하는 메시지를 시작합니다.
4. VPN(Virtual Private Network) 어댑터에 할당된 새 IP 주소
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가 지정되지 않은 시간 동안 유지됩니다.
오래된 세션 및 Phantom 세션이 상태를 어떻게 중단할지 알아보려면 AnyConnect ISE 상태 모듈 검색 프로세스를 검토할 수 있습니다.
1단계 검색:
이 단계에서 ISE 상태 모듈은 엔드포인트에 대한 인증을 수행한 PSN을 찾기 위해 4개의 동시 문제를 실행합니다.
먼저, 그림의 프로브 3개는 리디렉션을 기반으로 합니다(기본 GW IP).검색 호스트 IP(정의된 경우) 및 enroll.cisco.com IP) - 이러한 프로브는 리디렉션 URL이 NAD 자체에서 가져오므로 항상 에이전트를 올바른 PSN으로 가리켜야 합니다.
프로브 번호 4는 ConnectionData.xml 파일에 표시되는 모든 주 서버로 전송됩니다. 클라이언트가 PSN 간에 마이그레이션될 경우 첫 번째 성공적인 포스처 시도 후에 생성된 이 파일과 이후 파일 콘텐츠를 업데이트할 수 있습니다.Windows 시스템에서 파일 위치는 C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\ISE Posture\입니다.
모든 단계 1 프로브가 동시에 실행되므로, 다른 3개의 프로브가 모두 실패했거나 ISE 포스처 모듈이 리디렉션 URL에서 반환된 PSN과 5초 이내에 적절한 통신을 설정할 수 없는 경우에만 프로브 4의 결과가 사용됩니다.
프로브 4가 PSN에 도착하면 엔드포인트에서 검색된 활성 IP 및 MAC 주소의 목록이 포함됩니다.PSN은 이 데이터를 사용하여 로컬 캐시에서 이 엔드포인트에 대한 세션을 찾습니다.PSN에 엔드포인트에 대한 오래된 또는 팬텀 세션이 있는 경우, 클라이언트 측에서 나중에 잘못된 상태 상태가 표시될 수 있습니다.
에이전트가 프로브 4에 대해 여러 응답을 가져오는 경우(ConnectionData.xml은 둘 이상의 기본 PSN을 포함할 수 있음) 가장 빠른 회신은 항상 사용됩니다.
2단계 검색:
모든 단계 2 검색 프로브는 리디렉션되지 않습니다. 즉, 모든 프로브가 대상 PSN에서 세션 조회를 트리거합니다.PSN이 로컬 세션 캐시에서 세션을 찾을 수 없는 경우 MNT 조회(MAC 주소 기반 전용)를 수행하여 세션 소유자를 찾고 상담원에게 소유자 이름을 반환해야 합니다.
모든 프로브가 세션 조회를 트리거할 때, 단계 2 검색은 부실 또는 팬텀 세션에서 발생하는 문제의 영향을 더 많이 받을 수 있습니다.
PSN이 2단계로 이동하면 세션 캐시에 있는 검색 프로브가 동일한 엔드포인트에 대해 오래된 항목이나 팬텀 항목을 생성합니다.그러면 최종 사용자에게 잘못된 상태 상태가 반환됩니다.
다음 예에서는 PSN이 오래된 세션 또는 팬텀 세션을 보관할 때 상태가 어떻게 발생하는지 보여줍니다.
참고:이 문제는 모든 리디렉션 기반 검색 프로브가 실패하거나 리디렉션이 아닌 상태가 구현된 경우에만 나타날 수 있다는 점을 기억해야 합니다.
1. ISE 상태 모듈에서 실행된 세션 프로브를 찾습니다.
2. PSN은 세션 캐시에서 세션 조회를 수행합니다.세션이 발견되면 오래된 세션 또는 팬텀 세션 문제가 발생합니다.
3. PSN은 클라이언트 프로비저닝 정책 선택을 실행합니다.예를 들어, 인증/권한 부여 특성이 없는 팬텀 세션과 고객이 구성한 모든 정책이 매우 구체적입니다(예를 들어 특정 Active Directory 그룹에 대해 정책이 생성됨). PSN에서 올바른 클라이언트 프로비저닝 정책을 할당하지 못할 수 있습니다.이는 "AnyConnect 스캔 우회 네트워크 이 Cisco NAC Agent를 사용하도록 구성되어 있음" 오류 메시지에서 나타날 수 있습니다.
4. 팬텀 세션 시나리오의 경우 ISE 포스처 모듈은 초기 포스처 요청을 계속 진행합니다.이 요청에는 엔드포인트에서 탐지된 모든 보안 및 패치 관리 제품에 대한 정보가 포함됩니다.
5. PSN은 요청 및 세션 속성의 정보를 적절한 상태 정책과 일치시키기 위해 사용합니다.이 시점에서 Phantom 세션에 특성이 없으므로 매칭할 정책이 없을 수 있습니다.이러한 경우 PSN은 정책 일치 상태가 아닌 경우 기본 ISE 동작이므로 규정 준수 엔드포인트에 응답합니다.
참고:Phantom 세션 속성에서 선택할 수 있는 몇 가지 일반 정책이 있는 경우, 6단계로 진행합니다.
6. PSN은 선택한 상태 정책을 다시 에이전트로 반환합니다.
참고:정책을 선택할 수 없는 경우 PSN은 Compliant 상태를 반환합니다.
7. 에이전트는 각 정책/요구 사항에 대해 통과 또는 실패한 상태를 반환합니다.
8. ISE에 대한 보고서 평가가 수행되고 세션 상태가 Compliant로 변경됩니다.
참고:팬텀 세션으로 인해 발생한 상태 문제의 경우 ISE 관리자는 일부 실패한 상태 COA를 확인할 수 있습니다. 이 경우 COA 요청이 잘못된 PSN에서 잘못된 세션 ID에서 실행되기 때문입니다.
검색 프로세스를 트리거하기 위해 엔드포인트에서 제한된 양의 이벤트를 모니터링하도록 설계된 ISE 상태 모듈.검색을 트리거하는 이벤트 목록:
새 dot1x 인증, PC 잠금 해제, IP 주소 변경은 ISE 상태 모듈에서 탐지되지 않습니다.
ISE 상태 모듈은 다음 시나리오에서 새 인증 또는 재인증 시도를 탐지할 수 없습니다.
원래 PSN의 중단으로 인해 다른 PSN에서 재인증의 예.로드 밸런서의 시나리오는 매우 유사합니다.LB의 경우 고착성 타이머 만료 결과로 다른 PSN으로 재인증합니다.
1. PSN1에 대한 초기 인증
2. PSN1 세션 캐시에 생성된 세션 ABC입니다.
3. PSN1을 이용한 상태 평가
4. 세션 ABS 상태 상태가 준수로 이동합니다.
5. 상태 변경에 의해 트리거된 COA는 엔드포인트의 재인증을 통해 다음 액세스 레벨을 적용합니다.
6. PSN1을 사용할 수 없게 됩니다.
7. 세션 ABC에 대한 재인증은 PSN2에 도달합니다.
8. 세션의 PSN2 상태 상태에 대한 새 세션이므로 보류 중 상태가 됩니다.
PSN에서 세션에 할당한 초기 상태 상태:
참고:상태 - 상태 상태의 초기 선택 사항만 설명합니다.처음에 Unknown(알 수 없음)으로 표시된 각 세션은 나중에 ISE 상태 모듈에서 받은 보고서 평가에 따라 Compliant(규정 준수) 또는 Non-Compliant(비준수)가 될 수 있습니다.
이는 가장 일반적인 두 가지 시나리오에서 발생할 수 있습니다.
새 세션 ID는 다른 일부 코너 케이스 시나리오에서 생성할 수 있습니다.예를 들어, 무선 로밍이 원인일 수 있습니다.여기서 중요한 것은 ISE PSN은 상태 임대가 구성되지 않는 한 항상 새 세션을 상태 보류 중 상태로 둡니다.상태 임대에 대해서는 이 문서의 뒷부분에서 설명합니다.
AnyConnect가 리디렉션 상태에 있는 동안 규정 준수가 부실/팬텀 세션으로 인해 발생하는지 여부를 식별하려면 문제가 있는 상태에 있는 동안 엔드포인트에 대한 액세스를 가져와야 합니다.
1. AnyConnect UI에서 기어 아이콘을 누릅니다.
2. 신규 창에서 시스템 스캔 탭 및 하위 탭 통계로 이동합니다.
여기서 두 가지 요소에 유의하십시오.
지정된 예시에서는 이름이 ciscolive-ise2인 PSN이 이 엔드포인트에 대해 오래된 세션 또는 팬텀 세션을 보유한다고 표시되는 이름 간에 불일치가 있습니다.
이 데모에서는 문제 식별에 필요한 단계 기록을 보여줍니다.
이전 예제는 오래된 세션 또는 가상 세션의 문제를 시작되지 않은 검색 프로세스의 문제와 차별화하는 것입니다.그와 동시에, 문제를 유발한 실제 세션을 식별하여 이 세션이 부실 또는 팬텀 세션 문제가 되는 방식을 더 정확하게 파악해야 할 수도 있습니다.
일부 시나리오에서는 오래된 세션과 Phantom 세션을 방지할 수 없습니다.일부 모범 사례가 구현되지 않아 환경에서 오래된/가상 세션이 생성되지 않도록 해야 합니다.
문제를 재현하는 엔드포인트에서 가져온 DART 번들을 분석합니다.
이를 위해서는 DART 번들 유틸리티를 관리자로 시작하여 로그 정리를 수행해야 합니다.
DART 번들이 수집되면 아카이빙을 해제하고 Cisco AnyConnect ISE Posture Module 폴더에 있는 AnyConnect_ISEPosture.txt 파일에 집중해야 합니다.이 파일에는 모든 검색 관련 이벤트가 포함되어 있습니다.
1. 검색이 다시 시작되는 모든 순간을 식별하여 문제 해결을 시작합니다.검색할 키워드는 검색 다시 시작 또는 HTTP 검색입니다. 여기서 문제가 발생한 시점에 발생한 검색 재시작이 있는 행으로 이동합니다.
2. 검색이 다시 시작된 후 몇 개의 행에 MNT 단계 대상을 탐색하는 행이 포함되어 있습니다.다음은 1단계 검색 시작 표시기입니다.
ConnectionData.xml에서 가져온 이전에 연결된 PSN(Auth-Status 대상)은 일반적으로 PSN FQDN이 매우 유사하고 차이점을 식별하기 어려운 경우 다른 색상으로 강조 표시되어야 하는 동안 동일한 색상으로 모든 리디렉션 기반 프로브를 강조 표시하는 것이 좋습니다.
3. 로그 파일을 따라 모든 단일 프로브에 대한 결과를 확인합니다. 오래된/팬텀 세션으로 인해 문제가 발생한 경우 이미 확인된 것처럼 모든 리디렉션 기반 프로브가 실패해야 합니다.다음은 실패한 프로브가 어떻게 표시되는지 보여주는 예입니다.
4. 1단계 또는 2단계 동안 검색이 다시 시작된 후 파일에 있는 하나 이상의 PSN에서 성공적으로 응답을 확인해야 합니다.
5. 뒤에 MSG_NS_SWISS_NEW_SESSION 키워드가 있는 라인이 몇 개 있어야 합니다. 이 라인에는 세션 조회의 결과로 PSN에서 선택한 실제 세션 ID가 포함됩니다.이 세션 ID를 사용하여 ISE에 대한 추가 조사를 수행하여 이 세션이 부실/팬텀이 되는 방법을 알아보십시오.
DEBUG에 clientwebapp 구성 요소가 활성화된 guest.log에서 Stale/Phantom 세션으로 응답하는 PSN을 볼 수 있습니다.
PSN은 ISE 상태 에이전트에서 요청을 가져옵니다.User-Agent 값으로 인해 AnyConnect의 요청임을 확인할 수 있습니다.
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 being 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 응답이 있는 줄 뒤에 실제 회신의 내용을 볼 수 있습니다.
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 어카운팅 보고서를 조사하여 이 세션이 부실/팬텀이 된 원인을 더 잘 이해할 수 있습니다.
Cisco-ise2에서 부실 세션이 남아 있는 방법을 보여 주는 보고서의 예:
여기서도 이전 문제와 동일한 논리가 적용됩니다.유일한 차이점은 Latest Scan Start Time(최신 스캔 시작 시간)에 초점을 맞춰야 한다는 것입니다.이 유형의 문제에서는 마지막 스캔의 타임스탬프가 과거가 됩니다.
일반적으로 엔드 유저가 문제를 발견하면 얼마 전에 발생한 스캔이 표시됩니다.ISE Radius Live 로그에서는 문제가 있는 엔드포인트의 최근 인증 시도가 표시됩니다.
아래 데모에서는 문제 식별에 필요한 단계 기록을 보여줍니다.
이 방법은 고급 문제 해결 부실/팬텀 세션 섹션과 매우 유사합니다. 주요 문제 해결 요소는 DART 번들 조사입니다.DART 번들 내에서 이전 문제에 대해 표시된 것처럼 검색 재시작을 검색하고 문제가 보고된 시점에 검색 재시작이 없었는지 확인할 수 있습니다.
ISE에서 Radius Live Logs/Radius 인증 보고서에 집중하여 PSN 간에 장애 조치가 발생했거나 NAD에서 새 세션 ID가 생성되었는지 확인합니다.
지금까지 이 문서에 설명된 문제를 해결할 수 있는 ISE에 대한 기능이 없으므로, 네트워크 및 ISE 측에서 구현되는 모범 사례에 의존하는 유일한 방법은 위험을 최소화하는 것이었습니다.
이 권장 사항에 대한 일반적인 반론은 사용자가 OS 또는 브라우저에서 리디렉션을 나타내는 팝업을 보고 백그라운드에서 AnyConnect ISE 포스처 모듈이 평가 프로세스를 수행하는 동안 잘못된 사용자 경험입니다.
이에 대한 해결책으로, ISE Posture 모듈 검색 프로브만 리디렉션하고 다른 모든 트래픽을 선택적으로 허용할 수 있습니다.
다음 예에서는 HTTP 요청만 검색 호스트(이 예에서는 1.1.1.1)으로 리디렉션하고 enroll.cisco.com(72.163.1.80)으로 리디렉션하도록 설계된 리디렉션 ACL을 보여 줍니다.
ip access-list extended REDIRECT-DH-ENROLL
permit tcp any host 1.1.1.1 eq www
permit tcp any host 72.163.1.80
deny ip any any
허용 가능한 보안 수준을 유지하기 위해 이러한 리디렉션 ACL을 ISE에서 할당된 DACL과 결합할 수 있습니다.
이 접근 방식은 URL 리디렉션이 지원되지 않는 환경(예: 타사 NAD를 사용한 구현)에 유용합니다.
하나의 솔루션으로 여러 PosturePending 권한 부여 정책을 구현해야 합니다(PSN당 하나). 각 정책은 인증이 발생한 PSN의 이름 조건 중 하나로 포함해야 합니다.인증이 발생한 노드를 제외하고 모든 PSN에 대한 각 정책 액세스에 할당된 권한 부여 프로파일에서 차단해야 합니다.
2개 노드 구축에 대한 권한 부여 정책을 생성합니다.
1. PSN1에 대한 상태 보류 중인 정책
2. 정책에서 조건으로 사용되는 PSN1 이름
3. PSN1을 제외한 모든 PSN에 대한 액세스를 차단하는 ACL의 권한 부여 프로파일
4. PSN2에 대한 상태 보류 정책
5. 정책에서 조건으로 사용되는 PSN2 이름
6. PSN2를 제외한 모든 PSN에 대한 액세스를 차단하는 ACL의 권한 부여 프로파일
7. 상태 '준수' 권한 부여 정책.
이 그림은 이 접근 방식이 어떻게 작동하는지 설명합니다.
1. 인증이 PSN1에 도달합니다.
2. 구성된 권한 부여 정책의 결과로 PSN1은 PSN1을 제외한 다른 모든 노드에 대한 액세스를 차단하는 권한 부여 프로파일을 할당합니다.
3. AnyConnect ISE 상태 모듈이 검색 프로세스를 재시작합니다.
4. 이전에 할당된 ACL에 의해 NAD에 의해 차단된 PSN2로 프로브
5. NAD에 할당된 ACL에서 허용하는 PSN1에 대한 프로브
아래 예는 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
이는 정의된 기간(1~365일)에 엔드포인트를 규정 준수 상태로 표시하는 ISE의 기능입니다. 상태 리스 값은 ISE DB를 저장 하는 엔드 포인트 특성입니다.상태 임대를 포함한 모든 엔드포인트 특성은 ISE 구축의 모든 노드에서 복제됩니다.
PSN이 엔드포인트 상태 임대에 대한 새 세션을 가져오는 경우 세션을 규정 준수로 즉시 표시할 수 있습니다.
이 결정을 내리기 위해 PSN은 3개의 값을 사용합니다.이러한 값은 다음과 같습니다.
Context Visibility(상황 가시성) > Endpoints(엔드포인트)에서 PostureExpiry(포스처 만료)를 확인하고 포스처 엔드포인트 중 하나를 열 수 있습니다.
이 값은 사람이 읽을 수 있는 타임스탬프로 변환할 수 있습니다(예: https://www.epochconverter.com/).
상태 임대가 있는 엔드포인트에 대한 인증이 PSN에 도달하면 PostureExpiry 및 시스템 날짜를 사용하여 마지막으로 성공한 상태 확인에서 경과된 일 수를 가져옵니다.결과 값이 설정에 정의된 상태 리스 간격 내에 있는 경우 세션은 규정 준수 상태를 가져옵니다.결과 값이 리스 값보다 크면 세션이 알 수 없음 상태를 가져옵니다.이렇게 하면 상태가 다시 실행되며 새 PostureExpiry 값을 저장할 수 있습니다.
이 그림에서는 장애 조치가 발생할 때의 프로세스에 대해 설명합니다.
1. PSN1에서 초기 인증이 수행됩니다.
2. 세션 캐시에 생성된 세션 ABC
3. 상태 평가
4. 세션 상태가 규정 준수로 변경됩니다.
5. 상태 변경에 의해 트리거된 COA는 엔드포인트의 재인증을 통해 다음 액세스 레벨을 적용합니다.
6. 엔드포인트에 저장된 PostureExpiry 값
7. 구축 전반에 걸쳐 복제된 엔드포인트 데이터
8. 다음 인증은 PSN2에 도달합니다.
9. PSN2는 엔드포인트가 유효한 상태 임대 내에 있는지 확인합니다.
11. 세션 캐시에 Compliant로 추가된 세션.
12. 유효한 임대로 인해 상태 규정 준수 상태로 세션이 생성되었습니다.
재인증 중에 연결 유지에서 RADIUS 요청을 선택한 ISE에서 항상 재인증 타이머를 푸시합니다. 이 설정을 사용하면 NAD가 재인증 시 동일한 세션 ID를 유지합니다.
.
오래된/가상 세션 섹션에서 설명한 것과 동일한 모범 사례를 구현할 수 있습니다.
네트워크 설계에서 서로 다른 서브넷 Pending(보류 중) 및 Compliant(규정 준수) 상태를 사용할 수 있는 기회를 제공할 때 이 접근 방식은 상태 상태의 모든 변경 사항이 기본 게이트웨이 변경을 발생한다는 것을 보증합니다.
재인증 타이머와 동일한 간격으로 상태 평가를 활성화할 수 있습니다.이 경우 원래 PSN을 사용할 수 없게 되면 PRA 오류가 검색 프로세스를 다시 시작합니다.
ISE 2.6용 CSCvi35647 패치 6에 설명된 개선 사항의 일환으로 ISE 구축의 모든 노드에서 세션 상태 상태 공유를 구현하는 새 기능을 얻었습니다.이러한 개선 사항은 향후 릴리스에 통합될 예정입니다.ISE 2.7 패치 2 및 ISE 3.0
이 새 기능은 ISE 2.6에 도입된 LSD(Light Session Directory) 메커니즘을 기반으로 합니다. 새 버전에서는 이 기능의 이름이 LDD(Light Data Distribution) RADIUS 세션 디렉터리로 바뀌었습니다. Light Data Distribution은 기본적으로 활성화되어 있으며 ISE 노드 간에 제한된 세션 컨텍스트를 공유할 수 있습니다. PSN 간 전체 세션 컨텍스트 복제 같은 것은 없으며 각 세션에 대해 제한된 양의 특성만 공유됩니다.
Light Session Directory의 주요 목적은 구축의 노드 중 하나가 현재 세션 소유자가 누구인지 파악해야 할 때 MNT에 대한 리소스 비용이 많이 드는 API 호출을 실행할 필요성을 없애는 것입니다.COA 플로우가 시작되면 주로 소유자 조회가 필요합니다.LDD를 통해 모든 PSN은 로컬 RADIUS 세션 디렉토리 캐시에서 세션의 실제 소유자를 찾을 수 있습니다.
이 기능에는 다음 요소가 포함됩니다.
참고: 일반 RabbitMQ 용어 및 아키텍처는 이 문서 범위를 벗어납니다.
이 그림은 RSD 캐시에서 COA 플로우가 작동하는 방식을 설명합니다.
1. PSN1에서 초기 인증이 수행됩니다.
2. 세션 캐시에 생성된 세션 ABC
3. 필수 속성이 RSD에 저장됩니다.
4. 다른 모든 ISE 노드와 RabbitMQ를 통해 공유된 세션
5. 모든 ISE 노드의 RSD 캐시에서 세션이 생성됩니다.
6. 새 프로파일링 데이터가 PSN2에 도착합니다.
7. 보고서를 생성하는 엔드포인트 및 COA 실행 PSN2가 필요한 변경 시 다음 단계를 수행합니다.
8. COA를 실행하기 위해 RSD 캐시에 제출된 내부 API 호출
9. 프록시 COA 메시지(하나의 ISE 노드에서 다른 노드로 이동하는 COA)를 준비하는 데 사용되는 RSD 캐시의 데이터. COA 메시지는 CAO 요청을 다시 NAD로 실행하는 데 사용할 수 있는 모든 세부 정보를 포함합니다. COA 메시지는 먼저 PRRT 런타임(ISE 내부의 실제 AAA 서버)에 내부적으로 전송됩니다.
10. PSN2는 PSN1에 COA 메시지를 전송합니다.
11. PSN1은 NAD에 COA 메시지를 전송합니다.
ISE에서 LDD를 통한 통신 문제를 해결하려면 Light Session Director 구성 요소를 DEBUG로 활성화할 수 있습니다.
원래 PSN에서 세션 생성 및 게시를 위해 lsd.log 파일에서 디버그 메시지의 예:
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]
노드 간 상태 공유는 'AnyConnect ISE 상태 모듈이 ISE의 세션 상태가 보류 중인 동안 규정 준수를 표시 하는 문제' 같은 증상을 해결 합니다. 근본적인 근본 원인이 Stale/Phantom 세션 또는 검색 재시작을 트리거하지 않은 원래 세션 ID가 있는 다른 PSN의 재인증.세션이 Compliant(규정 준수)가 되는 즉시 이 정보는 세션 RSD에 배치되며 나중에 구축의 모든 PSN에서 사용할 수 있습니다.
설명된 기능이 해결할 수 없는 다른 코너 케이스도 있습니다.예를 들어, NAD가 동일한 PSN에서 다른 세션 ID로 재인증을 실행할 경우 시나리오가 발생합니다.이러한 시나리오는 이 문서에 설명된 모범 사례를 구현하여 처리할 수 있습니다.
이 그림은 상태 공유 테스트에 사용되는 토폴로지를 보여줍니다.
오래된 세션 인증을 생성하기 위해 먼저 skuchere-ise26-1 이상에서 NAD가 계정 관리를 skutele-ise26-3으로 전송하도록 재구성되었습니다. 계정 메시지 하나가 잘못된 PSN에 전달되고 계정 관리를 다시 skuter-ise26-1로 전송하도록 다시 구성되었습니다.
이 그림은 skuchere-ise26-3에서 팬텀 세션이 있음을 증명하는 회계 보고서를 보여줍니다.
1. Accounting-Start 메시지가 skuchere-ise26-1에 의해 처리됩니다.
2. skuchere-ise26-3에 의해 처리되는 동일한 세션에 대한 임시 회계 갱신
3. 세션이 나중에 skuchere-ise26-1에서 종료됩니다.
잠시 후에 엔드포인트가 네트워크에 다시 연결되지만 리디렉션이 더 이상 작동하지 않습니다.PSN의 guest.log - skucherere-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에 로컬 세션 캐시에 있는 PSN과 다른 세션 ID가 포함된 경우 세션 캐시에 있는 세션이 오래된 것으로 가정합니다.
이 시나리오를 재현하기 위해 규정 준수 상태의 엔드포인트에 할당된 권한 부여 프로파일에서 짧은 재인증 타이머가 활성화되었습니다.이후 NAD는 다른 PSN에 인증 및 어카운팅을 전송하도록 재구성되었습니다(skuteere-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
상태 선택 프로세스에 추가 로직을 추가하여 원래 문제가 해결되었습니다.이 그림은 변경된 내용을 보여줍니다(빨간색으로 강조 표시됨).