本文檔描述常見身份服務引擎(ISE)終端安全評估服務問題,如「AnyConnect ISE終端安全評估模組顯示合規……」
本文檔描述常見身份服務引擎(ISE)終端安全評估服務問題:「AnyConnect ISE終端安全評估模組在ISE上的會話狀態為掛起時顯示合規性。」
雖然症狀始終相同,但是此問題的根源有多種。通常,像這樣的問題進行故障排除會非常耗時,從而造成嚴重影響。
本檔案將說明:
有關下文所述概念的更好解釋,請參閱Pre和Post 2.2的ISE終端安全評估樣式比較
此問題通常表現為瀏覽器中沒有網路訪問或持續重定向到ISE客戶端調配門戶,同時AnyConnect ISE終端安全評估模組將終端安全評估狀態顯示為Compliant。
典型的終端使用者體驗:

最初對此問題進行診斷時,ISE管理員開始調查Radius Live日誌,以確保身份驗證命中ISE。在此階段發現的第一個症狀表示即時日誌中終端和ISE之間的狀態狀態不匹配。或者,Radius身份驗證報告終端上一次成功身份驗證顯示Pending狀態狀態。
典型的ISE管理員體驗:

此問題通常出現在兩個有問題的場景中,並且每個場景都有多個根本原因。場景:
AnyConnect中的ISE終端安全評估模組具有觸發發現進程的有限數量的事件。在身份驗證或重新身份驗證期間,可能未檢測到這些事件。
為了更好地瞭解問題,請調查所需的ISE會話管理邏輯和AnyConnect發現流程。
在ISE部署中,有兩個人員負責會話管理流程:PSN和監控節點(MNT)。 要正確排除故障並確定問題,必須瞭解兩個角色上的會話管理理論。

如本圖所述,MNT節點根據來自PSN的經過身份驗證的系統日誌消息建立季節。以後可以通過系統日誌更新會話狀態以記帳。
MNT上的會話刪除在三種情況下發生:
1.未計帳開始的會話在建立後約60分鐘即被刪除。每5分鐘執行一個cron作業以檢查會話狀態和進行清理。
2.已終止的會話在被同一個cron作業處理了記帳停止後約15分鐘刪除。
3.每次執行時相同的cron會刪除超過5天(120小時)處於「已啟動」狀態的會話。「已啟動」狀態表示MNT節點已處理身份驗證和記帳以啟動Syslog會話。
附註:這是正常的MnT清理計時器,不保證牆時鐘刪除時間。在以下情況下,刪除操作可能會延遲:
來自PSN的系統日誌消息示例:
當runtime-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中沒有一種機制可以執行從一個節點到另一個節點的完整會話狀態複製。
對於每個活動會話ID,PSN儲存身份驗證/授權階段收集的所有屬性(例如,內部/外部使用者組、網路接入裝置(NAD)屬性、證書屬性等)。 PSN使用這些屬性來選擇不同的策略型別,例如身份驗證、授權、客戶端調配和狀態。
重新啟動節點(或節點上的服務)後,會話快取將被完全刪除。

當前會話處理邏輯在兩個場景中在會話快取中建立一個新條目。現有會話的後續詳細資訊可以從來自NAD的記帳消息更新。
在ISE部署中,未執行實際身份驗證的PSN已處理現有會話的記帳停止:
陳舊會話示例:

之後,ABC在PSN1上陷入陳舊狀態,因為此PSN上未處理會計停止消息以將其刪除。如果部署未遇到大量身份驗證嘗試,則會刪除會話。
在以下情況下,過時會話將顯示在PSN會話快取中:
負載平衡器(LB)環境中過時會話的示例:

幻像會話是會計臨時更新到達PSN但未對該會話執行身份驗證的場景。在此方案中,在PSN會話快取中建立一個新條目。如果PSN沒有收到此會話的記帳停止消息,則不會刪除該條目,除非PSN達到活動會話的限制。
虛擬會話示例:

