简介
本文档介绍RSA Authentication Manager(可与思科自适应安全设备(ASA)和思科安全访问控制服务器(ACS)集成)的故障排除过程。
RSA Authentication Manager是一个为身份验证提供一次性密码(OTP)的解决方案。该密码每60秒更改一次,且只能使用一次。它同时支持硬件和软件令牌。
先决条件
要求
Cisco 建议您具有以下主题的基础知识:
- Cisco ASA CLI 配置
- Cisco ACS配置
使用的组件
本文档中的信息基于以下软件版本:
- Cisco ASA软件8.4版及更高版本
- Cisco Secure ACS 5.3版及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
理论
可以使用RADIUS或专有的RSA协议访问RSA服务器:SDI。ASA和ACS都可以使用两个协议(RADIUS和SDI)来访问RSA。
请记住,使用软件令牌时,RSA可以与Cisco AnyConnect安全移动客户端集成。本文档仅重点介绍ASA和ACS集成。有关AnyConnect的详细信息,请参阅Cisco AnyConnect安全移动客户端管理员指南,版本3.1的使用SDI身份验证部分。
通过RADIUS的RSA
与SDI相比,RADIUS有一个很大的优势。在RSA上,可以将特定配置文件(称为ACS上的组)分配给用户。这些配置文件定义了特定的RADIUS属性。身份验证成功后,从RSA返回的RADIUS-Accept消息包含这些属性。ACS根据这些属性做出其他决策。最常见的场景是决定使用ACS组映射以将与RSA上的配置文件相关的特定RADIUS属性映射到ACS上的特定组。使用此逻辑,可以将整个授权过程从RSA移动到ACS,并且仍然可以保持精细的逻辑,如RSA上的逻辑。
通过SDI的RSA
与RADIUS相比,SDI有两个主要优势。第一个是整个会话被加密。第二个是SDI代理提供的相关选项:它可确定创建失败是因为身份验证或授权失败还是因为未找到用户。
ACS在操作中使用此信息获取身份。例如,它可以继续执行“未找到用户”,但拒绝执行“身份验证失败”。
RADIUS和SDI之间还有一个区别。当ASA等网络接入设备使用SDI时,ACS仅执行身份验证。当使用RADIUS时,ACS执行身份验证、授权、记帐(AAA)。 不过,这并不是什么大区别。可以为身份验证配置SDI,为相同会话配置RADIUS。
SDI协议
默认情况下,SDI使用用户数据报协议(UDP)5500。SDI使用与RADIUS密钥类似的对称加密密钥来加密会话。该密钥保存在节点密钥文件中,并且对于每个SDI客户端都是不同的。该文件可手动或自动部署。
注意:ACS/ASA不支持手动部署。
对于自动部署节点,加密文件在第一次成功身份验证后自动下载。节点密钥用从用户密码和其他信息中得到的密钥加密。这会产生一些可能的安全问题,因此第一次身份验证必须在本地执行,并且使用加密协议(Secure Shell [SSH],而不是telnet),以确保攻击者无法拦截和解密该文件。
配置
注意:
使用命令查找工具(仅限注册用户)可获取有关本部分所使用命令的详细信息。
命令输出解释程序工具(仅限注册用户)支持某些 show 命令。使用输出解释器工具来查看 show 命令输出的分析。
使用 debug 命令之前,请参阅有关 Debug 命令的重要信息。
ACS上的SDI
它在用户和身份库>外部身份库> RSA安全ID令牌服务器中配置。
RSA有多个副本服务器,例如ACS的辅助服务器。不需要将所有地址都放在这里,只需使用RSA管理员提供的sdconf.rec文件。此文件包括主RSA服务器的IP地址。在第一个成功的身份验证节点之后,会下载密钥文件以及所有RSA复制副本的IP地址。
要区分“未找到用户”和“身份验证失败”,请在Advanced选项卡中选择设置:
也可以更改多个RSA服务器(主服务器和复制副本)之间的默认路由(负载均衡)机制。 使用RSA管理员提供的sdopts.rec文件更改它。在ACS中,它上传到Users and Identity Stores > External Identity Store > RSA Secure ID Token Servers > ACS Instance Settings。
对于集群部署,必须复制配置。在首次成功进行身份验证后,每个ACS节点使用从主RSA服务器下载的自己的节点密钥。请务必记住为集群中的所有ACS节点配置RSA。
ASA上的SDI
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
故障排除
本部分提供了可用于对配置进行故障排除的信息。
RSA上没有代理配置
在许多情况下,安装新的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状态。在dead计时器之后,故障服务器将再次置于主用模式。有关详细信息,请参阅Cisco ASA系列命令参考9.1指南中的reactivation-mode命令部分。
在这种情况下,最好删除并添加该组的AAA服务器配置,以便再次将该服务器触发到活动模式。
帐户已锁定
多次重试后,RSA可以锁定该帐户。它很容易通过报告在RSA上检查。在ASA/ACS上,报告仅显示“失败的身份验证”。
最大过渡单元(MTU)问题和分段
SDI使用UDP作为传输,而不是MTU路径发现。此外,UDP流量默认情况下没有设置Don’t Fragment(DF)位。有时对于较大的数据包,可能会出现分段问题。在RSA上嗅探流量非常容易(设备和虚拟机[VM]都使用Windows并使用Wireshark)。 在ASA/ACS上完成相同的过程并进行比较。此外,在RSA上测试RADIUS或WebAuthentication,以便将其与SDI进行比较(以便缩小问题范围)。
ACS的数据包和调试
由于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
相关信息