ADC

外部用户身份验证

NetScaler 设备中的身份验证服务可以是本地的,也可以是外部的。在外部用户身份验证中,设备使用外部服务器(如 LDAP、RADIUS 或 TACACS+)对用户进行身份验证。要对外部用户进行身份验证并授予用户访问设备的权限,必须应用身份验证策略。NetScaler 系统身份验证使用高级身份验证策略和高级策略表达式。高级身份验证策略还用于分区 NetScaler 设备中的系统用户管理。

注意

如果您的设备仍在使用 Classic 策略及其表达式,则必须停止使用它,然后将 Classic 策略用法迁移到高级策略基础架构。

创建身份验证策略后,必须将其绑定到系统全局实体。您可以通过将单个身份验证策略绑定到系统全局实体来配置外部身份验证服务器(例如 TACACS)。或者,您可以通过将多个策略绑定到系统全局实体来配置身份验证服务器级联。

注意

当外部用户登录设备时,系统会在文件中生成一条错误消息“用户不ns.log 存在”。出现这种情况是因为系统运行 systemuser_systemcmdpolicy_binding 命令来初始化用户的 GUI。

LDAP 身份验证 (使用外部 LDAP 服务器)

您可以将 NetScaler 设备配置为使用一个或多个 LDAP 服务器对用户的访问进行身份验证。LDAP 授权要求在 Active Directory、LDAP 服务器和设备上使用相同的组名。字符和大小写也必须相同。

有关 LDAP 验证策略的更多信息,请参阅 LDAP 身份验证策略 主题。

默认情况下,LDAP 身份验证通过使用 SSL/TLS 协议进行保护。有两种类型的安全 LDAP 连接。在第一种类型中,LDAP 服务器在与用于接受清除 LDAP 连接的端口不同的端口上接受 SSL/TLS 连接。用户建立 SSL/TLS 连接后,可以通过连接发送 LDAP 流量。第二种类型允许不安全和安全的 LDAP 连接,单个端口在服务器上处理它。在这种情况下,要创建一个安全的连接,客户端首先建立一个清晰的 LDAP 连接。然后,通过连接将 LDAP 命令 StartTLS 发送到服务器。如果 LDAP 服务器支持 StartTLS,则使用 TLS 将连接转换为安全 LDAP 连接。

LDAP 连接的端口号为:

  • 389 用于不安全的 LDAP 连接
  • 636 用于安全的 LDAP 连接
  • 3268 用于 Microsoft 不安全的 LDAP 连接
  • 3269 用于 Microsoft 安全 LDAP 连接

使用 StartTLS 命令的 LDAP 连接使用端口号 389。如果设备上配置了端口号 389 或 3268,它会尝试使用 StartTLS 进行连接。如果使用任何其他端口号,则连接尝试使用 SSL/TLS。如果无法使用 StartTLS 或 SSL/TLS,则连接将失败。

配置 LDAP 服务器时,字母字符的大小写必须与服务器和设备上的大小写一致。如果指定了 LDAP 服务器的根目录,则还会搜索所有子目录以查找用户属性。在大型目录中,它可能会影响性能。因此,Citrix 建议您使用特定组织单位 (OU)。

下表列出了基本可分辨名称 (DN) 的示例。

LDAP 服务器 Base DN(基础 DN)
Microsoft Active Directory DC=Citrix, DC=local
Novell eDirectory dc=Citrix, dc=net
IBM 目录服务器 cn=users
Lotus Domino OU=City, O=Citrix, C=US
Sun ONE 目录(以前称为 iPlanet) ou=People, dc=Citrix, dc=com

下表列出了绑定唯一判别名 (DN) 的示例。

LDAP 服务器 Bind DN(绑定 DN)
Microsoft Active Directory CN=Administrator, CN=Users, DC=Citrix, DC=local
Novell eDirectory cn=admin, dc=Citrix, dc=net
IBM 目录服务器 LDAP_dn
Lotus Domino CN=Notes Administrator, O=Citrix, C=US
Sun ONE 目录(以前称为 iPlanet) uid=admin, ou=Administrators, ou=TopologyManagement, o=NetscapeRoot