在以下情況下,虛擬會話顯示在PSN會話快取中:
下一個螢幕截圖是一個幻像會話示例,其中指向PSN1的網路路徑上出現臨時問題:

這說明了為長壽VPN連線建立的虛擬會話場景:

如果PSN1之後變得可訪問(14),則所有後續的記帳消息被轉發(15,16),這將在PSN2會話快取中保留會話ABC一段未定義的時間。
要瞭解陳舊會話和幻像會話如何中斷狀態,您可以檢視AnyConnect ISE狀態模組發現流程:

階段1發現:
在此階段,ISE終端安全評估模組執行四個同時探測以定位對終端進行身份驗證的PSN。
首先,圖中的三個探測是基於重定向的(預設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探測都同時執行,因此僅當所有其它三個探測都失敗或ISE終端安全評估模組在5秒內無法與重定向URL中返回的PSN建立正確通訊時,才會使用探測器4的結果。
在PSN上探查四個地址時,它包含在終端上發現的有效IP和MAC地址清單。PSN使用此資料在本地快取中查詢此終結點的會話。如果PSN的端點有一個陳舊或幻像會話,則可能導致在客戶端稍後顯示錯誤的狀態狀態。
當代理收到探測四的多個應答時(ConnectionData.xml可包含多個主PSN),將始終使用最快的應答。
階段2發現:
所有階段2發現探測都無重定向,這意味著每個探測都會觸發目標PSN上的會話查詢。如果PSN無法在本地會話快取中找到會話,則必須執行MNT查詢(僅基於MAC地址)以查詢會話所有者並將所有者名稱返回給代理。
由於所有探測都會觸發會話查詢,因此階段2發現可能會受到因過時或幻像會話而導致的問題嚴重影響。
如果PSN移動到階段2,則存在於會話快取中的發現探測將為同一端點建立一個過時或幻像條目。這會導致錯誤的安全狀態返回給終端使用者。
此示例顯示當PSN保留過時會話或虛擬會話時狀態如何顯示:

4.對於幻像會話場景,ISE終端安全評估模組繼續執行初始終端安全評估請求。此請求包含有關在端點上檢測到的所有安全和修補程式管理產品的資訊。
5. PSN使用來自請求和會話屬性的資訊來匹配正確的狀態策略。此時,幻像會話缺少屬性,並且沒有要匹配的策略。在這種情況下,PSN會回復到其符合的端點。如果終端安全評估策略不匹配,這是預設ISE行為。
6. PSN將選定的狀態策略返回給代理。
7.代理會將每個策略/需求的狀態返回為「已通過」或「失敗」。
8.報告評估在ISE上進行,會話狀態更改為Compliant。
ISE終端安全評估模組用於監控終端上有限數量的事件以觸發發現流程。
觸發發現的事件:
在以下情況下,ISE終端安全評估模組無法檢測新的身份驗證或重新身份驗證嘗試:
此圖說明由原始PSN中斷導致的不同PSN上的重新身份驗證示例。具有負載平衡器的方案看起來類似。在負載均衡器的情況下,由於粘性計時器過期,重新認證被定向到不同的PSN。

PSN將初始狀態分配給會話:

這可以在兩種最常見的情形下發生:
確定AnyConnect在重定向狀態時是否顯示合規性是由過期/幻像會話引起的。當終端處於有問題的狀態時,必須獲得對終端的訪問許可權。
調查系統掃描詳細資訊
1.按一下AnyConnect使用者介面中的齒輪圖示。

2.在新視窗中,定位至「系統掃描」>「統計資訊」。

接下來,請注意兩個重要因素:

此演示顯示問題識別所需步驟的記錄:
上一個示例將陳舊或幻像會話問題與未啟動的發現進程問題區分開來。同時,您必須確定觸發問題的實際會話,瞭解它如何變成陳舊或幻像會話問題。雖然在某些情況下無法避免陳舊和幻像會話,但必須確保實施最佳實踐,以防止在環境中建立陳舊/幻像會話。
分析從重現問題的終端獲取的DART捆綁包。

4.在第一個嚮導螢幕上,按一下下一步。
5.在下一個嚮導螢幕上,按一下清除所有日誌。
6.重現問題後,可從此處收集DART;按一下下一步。
收集DART捆綁包後,將其取消存檔,並集中處理Cisco AnyConnect ISE終端安全評估模組資料夾中的AnyConnect_ISEPosture.txt檔案。此檔案包含所有與發現相關的事件。

1.開始故障排除並確定發現重啟的所有時刻。要搜尋的關鍵字是Restarting Discovery或HTTP Discovery。導航到在出現問題的時刻重新啟動發現資料的行:

2.在發現重新啟動後的幾行中,有一行包含Probing no MNT stage targets (這是第1階段發現啟動的指示符):

3.建議以不同顏色突出顯示從ConnectionData.xml(Auth-Status目標)獲取的所有具有相同顏色且先前已連線的PSN的基於重定向的探測器。通常PSN FQDN是相似的,可能很難發現差異。
4.讀取日誌檔案以檢視每個探測的結果(下面是失敗的探測的顯示示例):

5.在搜尋重新啟動第1階段或第2階段後,您會看到來自一個或多個PSN的成功回覆:

5.後面幾行中,有一行帶有關鍵字MSG_NS_SWISS_NEW_SESSION。此行包含實際會話ID,該實際會話ID由PSN在會話查詢後選定。使用此會話ID對ISE進行進一步調查,以確定會話如何變成陳舊/幻像:

1.在將client-webapp元件啟用到DEBUG的guest.log中,PSN會使用過時的/幻像會話進行回覆,可見該會話。
2. 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
3.請求包含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
4.在包含關鍵字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記帳報告,以便更好地瞭解導致會話過期/幻像的原因:
2.以下是顯示如何在ciscolive-ise2上保留過時會話的報告的示例:

同樣的邏輯也適用於上一個問題,但是,唯一的區別是,您必須將焦點放在「Latest Scan Start Time(最新掃描開始時間)」上。對於此類問題,上次掃描的時間戳為過去。
一般情況下,終端使用者發現問題時,就會進行掃描。在ISE Radius Live日誌中,會看到有問題的終端最近的身份驗證嘗試。
此演示顯示了問題識別所需步驟的記錄:
此方法類似於高級故障排除陳舊/幻像會話部分。主要故障排除元素是DART捆綁調查。
在DART捆綁包中,您可以搜尋發現重新啟動(如前一個問題所示),並確認報告問題時沒有發現重新啟動。
在ISE端,關注Radius Live Logs/ Radius身份驗證報告,以確認PSN之間出現故障切換,或由NAD生成新的會話ID。
過去,ISE沒有解決本文檔中所述問題的功能,因此,唯一的方法是依靠在網路和ISE端實施的一組最佳實踐來最大程度降低風險。
儘可能始終實施基於重定向的終端安全評估
此建議的一個常見反引數是作業系統或瀏覽器中出現不良的使用者體驗。這表示當後台的AnyConnect ISE終端安全評估模組執行評估流程時進行重定向。
作為解決方案,可以僅重定向ISE終端安全評估模組發現探測並選擇性地允許所有其他流量。此範例顯示重新導向ACL,其設計為僅將HTTP要求重新導向到探索主機(此範例中為10.1.1.1)和enroll.cisco.com(172.16.1.80):
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。
掛起狀態僅允許連線到終端經過身份驗證的PSN
此方法適用於不支援URL重定向的環境(通過第三方NAD實施)。
作為解決方案,實施多個狀態掛起授權策略(每個PSN一個)。 每個策略必須包含進行身份驗證的PSN名稱作為條件之一。在授權配置檔案中,必須阻止所有PSN(發生身份驗證的節點除外)。
為兩個節點建立授權策略:

下圖說明了此方法的運作方式:

負載平衡器最佳實踐
確保accounting-interim更新間隔大於或等於vpn-session-timeout。這樣可以最大程度地減少長VPN會話期間PSN之間的記帳抖動。 此示例顯示為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天)。 Posture租用值是終端屬性,這意味著它儲存在ISE DB上。包括狀態租賃的所有終端屬性在ISE部署中的所有節點上複製。
當PSN收到終端的新會話時,可利用狀態租賃立即將該會話標籤為Compliant。為了做出此決定,PSN使用3個值,這些值為:

