解决身份验证、授权和审核问题
使用 aaad.debug 模块解决 NetScaler 和 NetScaler Gateway 中的身份验证问题
NetScaler Gateway 中的身份验证由身份验证、授权和审计 (AAA) 守护程序处理。AAA 守护程序处理的原始身份验证事件可以通过查看 aaad.debug 模块的输出进行监视,可作为有价值的故障排除工具。aaad.debug 是管道而非平面文件,不显示结果或记录结果。因此,cat 命令可用于查看 aaad.debug 的输出。使用 nsaaad.debug 对身份验证问题进行故障排除的过程通常称为“调试 aaad”。
此过程对于解决身份验证问题非常有用,例如:
- 一般身份验证错误
- 用户名/密码失败
- 身份验证策略配置错误
- 组提取差异
注意: 此过程适用于 NetScaler Gateway 和 NetScaler 设备。
解决身份验证问题
要使用 aaad.debug 模块对身份验证进行故障排除,请完成以下步骤:
-
使用安全外壳 (SSH) 客户端(例如 PuTTY)连接到 NetScaler Gateway 命令行界面。
- 运行以下命令以切换到 shell 提示符:
shell
- 运行以下命令以更改到 /tmp 目录:
cd /tmp
- 运行以下命令以启动调试过程:
cat aaad.debug
- 执行需要进行故障排除的身份验证过程,例如用户尝试登录。
- 监视 cat aaad.debug 命令的输出,以解释身份验证过程并进行故障排除。
- 按 Ctrl+Z 停止调试过程。
- 运行以下命令将
aaad.debug
的输出记录到文件cat aaad.debug | tee /var/tmp/<debuglogname>
,其中/var/tmp
为所需的目录路径,<debuglogname.log>
为所需的日志名称。
以下部分提供了如何使用 aaad.debug 模块对身份验证错误进行故障排除和解释的示例。
密码不正确
在以下示例中,用户输入的 RADIUS 密码不正确。
process_radius Got RADIUS event
process_radius Received BAD_ACCESS_REJECT for: <username>
process_radius Sending reject.
send_reject_with_code Rejecting with error code 4001
<!--NeedCopy-->
用户名无效
在以下示例中,用户输入的 LDAP 用户名不正确。
/home/build/rs_121/usr.src/netscaler/aaad/ldap_drv.c[450]: receive_ldap_user_search_event 1-140: Admin authentication(Bind) succeeded, now attempting to search the user testusernew
/home/build/rs_121/usr.src/netscaler/aaad/ldap_drv.c[453]: receive_ldap_user_search_event 1-140: Number of entires in LDAP server response = 0
/home/build/rs_121/usr.src/netscaler/aaad/ldap_drv.c[459]: receive_ldap_user_search_event 1-140: ldap_first_entry returned null, user testusernew not found
/home/build/rs_121/usr.src/netscaler/aaad/naaad.c[4781]: send_reject_with_code 1-140: Not trying cascade again 4009
/home/build/rs_121/usr.src/netscaler/aaad/naaad.c[4783]: send_reject_with_code 1-140: sending reject to kernel for : testusernew
/home/build/rs_121/usr.src/netscaler/aaad/naaad.c[4801]: send_reject_with_code 1-140: Rejecting with error code 4009
<!--NeedCopy-->
确定组提取结果
在以下示例中,可以确定组提取结果。AAA 组访问的许多问题都涉及用户未在 NetScaler Gateway 设备中为其分配的组选择正确的会话策略。造成这种情况的一些常见原因包括设备中 AD 或 Radius 组名称拼写错误以及用户不是 AD 或 Radius 服务器中的安全组的成员。
/usr/home/build/rs_80_48/usr.src/usr.bin/nsaaad/../../netscaler/aaad/ldap_drv.c[40]:
start_ldap_auth attempting to auth scottli @ 10.12.33.216
/usr/home/build/rs_80_48/usr.src/usr.bin/nsaaad/../../netscaler/aaad/ldap_drv.c[291]:
/usr/home/build/rs_80_48/usr.src/usr.bin/nsaaad/../../netscaler/aaad/ldap_drv.c[551]: recieve_ldap_user_search_event built group string for scottli of:Domain Admins
<!--NeedCopy-->
aaad.debug 模块错误代码
下表列出了各种 aaad.debug 模块错误代码、错误原因和解决方案。
aaad.debug 模块错误代码 | 错误消息 | 错误原因 | 解决方案 |
---|---|---|---|
4001 | 凭证/密码不正确。重试。 | 提供的凭据不正确 | 输入正确的凭据 |
4002 | 不允许 | 这是一个全部捕获错误。ldapbind 操作因用户凭据不正确以外的原因失败时发生。 | 确保允许执行绑定操作 |
4003 | 无法连接到服务器。几分钟后再次尝试连接。 | 服务器超时 | 增加 NetScaler 上的 LDAP/Radius 服务器超时值(身份验证 > LDAP/Radius > 服务器 > 超时值)。默认超时值为 3 秒。 |
4004 | 系统错误 | NetScaler/NetScaler Gateway 内部错误或设备库中存在运行时错误 | 检查系统错误的原因并解决相同的问题 |
4005 | 套接字错误 | 与身份验证服务器通话时出现套接字错误 | 确保 LDAP/RADIUS 服务器或任何其他身份验证服务器可以监听 NetScaler 上配置的身份验证操作中提到的端口。例如,常见的错误情况可能是 NetScaler 上的 ldapprofile 配置为使用端口 636 /SSL,但在 AD 上未打开相同的端口。 |
4006 | 用户名不正确 | 传递给 nsaaad 的用户名(格式)不正确,例如空用户名 | 输入正确的用户名 |
4007 | 密码不正确 | 传递给 nsaaad 的密码(格式)不正确 | 输入正确的密码 |
4008 | 密码不一致 | 密码不一致 | 输入正确的密码 |
4009 | 找不到用户 | 无此类用户 | 使用 AD 中存在的有效用户登录 |
4010 | 您当前没有登录权限 | 限制登录时间 | 在限制时间以外登录 |
4011 | 您的 AD 帐户已禁用 | 帐户已禁用 | 启用您的 AD 帐户 |
4012 | 您的密码已过期 | 密码已过期 | 重置您的密码 |
4013 | 您没有登录权限 | 无拨入权限(特定于 RADIUS)。如果用户无权在服务器上进行身份验证,通常会出现此错误。 | 需要更改网络访问权限设置 |
4014 | 无法更改您的密码 | 更改密码时出错。这可能是由许多原因造成的。其中一个原因可能是尝试使用 NetScaler 上 ldapprofile 中提供的非 ssl 端口更改密码。 | 确保使用安全端口和安全类型更改密码 |
4015 | 您的帐户已暂时锁定 | 用户 AD 帐户已锁定 | 解锁您的 AD 帐户 |
4016 | 无法更新您的密码。密码必须满足域的长度、复杂性和历史记录要求。 | 更改密码时不符合用户密码要求 | 在更改密码的同时满足所需的要求 |
4017 | NAC 过程 | 特定于 Microsoft Intune。由于 API 故障或连接故障,NetScaler Gateway 无法验证设备。 | 确保 NetScaler Gateway 可以访问Microsoft Intune 托管设备 |
4018 | NAC 不合规 | Microsoft Intune 返回一个状态,指示此设备不是合规设备 | 确保Microsoft Intune 托管设备符合 NetScaler Gateway |
4019 | NAC 未托管 | Microsoft Intune 返回一个状态,指示这不是托管设备 | 确保 Microsoft Intune 的特定配置已设置 |
4020 | 不支持身份验证 | 在配置错误的情况下会出现此错误。例如,NetScaler 不支持身份验证类型,或者如果 NetScaler 设备上的 Authentciationprofile 配置不正确,或者尝试进行身份验证 (radius)。 | 如果未选中 NetScaler 上身份验证服务器的“身份验证”复选框,则将其选中。在 NetScaler 上使用适当的身份验证操作。 |
4021 | 用户帐户已过期 | 用户帐户已过期 | 续订您的用户帐户 |
4022 | 用户帐户被 NetScaler 锁定 | 用户帐户被 NetScaler 锁定 | 使用 unlock aaa user <> 命令解锁帐户 |
4023 | 已达到最大 OTP 设备限制 | 已达到接收 OTP 的设备限制 | 尝试取消注册非必需的 OTP 设备,或者继续使用已注册的设备 |
本地化 NetScaler nFactor 系统生成的错误消息
本主题捕获了有关本地化 NetScaler nFactor 系统生成的错误消息的信息。这些消息包括作为增强的身份验证反馈的一部分获取的扩展身份验证错误字符串。
对于英语,nFactor 子系统发送的默认错误字符串在 /var/netscaler/logon/LogonPoint/receiver/js/localization/en/ctxs.strings.js 中进行了说明。其他语言的错误字符串可以在 /var/netscaler/logon/LogonPoint/receiver/js/localization/ 中的相应目录中找到。
您必须根据 RfWeb UI 创建门户主题才能本地化错误消息。
在命令提示符下,键入:
add portaltheme custom_error_theme -basetheme RfWebUI
bind authentication vserver av1 -portaltheme custom_error_theme
<!--NeedCopy-->
执行这些命令后,将在 /var/netscaler/logon/themes/<name>
中创建一个新目录。该目录包含一个名为“strings.en.json”的文件。此文件是一个空 json 文件,首先会使用此文件。管理员可以添加由新旧错误字符串组成的名称-值对。
例如, { “No active policy during authentication”: “No active policy during authentication, Please contact administrator” }
在上面的示例中,左侧的文本是 nFactor 发送的现有错误消息。右侧的文本是左侧文本的替代文本。管理员可以根据需要添加更多消息。
增强的身份验证反馈
为了在身份验证过程中获取扩展的错误消息,必须启用 enhancedAuthenticationFeedback 功能。
在命令提示符下,键入:
set aaa parameter –enableEnhancedAuthFeedback YES
<!--NeedCopy-->