Citrix ADC

配置和使用学习功能

学习功能是一个重复模式过滤器,用于观察受 Web App Firewall 保护的网站或应用程序上的活动,以确定什么构成该网站或应用程序上的正常活动。然后,它会为包含对学习功能的支持的每个安全检查生成最多 2,000 个建议规则或异常(放宽)的列表。用户通常会发现通过使用学习功能来配置放宽,而不是手动输入必要的放宽操作。

支持学习功能的安全检查包括:

  • 开始 URL 检查
  • Cookie 一致性检查
  • 表单字段一致性检查
  • 字段格式检查
  • CSRF 表格标记检查
  • SQL 注入检查
  • HTML 跨站点脚本检查
  • XML 拒绝服务检查
  • XML 附件检查
  • Web 服务互操作性检查

使用学习功能时,您可以执行两种不同类型的活动。首先,启用并配置功能以使用它。您可以对流向受保护 Web 应用程序的所有流量使用学习,也可以配置 IP 列表(称为“添加可信学习客户端”列表),从中学习功能可以生成建议。其次,在启用该功能并处理了受保护网站的一定量流量后,您可以查看建议的规则和放宽(学习的规则)列表,并使用以下指定之一标记每个规则:

  • 编辑和部署。该规则将被拉到“编辑”对话框中,以便您可以对其进行修改,并部署修改后的表单。
  • 部署。未修改的学习规则被放置在此安全检查的规则或放宽列表中。
  • 跳过。学习的规则被放置在未部署的规则或放宽的列表中。已学习的规则在跳过时被删除。但是,由于它们没有添加到放宽中,它们可能会再次学习。

除了字段格式规则之外,不仅在放松时才执行学习。跳过规则时,它们只会从学习的数据库中删除。由于没有添加放宽,因此可能会再次学习。部署规则时,这些规则将从学习的数据库中删除,并为规则添加放松。随着放宽功能被添加,它们将不会再学习。对于 fieldformat 保护,无论放松如何,都会执行学习。

尽管您可以使用命令行界面进行学习功能的基本配置,但该功能主要用于通过 Web App Firewall 向导或 GUI 进行配置。使用命令行只能对学习功能进行有限的配置。

该向导将学习功能的配置与 Web App Firewall 的配置整体集成在一起,因此是在新 Citrix ADC 设备上或管理简单 Web App Firewall 配置时配置此功能的最简单方法。GUI 可视化工具和手动界面都提供了对所有安全检查的所有学习规则的直接访问,因此,当您必须查看大量安全检查的学习规则时,通常更为可取。

学习数据库的大小限制为 20 MB,在每次启用学习的安全检查生成大约 2,000 个已学习规则或放宽后才能达到该数据库。如果您未定期查看并批准或忽略已学习的规则并达到此限制,则 NetScaler 日志将记录错误,并且在查看现有学习的规则和放宽之前不会生成更多学习的规则。

如果学习因数据库已达到其大小限制而停止,则可以通过查看现有学习规则和放宽或重置学习数据来重新启动学习。批准或忽略了学习的规则或放宽后,它们将从数据库中删除。重置学习数据后,所有现有的学习数据将从数据库中删除,并将其重置为其最小大小。当数据库大小低于 20 MB 时,学习会自动重新启动。

使用命令行界面配置学习设置

指定要配置的 Web App Firewall 配置文件,并针对要包含在该配置文件中的每个安全检查,指定最小阈值或百分比阈值。最小阈值是一个整数,表示 Web App Firewall 在学习规则或放宽之前必须处理的最小用户会话数(默认值:1)。百分比阈值是一个整数,表示 Web App Firewall 在学习规则或放宽之前必须遵守特定模式(URL、cookie、字段、附件或规则冲突)的用户会话的百分比(默认值:0)。使用以下命令:

  • set appfw learningsettings <profileName> [-startURLMinThreshold <positive_integer>] [-startURLPercentThreshold <positive_integer>] [-cookieConsistencyMinThreshold <positive_integer>] [-cookieConsistencyPercentThreshold <positive_integer>] [-CSRFtagMinThreshold <positive_integer>] [-CSRFtagPercentThreshold <positive_integer>] [-fieldConsistencyMinThreshold <positive_integer>] [-fieldConsistencyPercentThreshold <positive_integer>] [-crossSiteScriptingMinThreshold <positive_integer>] [-crossSiteScriptingPercentThreshold <positive_integer>] [-SQLInjectionMinThreshold <positive_integer>] [-SQLInjectionPercentThreshold <positive_integer>] [-fieldFormatMinThreshold <positive_integer>] [-fieldFormatPercentThreshold <positive_integer>] [-XMLWSIMinThreshold <positive_integer>] [-XMLWSIPercentThreshold <positive_integer>] [-XMLAttachmentMinThreshold <positive_integer>] [-XMLAttachmentPercentThreshold <positive_integer>]
  • save ns config