使用 CLI 配置 LDAP 用户身份验证

完成以下步骤,为外部用户配置 LDAP 身份验证

配置 LDAP 策略

在命令提示窗口中执行以下操作:

步骤 1: 创建 LDAP 操作。

add authentication ldapAction <name> {-serverIP <ip_addr|ipv6_addr|*> | {-serverName <string>}} >] [-authTimeout <positive_integer>] [-ldapBase <string>] [-ldapBindDn <string>] {-ldapBindDnPassword } [-ldapLoginName <string>] [-groupAttrName <string>] [-subAttributeName <string>]

示例:

add authentication ldapAction ldap_act -serverIP <IP> -authTimeout 30 -ldapBase "CN=xxxxx,DC=xxxx,DC=xxx" -ldapBindDn "CN=xxxxx,CN=xxxxx,DC=xxxx,DC=xxx" -ldapBindDnPassword abcd -ldapLoginName sAMAccountName -groupattrName memberOf -subAttributeName CN

有关参数说明,请参阅 身份验证和授权命令参考 主题。

步骤 2:创建经典的 LDAP 策略。

add authentication ldapPolicy <name> <rule> [<reqAction>]

示例:

add authentication ldappolicy ldap_pol_classic ns_true ldap_act

注意

您可以使用经典或高级 LDAP 策略进行配置,但是 Citrix 建议您使用高级身份验证策略,因为从 NetScaler 13.0 版本起,经典策略已弃用。

步骤 3:创建高级 LDAP 策略

add authentication Policy <name> <rule> [<reqAction>]

示例:

add authentication policy ldap_pol_advance -rule true -action ldap_act

步骤 4:将 LDAP 策略绑定到系统全局

在命令行提示符下,执行以下操作:

bind system global <policyName> [-priority <positive_integer]

示例:

bind system global ldap_pol_advanced -priority 10

使用 NetScaler GUI 配置 LDAP 用户身份验证

  1. 导航到“系统”>“身份验证”>“高级策略”>“策略”。
  2. 单击“添加”以创建 LDAP 类型的身份验证策略。
  3. 单击创建关闭

配置 LDAP 用户身份验证

使用 NetScaler GUI 将身份验证策略绑定到系统全局以进行 LDAP 身份验证

  1. 导航到“系统”>“身份验证”>“高级策略”>“身份验证策略”。
  2. 在详细信息窗格中,单击全局绑定以创建系统全局身份验证策略绑定。
  3. 单击全局绑定
  4. 选择身份验证配置文件。
  5. 选择 LDAP 策略。
  6. 系统全局身份验证策略绑定页面中,设置以下参数:

    1. 选择 策略。
    2. 绑定详细信息

    选择 LDAP 策略

  7. 单击 绑定完成
  8. 单击“全局绑定”以确认策略已绑定到系统全局。

确定 LDAP 目录中的属性

如果您在确定 LDAP 目录属性时需要帮助,可以使用 Softerra 提供的免费 LDAP 浏览器轻松查找它们。

您可以从 Softerra LDAP 管理员网站下载 LDAP 浏览器,URL 为 <http://www.ldapbrowser.com>。安装浏览器后,设置以下属性:

  • LDAP 服务器的主机名或 IP 地址。
  • LDAP 服务器的端口。默认值为 389。
  • 基本 DN 字段可以留空。
  • LDAP 浏览器提供的信息可以帮助您确定“身份验证”选项卡所需的基本 DN。
  • 匿名绑定检查确定 LDAP 服务器是否需要用户凭据才能让浏览器连接到该服务器。如果 LDAP 服务器需要凭据,请清除该复选框。

完成设置后,LDAP 浏览器将在左侧窗格中显示配置文件名称并连接到 LDAP 服务器。

有关详细信息,请参阅 LDAP 主题。

