本文檔介紹RSA Authentication Manager(可與思科自適應安全裝置(ASA)和思科安全訪問控制伺服器(ACS)整合)的故障排除過程。
RSA Authentication Manager是一個提供一次性密碼(OTP)進行身份驗證的解決方案。該密碼每60秒更改一次,且只能使用一次。它同時支援硬體和軟體令牌。
思科建議您瞭解以下主題的基本知識:
本檔案中的資訊是根據以下軟體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
可以使用RADIUS或專有的RSA協定訪問RSA伺服器:SDI。ASA和ACS都可以使用這兩種協定(RADIUS、SDI)來訪問RSA。
請記住,使用軟體令牌時,RSA可以與Cisco AnyConnect安全移動客戶端整合。本文檔僅重點介紹ASA和ACS整合。有關AnyConnect的詳細資訊,請參閱Cisco AnyConnect安全移動客戶端管理員指南3.1版中的使用SDI身份驗證部分。
與SDI相比,RADIUS有一個很大的優勢。在RSA上,可以將特定配置檔案(在ACS上稱為組)分配給使用者。這些配置檔案定義了特定的RADIUS屬性。身份驗證成功後,從RSA返回的RADIUS-Accept消息包含這些屬性。ACS根據這些屬性做出其他決定。最常見的情況是決定使用ACS組對映將與RSA上的配置檔案相關的特定RADIUS屬性對映到ACS上的特定組。使用此邏輯,可以將整個授權過程從RSA移動到ACS,並且仍然可以保持精細的邏輯,如RSA上的邏輯。
相較於RADIUS,SDI有兩個主要優勢。第一個是整個作業階段已加密。第二個是SDI代理提供的有趣選項:可以確定建立失敗是因為身份驗證或授權失敗還是因為未找到使用者。
ACS在操作中使用此資訊獲取身份。例如,它可以繼續執行「未找到使用者」操作,但拒絕「身份驗證失敗」操作。
RADIUS和SDI之間還有一個差異。當ASA等網路接入裝置使用SDI時,ACS僅執行身份驗證。使用RADIUS時,ACS會執行驗證、授權、記帳(AAA)。 不過,這並不是什麼大區別。可以配置SDI進行身份驗證,RADIUS進行相同會話的記帳。
預設情況下,SDI使用使用者資料包協定(UDP)5500。SDI使用與RADIUS金鑰類似的對稱加密金鑰來加密會話。該金鑰儲存在節點金鑰檔案中,並且對於每個SDI客戶端都是不同的。該檔案可手動或自動部署。
對於自動部署節點,在第一次成功身份驗證之後自動下載機密檔案。使用從使用者的密碼和其它資訊匯出的金鑰加密節點金鑰。這會產生一些可能的安全問題,因此第一次身份驗證應該在本機執行,並使用加密協定(Secure Shell [SSH],而不是telnet),以確保攻擊者無法攔截和解密該檔案。
在Users and Identity Stores > External Identity Store > RSA Secure ID Token Servers中配置。
RSA有多個副本伺服器,例如ACS的輔助伺服器。不需要將所有地址都放在此處,只需輸入RSA管理員提供的sdconf.rec檔案。此檔案包括主RSA伺服器的IP地址。在第一個成功的身份驗證節點之後,會隨所有RSA複製副本的IP地址一起下載機密檔案。
若要區分「未找到使用者」和「身份驗證失敗」,請在Advanced頁籤中選擇設定:
還可以在多個RSA伺服器(主伺服器和複製副本)之間更改預設路由(負載平衡)機制。 使用RSA管理員提供的sdopts.rec檔案更改它。在ACS中,它會上傳到使用者和身份庫>外部身份庫> RSA安全ID令牌伺服器> ACS例項設定中。
對於群集部署,應複製配置。第一次成功身份驗證後,每個ACS節點使用從主RSA伺服器下載的自己的節點金鑰。請務必記住為群集中的所有ACS節點配置RSA。
ASA不允許上傳sdconf.rec檔案。與ACS一樣,它僅允許自動部署。需要手動配置ASA以指向主RSA伺服器。不需要密碼。在第一個成功的身份驗證節點之後,將安裝金鑰檔案(快閃記憶體上的.sdi檔案),並且保護其他身份驗證會話。另外,還會下載其他RSA伺服器的IP地址。
以下是範例:
aaa-server SDI protocol sdi
aaa-server SDI (backbone) host 1.1.1.1
debug sdi 255
test aaa auth SDI host 1.1.1.1 user test pass 321321321
身份驗證成功後,show aaa-server protocol sdi或show aaa-server <aaa-server-group>命令會顯示所有RSA伺服器(如果有多個伺服器),而show run命令僅顯示主IP地址:
bsns-asa5510-17# show aaa-server RSA
Server Group: RSA
Server Protocol: sdi
Server Address: 10.0.0.101
Server port: 5500
Server status: ACTIVE (admin initiated), Last transaction at
10:13:55 UTC Sat Jul 27 2013
Number of pending requests 0
Average round trip time 706ms
Number of authentication requests 4
Number of authorization requests 0
Number of accounting requests 0
Number of retransmissions 0
Number of accepts 1
Number of rejects 3
Number of challenges 0
Number of malformed responses 0
Number of bad authenticators 0
Number of timeouts 0
Number of unrecognized responses 0
SDI Server List:
Active Address: 10.0.0.101
Server Address: 10.0.0.101
Server port: 5500
Priority: 0
Proximity: 2
Status: OK
Number of accepts 0
Number of rejects 0
Number of bad next token codes 0
Number of bad new pins sent 0
Number of retries 0
Number of timeouts 0
Active Address: 10.0.0.102
Server Address: 10.0.0.102
Server port: 5500
Priority: 8
Proximity: 2
Status: OK
Number of accepts 1
Number of rejects 0
Number of bad next token codes 0
Number of bad new pins sent 0
Number of retries 0
Number of timeouts 0
本節提供的資訊可用於對組態進行疑難排解。
在許多情況下,安裝新的ASA或更改ASA IP地址後,很容易忘記在RSA上進行同樣的更改。需要為所有訪問RSA的客戶端更新RSA上的代理IP地址。然後,生成新的節點金鑰。這同樣適用於ACS,尤其是輔助節點,因為它們具有不同的IP地址,RSA需要信任它們。
有時ASA或RSA上的加密節點檔案會損壞。然後,最好刪除RSA上的代理配置並再次新增。您還需要在ASA/ACS上執行相同的流程 — 再次刪除和新增配置。此外,刪除快閃記憶體中的.sdi檔案,以便在下次身份驗證時安裝新的.sdi檔案。一旦完成自動節點金鑰部署,應立即進行。
有時某個節點處於掛起模式,這是因為該伺服器沒有響應造成的:
asa# show aaa-server RSA
<.....output ommited"
SDI Server List:
Active Address: 10.0.0.101
Server Address: 10.0.0.101
Server port: 5500
Priority: 0
Proximity: 2
Status: SUSPENDED
在掛起模式下,ASA不會嘗試向該節點傳送任何資料包;它需要具有OK狀態。在失效計時器之後,故障伺服器再次進入活動狀態。有關詳細資訊,請參閱Cisco ASA系列命令參考 9.1指南中的 reactivation-mode命令部分。
在這種情況下,最好刪除並新增該組的AAA伺服器配置,以便再次將該伺服器觸發到活動模式。
多次重試後,RSA可能會鎖定該帳戶。它很容易通過報告在RSA上檢查。在ASA/ACS上,報告僅顯示「身份驗證失敗」。
SDI使用UDP作為傳輸,而不是MTU路徑發現。此外,UDP流量預設未設定「不分段(DF)」位元。有時對於較大的資料包,可能存在分段問題。很容易在RSA上嗅探流量(裝置和虛擬機器[VM]都使用Windows並使用Wireshark)。 在ASA/ACS上完成相同的過程並進行比較。此外,在RSA上測試RADIUS或WebAuthentication,以便將其與SDI進行比較(以便縮小問題範圍)。
由於SDI負載已加密,因此排除捕獲故障的唯一方法是比較響應的大小。如果小於200位元組,則可能存在問題。典型的SDI交換涉及四個資料包,每個資料包為550個位元組,但這種情況可能會隨RSA伺服器版本而改變:
發生問題時,交換的資料包通常多於四個且大小較小:
此外,ACS日誌非常清晰。以下是ACS上的典型SDI日誌:
EventHandler,11/03/2013,13:47:58:416,DEBUG,3050957712,Stack: 0xa3de560
Calling backRSAIDStore: Method MethodCaller<RSAIDStore, RSAAgentEvent> in
thread:3050957712,EventStack.cpp:242
AuthenSessionState,11/03/2013,13:47:58:416,DEBUG,3050957712,cntx=0000146144,
sesn=acs-01/150591921/1587,user=mickey.mouse,[RSACheckPasscodeState
::onEnterState],RSACheckPasscodeState.cpp:23
EventHandler,11/03/2013,13:47:58:416,DEBUG,3002137488,Stack: 0xa3de560
Calling RSAAgent:Method MethodCaller<RSAAgent, RSAAgentEvent> in thread:
3002137488,EventStack.cpp:204
RSAAgent,11/03/2013,13:47:58:416,DEBUG,3002137488,cntx=0000146144,sesn=
acs-01/150591921/1587,user=mickey.mouse,[RSAAgent::handleCheckPasscode],
RSAAgent.cpp:319
RSASessionHandler,11/03/2013,13:47:58:416,DEBUG,3002137488,[RSASessionHandler::
checkPasscode] call AceCheck,RSASessionHandler.cpp:251
EventHandler,11/03/2013,13:48:00:417,DEBUG,2965347216,Stack: 0xc14bba0
Create newstack, EventStack.cpp:27
EventHandler,11/03/2013,13:48:00:417,DEBUG,3002137488,Stack: 0xc14bba0 Calling
RSAAgent: Method MethodCaller<RSAAgent, RSAServerResponseEvent> in
thread:3002137488,EventStack.cpp:204
RSAAgent,11/03/2013,13:48:00:417,DEBUG,3002137488,cntx=0000146144,sesn=acs-01
/150591921/1587,user=mickey.mouse,[RSAAgent::handleResponse] operation completed
with ACM_OKstatus,RSAAgent.cpp:237
EventHandler,11/03/2013,13:48:00:417,DEBUG,3002137488,Stack: 0xc14bba0
EventStack.cpp:37
EventHandler,11/03/2013,13:48:00:417,DEBUG,3049905040,Stack: 0xa3de560 Calling
back RSAIDStore: Method MethodCaller<RSAIDStore, RSAAgentEvent> in thread:
3049905040,EventStack.cpp:242
AuthenSessionState,11/03/2013,13:48:00:417,DEBUG,3049905040,cntx=0000146144,sesn=
acs-01/150591921/1587,user=mickey.mouse,[RSACheckPasscodeState::onRSAAgentResponse]
Checkpasscode succeeded, Authentication passed,RSACheckPasscodeState.cpp:55
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
03-Mar-2015 |
初始版本 |