Citrix ADC

配置和使用学习功能

学习功能是一种重复的模式过滤器,它观察受Web应用程序防火墙保护的网站或应用程序上的活动,以确定哪些活动构成该网站或应用程序上的正常活动。然后,它为每个安全检查生成一个包含多达2000个建议规则或例外(放松)的列表,其中包括对学习功能的支持。用户通常发现,使用学习功能配置放松比手动输入必要的放松更容易。

支持学习特性的安全检查有:

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

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

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

除了字段格式规则外,学习不是只在松弛到位时才执行。当规则被跳过时,它们只是从已学习的数据库中删除。由于没有添加放松,它们可能会再次被学习。当部署规则时,它们将从学习的数据库中删除,并为规则添加松弛。随着放松的增加,它们将不再被学习。对于字段格式保护,学习的执行与松弛无关。

虽然可以使用命令行界面进行学习特性的基本配置,但该特性主要是为通过Web App Firewall向导或GUI进行配置而设计的。使用命令行只能对学习特性进行有限的配置。

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

学习数据库的大小被限制为20 MB,这是在每个启用学习的安全检查生成大约2000个学习规则或松弛后达到的。如果您没有定期检查并批准或忽略学习到的规则,并且达到了这个限制,则会在NetScaler日志中记录一个错误,并且在您检查现有的学习到的规则和松弛之前不会生成更多的学习到的规则。

如果由于数据库已达到其大小限制而停止学习,则可以通过检查现有的学习规则和松弛或重置学习数据来重新开始学习。在批准或忽略学习到的规则或松弛之后,将从数据库中删除它们。重置学习数据后,将从数据库中删除所有现有的学习数据,并将其重置为最小大小。当数据库大小降到20mb以下时,学习将自动重新开始。

通过命令行界面配置学习设置

指定要配置的Web App Firewall配置文件,并且对于要包含在该配置文件中的每个安全检查,指定最小阈值或百分比阈值。最小阈值是一个整数,表示Web应用防火墙在学习规则或松弛(默认值:1)之前必须处理的用户会话的最小数量。百分比阈值是一个整数,表示Web应用防火墙在学习规则或松弛(默认值:0)之前必须观察特定模式(URL, cookie,字段,附件或规则违反)的用户会话的百分比。使用以下命令:

  • set appfw learningsettings [-startURLMinThreshold ] [-startURLPercentThreshold ] [-cookieConsistencyMinThreshold ] [-CSRFtagMinThreshold ] [-CSRFtagPercentThreshold ] [-fieldConsistencyMinThreshold ] [-fieldConsistencyPercentThreshold ] [-crossSiteScriptingMinThreshold ][-crossSiteScriptingPercentThreshold ] [-SQLInjectionMinThreshold ] [-SQLInjectionPercentThreshold ] [-fieldFormatMinThreshold ] [-XMLWSIPercentThreshold ] [-XMLWSIPercentThreshold ] [-XMLAttachmentMinThreshold ] [-XMLAttachmentPercentThreshold ]
  • 保存ns config

例子

下面的示例启用并配置HTML SQL注入安全检查配置文件中的学习设置。这是一个合适的初始测试平台学习配置,您可以完全控制发送到Web应用程序防火墙的流量。

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

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

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

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

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

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

show appfw learningsettings

使用命令行界面显示概要文件未检查的已学习规则或松弛

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

show appfw learningdata

使用命令行界面从学习数据库中删除特定的未检查的学习规则或松弛项

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

rm appfw learningdata (-startURL | -cookieConsistency | (-fieldConsistency ) | (-crossSiteScripting ) | (-SQLInjection ) | (-fieldFormat ) | (-CSRFTag | -XMLWSICheck | -XMLAttachmentCheck ) [-TotalXMLRequests]

例子

属性的概要文件、HTML SQL注入安全检查的所有未检查的习得松弛都将被删除LastName形式字段。

rm appfw learningdata pr-basic -SQLInjection LastName 

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

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

重置appfw learningdata

通过命令行界面导出学习数据

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

export appfw learningdata [-target ]

例子

下面的示例将概要文件和HTML SQL注入安全检查的学习松弛导出到一个逗号分隔值(CSV)格式的文件,该文件位于/var/learnt_data/目录中,文件名在-target参数中指定。

export appfw learningdata pr-basic SQLInjection -target sqli_ld 

通过图形化界面配置Learning特性

  1. 导航到安全>Web应用防火墙>配置文件
  2. 配置文件窗格,选择概要文件,然后单击编辑
  3. 点击学习规则高级设置部分。
  4. 学习规则区域中,选择安全检查项,单击设置
  5. 安全检查设置页,设置以下参数:

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

    2. 次数阈值百分比。根据您正在配置的安全检查学习设置,次数百分比阈值可能是指在生成学习松弛之前,所观察到的违反安全检查的用户会话总数的百分比、请求的百分比或表单字段匹配特定字段类型的次数的百分比。默认值:0

  6. 点击好吧而且关闭

    学习规则部分

  7. 点击删除所有已学习的数据删除所有学习到的数据并重置学习特征,使其必须从头开始观察。

    注意:

    此按钮仅删除未审查和批准或跳过的已学习到的建议。它并不能消除已经被接受和部署的习得性放松。

  8. 单击,将学习引擎限制为来自特定ip的流量可信学习客户端,并将IP地址添加到列表中。
    1. 单击,将IP地址或IP地址范围添加到“可信学习客户端”列表中添加
    2. 添加可信学习客户端对话框,“可信客户端IP”列表框,输入CIDR格式的IP地址或IP地址范围。
    3. 在“注释”文本区域中,键入描述此IP地址或范围的注释。
    4. 点击创建将新的IP地址或范围添加到列表中。
    5. 如果需要修改已存在的IP地址或范围,单击IP地址或范围后,单击开放.除名称外,出现的对话框与添加可信学习客户端对话框。
    6. 若要禁用或启用某个IP地址或范围,但不显示在列表中,请单击该IP地址或范围,然后单击禁用或启用
    7. 单击需要删除的IP地址或范围,然后单击,可以完全删除该IP地址或范围删除
  9. 点击关闭,返回“配置Web应用防火墙配置文件”界面。
  10. 点击完成

通过使用GUI来回顾学习到的规则或松弛

  1. 导航到安全>Web应用防火墙>配置文件
  2. 配置文件窗格,选择概要文件,然后单击编辑
  3. 点击学习规则高级设置部分。
  4. 学习规则区域中,选择安全检查项,单击设置
  5. 要按分支树的层次结构查看学习到的数据,使您能够选择与许多学习到的模式相匹配的一般模式,请单击视觉型的人
  6. 如果您选择回顾实际学习的模式,请执行以下步骤。
  7. 选择第一个学会的放松,并选择如何处理它。

    1. 要修改并接受松弛,请单击编辑和部署,编辑松弛正则表达式,单击好吧
    2. 要接受不作修改的放宽,请单击部署
    3. 若要从列表中删除松弛而不部署它,请单击跳过
    4. 重复前面的步骤,复习每一个学习到的放松动作。
  8. 点击关闭回到管理学习规则对话框。
  9. 点击完成

    使用Visualizer学习规则部分