为 LDAP 用户提供基于密钥的身份验证支持

使用基于密钥的身份验证,您现在可以通过 SSH 获取存储在 LDAP 服务器中用户对象上的公钥列表。在基于角色的身份验证 (RBA) 过程中,NetScaler 设备必须从 LDAP 服务器中提取 SSH 公钥。检索到的公钥与 SSH 兼容,必须允许您通过 RBA 方法登录。

在“add authentication ldapAction”和“set authentication ldapAction”命令中引入了一个新属性“sshPublicKey”。通过使用此属性,您可以获得以下好处:

  • 可以存储检索到的公钥,LDAP 操作使用此属性从 LDAP 服务器检索 SSH 密钥信息。
  • 可以提取最多 24 KB 的属性名称。

注意

外部身份验证服务器(如 LDAP)仅用于检索 SSH 密钥信息。它不用于身份验证目的。

以下是通过 SSH 传送事件的示例:

  • SSH 守护进程将密码字段为空的 AAA_AUTHENTICATE 请求发送到身份验证、授权和审核守护程序端口。
  • 如果将 LDAP 配置为存储 SSH 公钥,则身份验证、授权和审核将使用 sshPublicKey 属性以及其他属性进行响应。
  • SSH 守护程序使用客户端密钥验证这些密钥。
  • SSH 守护程序在请求有效负载中传递用户名,身份验证、授权和审核将返回特定于该用户的密钥以及通用密钥。

要配置 sshPublicKey 属性,请在命令提示符下键入以下命令:

  • 使用添加操作,您可以在配置 ldapAction 命令时添加“sshPublicKey”属性。

    add authentication ldapAction <name> {-serverIP <ip_addr|ipv6_addr|*> | {-serverName <string>}} [-serverPort <port>] … [-Attribute1 <string>] … [-Attribute16 <string>][-sshPublicKey <string>][-authentication off]<!--NeedCopy-->

  • 通过设置操作,您可以将“sshPublicKey”属性配置为已添加的 ldapAction 命令。

    set authentication ldapAction <name> [-sshPublicKey <string>][-authentication off]<!--NeedCopy-->

RADIUS 身份验证(使用外部 RADIUS 服务器)

您可以将 NetScaler 设备配置为使用一个或多个 RADIUS 服务器对用户的访问进行身份验证。如果您使用的是 RSA SecurID、SafeWord 或 Gemalto Protiva 产品,请使用 RADIUS 服务器。

有关 RADIUS 身份验证策略的更多信息,请参阅 RADIUS 身份验证

您的配置可能需要使用网络访问服务器 IP 地址 (NAS IP) 或网络访问服务器标识符 (NAS ID)。将设备配置为使用 RADIUS 身份验证服务器时,请遵循以下准则:

  • 如果启用 NAS IP 的使用,则设备会将其配置的 IP 地址发送到 RADIUS 服务器,而不是建立 RADIUS 连接时使用的源 IP 地址。
  • 如果配置 NAS ID,设备会将标识符发送到 RADIUS 服务器。如果不配置 NAS ID,则设备将其主机名发送到 RADIUS 服务器。
  • 启用 NAS IP 地址后,设备将忽略其用于与 RADIUS 服务器通信的任何 NAS ID。

使用 CLI 配置 RADIUS 用户身份验证

在命令提示窗口中执行以下操作:

步骤 1: 创建 RADIUS 操作

add authentication radiusaction <name> -serverip <ip> -radkey <key> -radVendorID <id> -radattributetype <value>

其中, radVendorID RADIUS 供应商 ID 属性,用于 RADIUS 组提取。 radAttributeType RADIUS 属性类型,用于 RADIUS 组提取。

示例:

add authentication radiusaction RADserver531 rad_action -serverip 1.1.1.1 -radkey key123 -radVendorID 66 -radattributetype 6

步骤 2:创建经典 RADIUS 策略。

add authentication radiusPolicy <name> <rule> [<reqAction>]

示例:

add authentication radiuspolicy radius_pol_classic ns_true radius_act

