用户设备的预身份验证设备检查表达式
重要:
端点分析旨在根据预先确定的合规性标准分析用户设备,并不强制或验证最终用户设备的安全性。建议使用端点安全系统来保护设备免受本地管理员攻击。
NetScaler Gateway 在用户登录期间或会话期间的其他配置时间提供各种端点合规性检查,以帮助验证用户设备。只有通过这些检查的用户设备才允许建立 NetScaler Gateway 会话。
以下是您可以在 NetScaler Gateway 上配置的对用户设备的检查类型:
- 反垃圾邮件
- 防病毒
- 文件策略
- 互联网安全
- 操作系统
- 个人防火墙
- 流程策略
- 注册表策略
- 服务策略
如果用户设备上的设备检查失败,则在后续检查通过之前不会建立新的连接(如果是定期检查);但是,流经现有连接的流量会继续通过 NetScaler Gateway。
您可以使用配置实用程序在旨在对用户设备进行检查的会话策略中配置预身份验证策略或设备检查表达式。
配置防病毒、防火墙、互联网安全或反垃圾邮件表达式
您可以在“添加表达式”对话框中配置防病毒、防火墙、Internet 安全性和反垃圾邮件策略的设置。每个策略的设置都是相同的:不同之处在于您选择的值。例如,如果要检查用户设备的 Norton 防病毒版本 10 和 ZoneAlarm Pro,则可以在会话或预身份验证策略中创建两个表达式,用于指定每个应用程序的名称和版本号。
选择“客户端安全”作为表达式类型时,可以配置以下内容:
- 组件:客户端安全性的类型,例如防病毒、防火墙或注册表项。
- 名称:应 用程序、进程、文件、注册表项或操作系统的名称。
- 限定符:表达式检查的组件的版本或值。
- 运算符:检查值是否存在或等于该值。
- 值:用户设备上的防病毒、防火墙、Internet 安全或反垃圾邮件软件的应用程序版本。
- 频率:运行身份验证后扫描的频率,以分钟为单位。
- 错误权重:当多个表达式具有不同的错误字符串时,为嵌套表达式中包含的每条错误消息分配的权重。权重决定显示哪条错误消息。
- 新鲜度:定义病毒定义的年龄。例如,您可以配置表达式,使病毒定义的时间不超过三天。
将客户端设备检查策略添加到预身份验证或会话策略中
- 在配置实用程序的导航窗格中,执行以下操作之一:
- 在配置实用程序中的“配置”选项卡上的导航窗格中,展开 NetScaler Gateway > 策略,然后单击会话。
- 在配置实用程序中的“配置”选项卡上的导航窗格中,展开 NetScaler Gateway > 策略 > 身份验证/授权,然后单击预身份验证 EPA。
- 在详细信息窗格的“策略”选项卡上,单击“添加”。
- 在名称中,键入策略的名称。
- 在匹配任何表达式旁边,单击添加。
- 在“添加表达式”对话框的“表达式类型”中,选择“客户端安全”。
- 配置以下内容的设置:
- 在组件中,选择要扫描的项目。
- 在名称中,键入应用程序的名称。
- 在限定符中,选择版本。
- 在运算符中,选择值。
- 在“值”中,键入客户端设备检查字符串,单击“确定”,单击“创建”,然后单击“关闭”。
配置服务策略
服务是在用户设备上静默运行的程序。创建会话或预身份验证策略时,可以创建一个表达式,以确保在建立会话时用户设备正在运行特定服务。
配置服务策略
- 在配置实用程序的导航窗格中,执行以下操作之一:
- 在配置实用程序中,在“配置”选项卡的导航窗格中,展开 NetScaler Gateway > 策略,然后单击“会话”。
- 在配置实用程序中,在“配置”选项卡的导航窗格中,展开 NetScaler Gateway > 策略 > 身份验证/授权,然后单击“预身份验证 EPA”。
- 在详细信息窗格的“策略”选项卡上,单击“添加”。
- 在名称中,键入策略的名称。
- 在匹配任何表达式旁边,单击添加。
- 在“添加表达式”对话框的“表达式类型”中,选择“客户端安全”。
- 配置以下内容的设置:
- 在组件中,选择服务。
- 在名称中,键入服务的名称。
- 在限定符中,留空或选择版本。
- 根据您在限定符中的选择,执行以下操作之一:
- 如果留空,请在运算符中选择 == 或!=
- 如果选择了“版本”,请在“运算符”的“值”中键入值,单击“确定”,然后单击“关闭”。
您可以在以下位置查看基于 Windows 的计算机上所有可用服务的列表以及每项服务的状态:
控制面板 > 管理工具 > 服务
注意:
每项服务的服务名称与列出的名称不同。通过查看 属性对话框来检查服务的名称。
配置流程策略
创建会话或预身份验证策略时,您可以定义一个规则,要求所有用户设备在用户登录时运行特定进程。该过程可以是任何应用程序,也可以包括自定义的应用
注意:在基于 Windows 的计算机上运行的所有进程的列表显示在 Windows 任务管理器的“ 进程”选项卡上。
配置进程策略
- 在配置实用程序的导航窗格中,执行以下操作之一:
- 在配置实用程序中的配置选项卡的导航窗格中,展开 NetScaler Gateway\ > 策略 ,然后单击会话。
- 在配置实用程序中的配置选项卡的导航窗格中,展开 NetScaler Gateway > 策略\ > 身份验证/授权,然后单击预身份验证 EPA。
- 在详细信息窗格的“策略”选项卡上,单击“添加”。
- 在名称中,键入策略的名称。
- 在匹配任何表达式旁边,单击添加。
- 在“添加表达式”对话框的“表达式类型”中,选择“客户端安全”。
- 配置以下内容的设置:
- 在组件中,选择进程。
- 在名称中,键入应用程序的名称。
- 在运算符中,选择 EXISTS 或 NOTEXISTS,单击确定,然后单击关闭。
配置 Endpoint Analysis 策略(身份验证前或身份验证后)以检查进程时,可以配置 MD5 校验和。
为策略创建表达式时,可以将 MD5 校验和添加到正在检查的进程中。例如,如果您正在检查 notepad.exe 是否在用户设备上运行,则表达式为: CLIENT.APPLICATION.PROCESS(notepad.exe_md5_388b8fbc36a8558587afc90fb23a3b00) EXISTS
配置操作系统策略
创建会话或预身份验证策略时,可以配置客户端设备检查字符串,以确定用户登录时用户设备是否正在运行特定的操作系统。您还可以配置表达式以检查特定的 Service Pack 或修补程序。
Windows 和 Macintosh 的值为:
操作系统 | 值 |
---|---|
macOS X | macOS |
Windows 8.1 | win8.1 |
Windows 8 | win8 |
Windows 7 | win7 |
Windows Vista | vista |
Windows XP | winxp |
Windows Server 2008 | win2008 |
Windows Server 2003 | win2003 |
Windows 2000 Server | win2000 |
Windows 64 位平台 | win64 |
使用 GUI 配置操作系统策略
- 在导航窗格中,执行以下操作之一:
- 导航到 NetScaler Gateway > 策略 ,然后单击 会话。
- 导航到 NetScaler Gateway > 策略 > 预身份验证。
- 在详细信息窗格的“策略”选项卡上,单击“添加”。
- 在名称中,键入策略的名称。
- 在 请求操作 中,选择现有操作或创建一个操作。
- 单击 Expression Editor(表达式编辑器)。
- 在 选择表达式类型中,选择 客户端安全。
- 配置以下内容的设置:
- 在 组件中,选择 操作系统。
- 在 名称中,键入操作系统的名称。
- 在限定符中,执行以下操作之一:
- 将字段留空
- 选择 服务包
- 选择 修补程序
- 选择 版本 (仅适用于 macOS)
- 根据您在步骤 7 中的选择,在 Operator 中,执行以下操作之一:
- 如果限定符为空,请在运算符中选择 EQUAL (= =)、NOTEQUAL (!=)、EXISTS 或 NOTEXISTS。
- 如果选择了 Service Pack 或 Hotfix,请选择运算符,然后在值中键入值。
- 单击 完成 ,然后单击 关闭。
如果要配置 Service Pack(例如 client.os) (winxp).sp
,如果 值 字段中没有数字,NetScaler Gateway 将返回错误消息,因为表达式无效。
如果操作系统存在补丁包 3 和补丁包 4 等服务包,则可以仅为 Service Pack 4 配置检查,因为 Service Pack 4 的存在会自动表明存在以前的服务包。
配置注册表策略
创建会话或预身份验证策略时,可以检查用户设备上是否存在注册表项以及注册表项的值。只有当特定条目存在或具有配置的值或更高的值时,才会建立会话。
配置注册表达式时,请遵循以下准则:
-
四个反斜杠用于分隔键和子键,例如
HKEY_LOCAL_MACHINE\\\\SOFTWARE
-
下划线用于分隔子项和关联的值名称,例如
HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\VirusSoftware_Version
-
反斜杠 (\) 用于表示空格,如以下两个示例所示:
HKEY_LOCAL_MACHINE\\\\SOFTWARE\\Citrix\\\\Secure\ Access\ Client_ProductVersion
CLIENT.REG(HKEY_LOCAL_MACHINE\\\\Software\\\\Symantec\\Norton\ AntiVirus_Version).VALUE == 12.8.0.4 -frequency 5
以下是注册表表达式,用于在用户登录时查找 Citrix Secure Access 客户端注册表项:
CLIENT.REG(secureaccess
).VALUE==HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\CITRIX\\\\Secure\Access\Client_ProductVersion
注意:
如果您正在扫描注册表项和值,并在“表达式”对话框中选择“高级自由格式”,则表达式必须以 CLIENT.REG 开头。
以下最常见的五种类型支持注册表检查:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- HKEY_CURRENT_CONFIG
要检查的注册表值使用以下类型:
-
字符串
对于字符串值类型,检查区分大小写。
-
DWORD
对于 DWORD 类型,将比较该值,且必须相等。
-
扩展字符串
不支持其他类型,例如二进制和多字符串。
-
只支持 ‘==’ 比较运算符。
-
不支持其他比较运算符,例如 <、> 和区分大小写的比较。
-
注册表字符串的总长度必须小于 256 字节。
您可以向表达式添加值。该值可以是软件版本、Service Pack 版本或注册表中显示的任何其他值。如果注册表中的数据值与您正在测试的值不匹配,则拒绝用户登录。
注意:
您无法扫描子项中的值。扫描必须与命名值和关联的数据值相匹配。
配置注册表策略
- 在配置实用程序的导航窗格中,执行以下操作之一:
- 在配置实用程序中的配置选项卡的导航窗格中,展开 NetScaler Gateway\ > 策略 ,然后单击会话。
- 在配置实用程序中的配置选项卡的导航窗格中,展开 NetScaler Gateway > 策略\ > 身份验证/授权,然后单击预身份验证 EPA。
- 在详细信息窗格的“策略”选项卡上,单击“添加”。
- 在名称中,键入策略的名称。
- 在匹配任何表达式旁边,单击添加。
- 在“添加表达式”对话框的“表达式类型”中,选择“客户端安全”。
- 配置以下内容的设置:
- 在组件中,选择注册表。
- 在名称中,键入注册表项的名称。
- 在限定符中,留空或选择值。
- 在 Operator 中,执行以下操作之一:
- 如果限定符留空,请选择“EXISTS”或“NOTEXISTS”
- 如果您在限定词中选择了值,请选择 == 或!==
- 在“值”中,键入注册表编辑器中显示的值,单击“确定”,然后单击“关闭”。
配置复合客户端设备检查表达式
您可以组合客户端设备检查字符串以形成复合客户端设备检查表达式。
NetScaler Gateway 中支持的布尔运算符包括:
- 和 (&&)
-
或者 ( - Not (!)
为了提高精度,您可以使用括号将字符串组合在一起。
注意:
如果使用命令行配置表达式,请在形成复合表达式时使用圆括号将设备检查表达式分组在一起。使用括号可以改善对客户端表达式的理解和调试。
使用 AND (&&) 运算符配置策略
AND (&&) 运算符的工作原理是合并两个客户端设备检查字符串,这样复合校验只有在两个校验都为 True 时才能通过。从左到右计算表达式,如果第一次检查失败,则不会执行第二次检查。
您可以使用关键字“AND”或符号“&&”配置 AND (&&) 运算符。
示例:
以下是客户端设备检查,用于确定用户设备是否已安装并正在运行版本 7.0 的 Sophos 防病毒软件。它还会检查 Net Logon 服务是否在同一台计算机上运行。
CLIENT.APPLICATION.AV(sophos).version==7.0 AND CLIENT.SVC(netlogon) EXISTS
此字符串也可以配置为:
CLIENT.APPLICATION.AV(sophos).version==7.0 && CLIENT.SVC(netlogon) EXISTS
使用 OR (||) 运算符配置策略
OR (||)
运算符的工作原理是组合两个设备校验字符串。当任何一项检查为 true 时,复合检查通过。从左到右计算表达式,如果第一次检查通过,则不会执行第二次检查。如果第一次检查没有通过,则执行第二次检查。
可以使用关键字 OR
或符号 ||
配置 OR (||)
运算符。
示例:
下面是客户端设备检查,用于确定用户设备上是否有文件 c:\\file.txt
或者正在运行 putty.exe
进程。
client.file(c:\\\\\\\\file.txt) EXISTS) OR (client.proc(putty.exe) EXISTS
此字符串也可以配置为
client.file(c:\\\\\\\\file.txt) EXISTS) || (client.proc(putty.exe) EXISTS
使用 NOT (!) 运算符配置策略
NOT (!) 或者否定运算符否定客户端设备检查字符串。
示例:
如果文件 c:\sophos_virus_defs.dat 文件的存在时间不超过两天,则会通过以下客户端设备检查:
\!(client.file(c:\\\\\\\\sophos\_virus\_defs.dat).timestamp==2dy)