示例

以下示例启用和配置 HTML SQL 注入安全检查的配置文件 pr-基本学习设置。这是一个适当的初始测试床学习配置,您可以完全控制发送到 Web App Firewall 的流量。

set appfw learningsettings pr-basic -SQLInjectionMinThreshold 10
set appfw learningsettings pr-basic -SQLInjectionPercentThreshold 70
save ns config

使用命令行界面将学习设置重置为默认值

要删除指定配置文件和安全检查的学习设置的任何自定义配置,并将学习设置恢复为默认值,请在命令提示符处键入以下命令:

  • unset appfw learningsettings <profileName> [-startURLMinThreshold ] [-startURLPercentThreshold] [-cookieConsistencyMinThreshold] [-cookieConsistencyPercentThreshold] [-CSRFtagMinThreshold ] [-CSRFtagPercentThreshold ] [-fieldConsistencyMinThreshold ] [-fieldConsistencyPercentThreshold ] [-crossSiteScriptingMinThreshold ] [-crossSiteScriptingPercentThreshold ] [-SQLInjectionMinThreshold ] [-SQLInjectionPercentThreshold ] [-fieldFormatMinThreshold] [-fieldFormatPercentThreshold ] [-XMLWSIMinThreshold ] [-XMLWSIPercentThreshold ] [-XMLAttachmentMinThreshold ] [-XMLAttachmentPercentThreshold]
  • save ns config

使用命令行界面显示配置文件的学习设置

在命令提示符下,键入以下命令:

show appfw learningsettings <profileName>

使用命令行界面显示配置文件的未查看的学习规则或放宽功能

在命令提示符下,键入以下命令:

show appfw learningdata <profileName> <securityCheck>

使用命令行界面从学习数据库中删除特定未审查的已学习规则或放宽

在命令提示符下,键入以下命令:

rm appfw learningdata <profileName> (-startURL <expression> | -cookieConsistency <string> | (-fieldConsistency <string> <formActionURL>) | (-crossSiteScripting <string> <formActionURL>) | (-SQLInjection <string> <formActionURL>) | (-fieldFormat <string><formActionURL>) | (-CSRFTag <expression> <CSRFFormOriginURL>) | -XMLDoSCheck <expression> | -XMLWSICheck <expression> | -XMLAttachmentCheck <expression>) [-TotalXMLRequests]

示例

以下示例删除应用于 LastName 表单字段的 pr-Basic 配置文件 HTML SQL 注入安全检查的所有未查看的学习放宽。

rm appfw learningdata pr-basic -SQLInjection LastName

使用命令行界面删除所有未查看的学习数据

在命令提示符下,键入以下命令:

reset appfw learningdata

使用命令行界面导出学习数据

在命令提示符下,键入以下命令:

export appfw learningdata <profileName> <securitycheck>[-target <string>]

示例

以下示例将已学习的 pr-基本配置文件和 HTML SQL 注入安全检查的放宽导出到-target 参数中指定的文件名下的 /var/learnt_data/ 目录中的逗号分隔值 (CSV) 格式文件。

export appfw learningdata pr-basic SQLInjection -target sqli_ld