注意

您可以使用经典或高级 RADIUS 策略进行配置。Citrix 建议您使用高级身份验证策略,因为从 NetScaler 13.0 版本开始不建议使用传统策略。

步骤 3:创建高级 RADIUS 策略

add authentication policy <policyname> -rule true -action <radius action name>

示例:

add authentication policy rad_pol_advanced -rule true -action radserver531rad_action

步骤 4:将 RADIUS 策略绑定到系统全局。

bind system global <policyName> -priority <positive_integer

示例:

bind system global radius_pol_advanced -priority 10

使用 GUI 配置 RADIUS 用户身份验证

  1. 导航到“系统”>“身份验证”>“高级策略”>“策略”。
  2. 单击“添加”以创建 RADIUS 类型的身份验证策略。
  3. 单击创建关闭

配置 RADIUS 策略

使用 GUI 将身份验证策略绑定到系统全局以进行 RADIUS 身份验证

  1. 导航到“系统”>“身份验证”>“高级策略”>“策略”。
  2. 在详细信息窗格中,单击全局绑定以创建系统全局身份验证策略绑定。
  3. 单击全局绑定

    将身份验证策略绑定到 RADIUS 的系统全局

  4. 选择“RADIUS”。
  5. 系统全局身份验证策略绑定页面中,设置以下参数:

    1. 选择一个策略。
    2. 绑定详情。

    系统全局身份验证策略绑定

  6. 单击绑定关闭
  7. 单击全局绑定以确认策略已绑定到全局系统。

    RADIUS 身份验证策略全局绑定

选择 RADIUS 用户身份验证协议

NetScaler 设备支持配置为使用多种协议中的任何一种进行用户身份验证的 RADIUS 实现,包括:

  • 口令身份验证协议
  • 挑战握手身份验证协议 (CHAP)
  • Microsoft 质询握手身份验证协议(MS-CHAP 版本 1 和版本 2)

如果您的部署配置为使用 RADIUS 身份验证,并且 RADIUS 服务器配置了密码身份验证协议。您可以通过向 RADIUS 服务器分配强共享密钥来加强用户身份验证。强 RADIUS 共享秘密由大写和小写字母、数字和标点符号的随机序列组成,长度至少为 22 个字符。如果可能的话,使用随机字符生成程序来确定 RADIUS 共享机密。

要进一步保护 RADIUS 流量,请为每个设备或虚拟服务器分配不同的共享密钥。在 RADIUS 服务器上定义客户端时,还可以为每个客户端分配单独的共享密钥。此外,您必须单独配置使用 RADIUS 身份验证的每个策略。

配置 IP 地址提取

您可以将设备配置为从 RADIUS 服务器中提取 IP 地址。当用户向 RADIUS 服务器进行身份验证时,服务器将返回分配给该用户的带框的 IP 地址。以下是 IP 地址提取的属性:

  • 允许远程 RADIUS 服务器从内部网络为登录到设备的用户提供 IP 地址。
  • 允许使用 ip 地址类型配置任何 RADIUS 属性,包括供应商编码的 IP 地址。

配置 RADIUS 服务器进行 IP 地址提取时,您可以配置供应商标识符和属性类型。

供应商标识符使 RADIUS 服务器能够从 RADIUS 服务器上配置的 IP 地址池中为客户端分配一个 IP 地址。供应商 ID 和属性用于在 RADIUS 客户端和 RADIUS 服务器之间建立关联。供应商 ID 是 RADIUS 响应中提供内部网络 IP 地址的属性。值为零表示该属性不是供应商编码的。属性类型是 RADIUS 响应中的远程 IP 地址属性。最小值为 1,最大值为 255。

常见的配置是提取 RADIUS 属性成帧的 IP 地址。供应商 ID 设置为零或未指定。属性类型设置为 8。