2. PostureExpiry屬性的值是包含Epoch時間戳的終端屬性。在ISE管理員啟用終端安全評估租約之後,在終端第一次成功進行終端安全評估嘗試時初始填充PostureExpiry值。稍後,在租約到期後進行的下一次成功狀態嘗試時,會更新此值。開啟其中一個姿勢端點時,您可在Context Visibility > Endpoints中看到PostureExpiry:

3.此值可以轉換為人類可讀的時間戳,例如,此處 — https://www.epochconverter.com/

3.當具有狀態租賃的終結點的身份驗證到達PSN時,它使用PostureExpiry和系統日期來檢索上次成功狀態檢查所經過的天數。如果結果值在設定中定義的狀態租用間隔內,則會話會收到Compliant狀態。如果結果值大於租用值,則會話會收到Unknown狀態。這將觸發再次執行安全評估並且可儲存新的PostureExpiry值。
此圖說明發生故障轉移時的過程:

始終使用RADIUS-Request(在Maintain Connectivity During Reauthentication中選擇)從ISE推送重新身份驗證計時器。此設定確保在重新身份驗證時保持相同的會話ID。

可以實施相同的一組最佳實踐(在過時/幻像會話部分中說明)。
不同的子網可用於掛起狀態和合規狀態
當網路設計提供使用不同子網的機會(如Pending和Compliant狀態)時,此方法可保證終端安全評估狀態的每次更改都會導致預設網關的變化。
與重新身份驗證計時器相同的時間間隔內使用的狀態評估
可以使用等於重新驗證計時器的時間間隔啟用狀態評估。當原始PSN不可用時,PRA故障將重新啟動發現過程。
作為ISE 2.6的已實施增強功能(在Cisco錯誤ID CSCvi35647)補丁6的一部分,ISE部署中的所有節點間實現會話狀態狀態共用的新功能。
此增強功能已整合到ISE 2.7補丁2和ISE 3.0的未來版本中。
此新功能基於ISE 2.6中引入的輕量級會話目錄(LSD)機制。在較新版本中,此功能被重新命名為輕量級資料分發(LDD)Radius會話目錄。預設情況下啟用輕型資料分發,並允許在ISE節點之間共用有限的會話上下文。PSN之間沒有完整的會話上下文複製,每個會話僅共用有限數量的屬性。
當部署中的一個節點必須確定當前會話所有者時,輕會話目錄就無需執行對MNT的資源昂貴API呼叫。啟動COA流時,需要查詢所有者。使用LDD,每個PSN都可以從本地Radius會話目錄快取中找到會話的所有者。
此功能包含以下元素:
附註:常規RabbitMQ術語和體系結構不在本文檔範圍之內。
下一個示例解釋了COA流如何與RSD快取配合作:

要在ISE上排除通過LDD的通訊故障,請將Light-Session-Directory元件啟用為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上存在幻像會話:

端點連線到網路,但重定向不再有效。在skuchere-ise26-3的PSN的guest.log中,可以在啟用了client-webapp元件的DEBUG中檢視以下日誌消息:
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的同一會話的故障轉移:

在ise-psc.log中故障切換後,會話在新PSN上處於相容狀態,其中epm-pip和nsf-session元件已啟用到DEBUG:
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
通過在狀態選擇流程中新增額外邏輯來解決原始問題。此圖顯示了發生變化的內容(以紅色突出顯示的更改):

| 修訂 | 發佈日期 | 意見 |
|---|---|---|
3.0 |
25-Aug-2026
|
已更新標題、拼寫、語法、插入水平線以分隔各個部分(可讀性、固定URL、CCW警報和替代文字)。 |
2.0 |
31-May-2023
|
重新認證 |
1.0 |
22-Apr-2020
|
初始版本 |