使用 GUI 配置学习功能

  1. 导航到安全 > Web App Firewall > 配置文件
  2. 在配 置文件 窗格中,选择配置文件,然后单击 编辑
  3. 单击学习选项卡。学习选项卡顶部是当前配置文件中可用且支持学习功能的安全检查列表。
  4. 若要配置学习阈值,请选择一个安全检查,然后在以下文本框中键入相应的值:

    最小数量阈值。根据您正在配置的安全检查的学习设置,最小数量阈值可能是指必须遵守的最小总用户会话数、必须遵守的最小请求数或必须遵守特定表单字段的最小次数,在生成学习的放宽之前。默认值:1

    门槛值的次数百分比。根据您正在配置的安全检查学习设置,次数百分比阈值可能是指冲突安全检查的观察用户会话总数的百分比、请求的百分比或表单字段匹配特定字段类型的次数百分比,之前学会放宽产生。默认值:0

  5. 若要删除所有学习的数据并重置学习功能,以便必须从头开始再次开始观察,请单击删除所有学习的数据。 注意:此按钮仅删除尚未审核、批准或跳过的学习建议。它不会删除已接受和部署的学习放宽。
  6. 若要将学习引擎限制为来自特定 IP 集的流量,请单击受信任的学习客户端,然后将要使用的 IP 地址添加到列表中。
    1. 若要将 IP 地址或 IP 地址范围添加到“受信任的学习客户端”列表中,请单击添加
    2. 添加受信任的学习客户端对话框的“受信任的客户端 IP”列表框中,键入 CIDR 格式的 IP 地址或 IP 地址范围。
    3. 在“注释”文本区域中,键入描述此 IP 地址或范围的注释。
    4. 单击创建将您的新 IP 地址或范围添加到列表中。
    5. 若要修改现有 IP 地址或范围,请单击 IP 地址或范围,然后单击 打开。除名称外,显示的对话框与添加受信任的学习客户端对话框相同。
    6. 要禁用或启用 IP 地址或范围,但将其保留在列表中,请单击 IP 地址或范围,然后根据需要单击禁用或启用
    7. 若要完全删除 IP 地址或范围,请单击 IP 地址或范围,然后单击 删除
  7. 单击关闭返回到“配置 Web App Firewall 配置文件”对话框。
  8. 单击关闭以关闭配置 Web App Firewall 配置文件对话框,然后返回Web App Firewall 配置文 件”屏幕。

使用 GUI 查看学习的规则或放宽

  1. 导航到安全 > Web App Firewall > 配置文件
  2. 选择要查看已学习规则或放宽的安全检查,然后单击管理规则
  3. 管理学习规则对话框中,选择要查看学习规则的方式。

    • 要查看窗口中显示的实际学习模式,不执行任何操作,然后继续下一步。
    • 要将学到的数据作为分支树进行分层查看,从而使您能够选择与许多学习模式匹配的常规模式,请单击可视化工具
  4. 如果您选择查看实际学习的模式,请执行以下步骤。

    1. 选择第一学会放宽,并选择如何处理它。
    • 若要修改并接受松弛,请单击编辑和部署,编辑松弛正则表达式,然后单 击“确定
    • 要接受松弛而不进行修改,请单击部署
    • 若要在不部署的情况下从列表中删除松弛,请单击跳过
    1. 重复上一步,查看每个额外的学习放宽。
  5. 如果您选择使用学习可视化工具,请执行以下步骤。

    1. 在分支层次显示中,选择包含已学习模式的节点,然后选择如何处理该模式。

      树结构下方的屏幕区域,在选定节点的 Regex 下,显示与该节点中的所有模式匹配的广义表达式。如果要显示仅匹配其中一个分支或其中一个叶子的表达式,请选择该分支或叶子。

      • 若要修改并接受学习的放宽,请单击“编辑和部署”、编辑放宽正则表达式,然后单 击“确定”。

      • 若要在不修改的情况下接受放宽,请单击“部署”。

      • 若要在不部署的情况下从列表中删除修改,请单击 跳过

    2. 重复上一步以查看显示的其他部分。

  6. 单击关闭以返回到管理学习的规则对话框。
  7. 单击关闭返回到配置 Web App Firewall 配置文件对话框。
  8. 单击关闭以关闭配置 Web App Firewall 配置文件对话框,然后返回Web App Firewall 配置文 件”屏幕。