使用 GUI 提取 RADIUS 的分组

  1. 导航到“系统”>“身份验证”>“高级策略”>“Radius”,然后选择一个策略。
  2. 选择或创建 RADIUS 策略。
  3. 在“配置身份验证 RADIUS 服务器”页中,设置以下参数。

    1. 组供应商标识符
    2. 组属性类型
  4. 单击“确定”关闭

TACACS+ 身份验证 (使用外部 TACACS+ 服务器)

重要

  • Citrix 建议您在运行“clear ns config”命令时不要修改任何与 TACACS 相关的配置。

  • 当高级策略的“clear ns config”命令中的 RBAconfig 参数设置为 NO 时,与高级策略相关的 TACACS 相关配置将被清除并重新应用。

  • 作为“清除配置”操作的一部分将 RBAconfig 参数设置为 NO 时,NetScaler 除了保留 RBA 配置和 TACACS 策略外,还会保留管理访问会话。

您可以配置 TACACS+ 服务器进行身份验证。与 RADIUS 身份验证类似,TACACS+ 使用私钥、IP 地址和端口号。默认端口号为 49。要将设备配置为使用 TACACS+ 服务器,请提供服务器 IP 地址和 TACACS+ 密码。只有当使用的服务器端口号不是默认端口号 49 时,才必须指定端口。

有关更多信息,请参阅 TACACS 验证

使用 GUI 配置 TACACS+ 身份验证

  1. 导航到“系统”>“身份验证”>“高级策略”>“策略”。
  2. 单击“添加”以创建 TACACS 类型的身份验证策略。
  3. 单击创建关闭

配置 TACACS 策略

在设备上配置 TACACS+ 服务器设置后,将策略绑定到系统全局实体。

使用 CLI 将身份验证策略绑定到系统全局实体

配置身份验证策略后,将策略绑定到系统全局实体。

在命令行提示符下,执行以下操作:

bind system global <policyName> [-priority <positive_integer>]

示例:

bind system global pol_classic -priority 10

另外,请阅读 Citrix 文章 CTX113820 了解使用 TACACS 进行外部身份验证的信息。

使用 GUI 将身份验证策略绑定到系统全局实体

  1. 导航到“系统”>“身份验证”>“高级策略”>“身份验证策略”>“策略”。
  2. 在详细信息窗格中,单击全局绑定以创建系统全局身份验证策略绑定。
  3. 单击全局绑定

    将身份验证策略绑定到系统全局以进行 TACACS 身份验证

  4. 选择 TACACS 策略。
  5. 在系统全局身份验证策略绑定页面中,设置以下参数:

    1. 选择 策略。
    2. 绑定详细信息

    用于 TACACS 身份验证的全局系统

  6. 单击绑定关闭
  7. 单击“全局绑定”以确认绑定到系统全局的策略。

    TACACS 系统全局绑定确认

有关 TACACS 组提取的更多信息,请阅读 Citrix 文章 CTX220024

显示外部用户的登录尝试失败次数

当您在成功登录 NetScaler 管理控制台之前尝试至少一次登录失败时,NetScaler 设备将向外部用户显示无效登录尝试次数。

注意

目前,NetScaler 仅支持在系统参数中启用了“persistentLoginAttempts”参数的外部用户的键盘交互式身份验证。

在命令提示符下,键入: set aaa parameter -maxloginAttempts <value> -failedLoginTimeout <value> -persistentLoginAttempts (ENABLED | DISABLED )]

示例: set aaa parameter –maxloginAttempts 5 -failedLoginTimeout 4 –persistentLoginAttempts ENABLED

Following msg will be seen to external user when he tries 1 invalid login attempt before successfully login to the ADC management access.

Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
###############################################################################
#                                                                             #
#        WARNING: Access to this system is for authorized users only          #
#         Disconnect IMMEDIATELY if you are not an authorized user!           #
#                                                                             #
###############################################################################


WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Mon Aug 24 17:09:00 2020 from 10.10.10.10

The number of unsuccessful login attempts since the last successful login : 1
Done
>
The number of unsuccessful login attempts since the last successful login : 1
Done
>
<!--NeedCopy-->