ADC

经典策略的教程示例

以下示例介绍了针对某些 Citrix ADC 功能(如 Citrix Gateway、应用程序防火墙和 SSL)的经典策略配置的有用示例。

本文档包括以下详细信息:

  • 用于检查有效客户端证书的 Citrix Gateway 策略
  • 保护购物车应用程序的应用程序防火墙策略
  • 保护脚本化网页的应用程序防火墙策略
  • 从特定 IP 删除数据包的 DNS 策略
  • 要求有效客户端证书的 SSL 策略

用于检查有效客户端证书的 Citrix Gateway 策略

以下策略使 Citrix ADC 能够确保客户端在与公司的 SSL VPN 建立连接之前提供有效证书。

使用命令行界面检查有效的客户端证书

  • 添加操作以执行客户端证书身份验证。

    add ssl action act1 -clientAuth DOCLIENTAUTH

  • 创建 SSL 策略以评估客户端请求。

    add ssl policy pol1 -rule "REQ.HTTP.METHOD == GET" -action act1

  • 添加重写操作以将证书颁发者详细信息插入到发送到 Web 服务器的请求的 HTTP 标头中。

    add rewrite action act2 insert_http_header "CertDN" CLIENT.SSL.CLIENT_CERT.SUBJECT

  • 如果客户端证书存在,则创建重写策略以插入证书颁发者详细信息。

    add rewrite policy pol2 "CLIENT.SSL.CLIENT_CERT.EXISTS" act2

    将这些新策略绑定到 Citrix ADC VIP 以使其生效。

保护购物车应用程序的应用程序防火墙策略

购物车应用程序处理敏感的客户信息,例如信用卡号和到期日期,并且它们可以访问后端数据库服务器。许多购物车应用程序还使用传统的 CGI 脚本,这些脚本可能包含编写时未知的安全漏洞,但现在已为黑客和身份盗贼所知。

购物车应用程序特别容易受到以下攻击:

  • Cookie 篡改。如果购物车应用程序使用 Cookie,并且未对用户返回到该应用程序的 Cookie 执行相应的检查,攻击者可以修改 Cookie 并根据其他用户的凭据获取对购物车应用程序的访问权限。一旦以该用户身份登录,攻击者可以获取有关合法用户的敏感私人信息,或者使用合法用户的帐户下单。
  • SQL 注入。购物车应用程序通常访问后端数据库服务器。除非应用程序在其 Web 表单的表单字段中返回的数据执行适当的安全检查,否则攻击者可以使用 Web 表单将未经授权的 SQL 命令注入到数据库服务器。攻击者通常使用这种类型的攻击来从数据库获取敏感的私人信息或修改数据库中的信息。

以下配置将保护购物车应用程序免受这些攻击和其他攻击。

使用配置实用程序保护购物车应用程序

  1. 导航到安全 > 应用程序防火墙 > 配置文件,然后单击添加。

  2. 在“创建应用程序防火墙配置文件”对话框的“配置文件名称”字段中,输入 shopping_cart。

  3. 在配置文件类型下拉列表中,选择 Web 应用程序。

  4. 在配置选择高级默认值中。

  5. 单击创建,然后单击关闭。

  6. 在详细信息视图中,双击新配置文件。

  7. 在“配置 Web 应用程序配置文件”对话框中,配置您的新配置文件,如下所述:

    • 单击“检查”选项卡,双击“开始 URL”检查,然后在“修改开始 URL 检查”对话框中单击“常规”选项卡并禁用阻止,并启用学习、日志记录、统计信息和 URL 关闭。单击确定,然后单击关闭。

      请注意,如果您使用的是命令行,则可以通过在提示符下键入以下内容并按 ENTER 来配置这些设置:

      set appfw profile shopping_cart -startURLAction LEARN LOG STATS -startURLClosure ON

    • 对于 Cookie 一致性检查和表单字段一致性检查,请使用类似于“修改开始 URL 检查”配置的方法禁用阻止并启用学习、日志记录和统计信息。

      如果使用命令行,则可以通过键入以下命令来配置这些设置:

      set appfw profile shopping_cart -cookieConsistencyAction LEARN LOG STATS

      set appfw profile shopping_cart -fieldConsistencyAction LEARN LOG STATS

    • 对于 SQL 注入检查,禁用阻止,并在“修改 SQL 注入检查”对话框、“常规”选项卡、“检查操作”部分启用学习、日志记录、统计信息和转换特殊字符。

      如果您使用的是命令行,则可以通过在提示符下键入以下内容并按 ENTER 来配置这些设置:

      set appfw profile shopping_cart -SQLInjectionAction LEARN LOG STATS -SQLInjectionTransformSpecialChars ON

    • 对于信用卡检查,请禁用阻止;启用信用卡号的日志记录、统计信息和屏蔽;并为您接受作为付款方式的信用卡启用保护。

      • 如果您使用的是配置实用程序,则可以在“修改信用卡检查”对话框、“常规”选项卡、“检查操作”部分中配置阻止、日志记录、统计信息和屏蔽(或 x-out)。您可以在同一对话框的“设置”选项卡中为特定信用卡配置保护。
      • 如果您使用的是命令行,则可以通过在提示符下键入以下内容并按 ENTER 来配置这些设置:

      set appfw profile shopping_cart -creditCardAction LOG STATS -creditCardXOut ON -creditCard <name> [<name>...]

      为 <name> 您替换您想要保护的信用卡的名称。对于签证,您可以替代签证。对于万事达卡,您可以替换万事达卡。对于美国运通卡,您可以代替美国运通卡。对于“发现”,您将“发现”替换为“发现”。对于大来俱乐部,您可以代替晚餐俱乐部。对于 JCB,您可以替换 JCB。

  8. 创建一个名为 shopping_cart 的策略,以检测到您的购物车应用程序的连接,并将 shopping_cart 配置文件应用于这些连接。

    若要检测到购物车的连接,请检查传入连接的 URL。如果您在单独的主机上托管您的购物车应用程序(出于安全和其他原因的明智措施),您可以简单地查找该主机在 URL 中的存在。如果您将您的购物车托管在处理其他流量的主机上的目录中,您必须确定连接将转到相应的目录和/或 HTML 页面。

    检测其中任何一个的过程是相同的;您可以基于以下表达式创建策略,并将正确的主机或 URL 替换为<string>

    REQ.HTTP.HEADER URL CONTAINS <string>
    <!--NeedCopy-->
    
    • 如果您使用的是配置实用程序,请导航到“应用程序防火墙策略”页面,单击“添加…”按钮添加新策略,然后按照“使用配置实用程序创建具有经典表达式的策略”中描述的策略创建过程进行操作。

    • 如果您使用的是命令行,请在提示符处键入以下命令,然后按 Enter 键:

      add appfw policy shopping_cart "REQ.HTTP.HEADER URL CONTAINS <string>" shopping_cart

  9. 全局绑定您的新策略以使其生效。

由于您希望确保此策略与购物车的所有连接匹配,并且不会被另一个更常规的策略抢占,因此您应该为其分配高优先级。如果您将其中一 (1) 作为优先级,则任何其他策略都不能先夺取此优先级。

用于保护脚本网页的应用程序防火墙策略

包含嵌入脚本的网页,特别是旧版 JavaScripts,通常违反“同一源规则”,该规则不允许脚本访问或修改任何服务器上的内容,但它们所在的服务器上的内容。此安全漏洞称为跨站点脚本。应用程序防火墙跨站点脚本规则通常会过滤掉包含跨站点脚本的请求。

不幸的是,这可能会导致具有较旧 JavaScripts 的网页停止工作,即使您的系统管理员已经检查了这些脚本并知道它们是安全的。下面的示例说明了如何配置应用程序防火墙以允许来自受信任来源的 Web 页中的跨站点脚本,而不会为其余网站禁用此重要筛选器。

使用命令行界面使用跨站点脚本保护 Web 页

  • 在命令行中,要创建高级配置文件,请键入:

    add appfw profile pr_xssokay -defaults advanced

  • 要配置配置文件,请键入:

    set appfw profile pr_xssokay -startURLAction NONE -startURLClosure OFF -cookieConsistencyAction LEARN LOG STATS -fieldConsistencyAction LEARN LOG STATS -crossSiteScriptingAction LEARN LOG STATS$"

  • 创建检测到脚本化网页的连接并应用 pr_xssokay 配置文件的策略,键入:

    add appfw policy pol_xssokay "REQ.HTTP.HEADER URL CONTAINS ^\\.pl\\?$ || REQ.HTTP.HEADER URL CONTAINS ^\\.js$" pr_xssokay

  • 全局绑定策略。

使用配置实用程序使用跨站点脚本保护 Web 页

  1. 导航到 安全 > 应用防火墙 > 配置文件。

  2. 在详细信息视图中,单击 添加。

  3. 在“创建应用程序防火墙配置文件”对话框中,创建具有高级默认值的 Web 应用程序配置文件,并将其命名为 pr_xssokay。单击创建,然后单击关闭。

  4. 在详细信息视图中,单击配置文件,单击打开,然后在配置 Web 应用程序配置文件对话框中配置 pr_xssokay 配置文件,如下所示。

    开始 URL 检查:清除所有操作。

    • Cookie 一致性检查:禁用阻止。
    • 表单字段一致性检查:禁用阻止。
    • 跨站点脚本检查:禁用阻止。

    这样可以防止阻止涉及使用跨站点脚本的网页的合法请求,但您知道仍然是安全的。

  5. 单击 策略,然后单击 添加。

  6. 在“创建应用程序防火墙策略”对话框中,创建一个用于检测到脚本化 Web 页的连接并应用 pr_xssokay 配置文件的策略:

    • 策略名称:pol_xssokay
    • 相关的配置文件: pr_xssokay
    策略表达式:”REQ.HTTP.HEADER URL CONTAINS ^.pl\?$
  7. 全局绑定您的新策略以使其生效。

从特定 IP 删除数据包的 DNS 策略

以下示例介绍如何创建 DNS 操作和 DNS 策略,以检测来自不需要的 IP 或网络(例如在 DDOS 攻击中使用的 IP 或网络)的连接,并从这些位置删除所有数据包。该示例显示了 IANA 保留 IP 块 192.168.0.0/16 中的网络。敌对网络通常位于公开路由 IP 上。

使用命令行界面从特定 IP 删除数据包

  • 要创建名为 pol_ddos_drop 的 DNS 策略,该策略可检测来自敌对网络的连接并删除这些数据包,请键入:

    add dns policy pol_ddos_drop 'client.ip.src.in_subnet(192.168.253.128/25) || client.ip.src.in_subnet(192.168.254.32/27)' -drop YES'

    对于 192.168.0.0/16 范围内的示例网络,您将要阻止的每个网络的 IP 和网络掩码替换为 ##.##.##.##/# 格式。您可以根据需要包含任意数量的网络,将每个 CLIENT.IP.SRC.IN_SUBNET(###.###.###.###./##) 命令与 OR 运算符分开。

  • 全局绑定您的新策略以使其生效。

SSL 策略要求有效的客户端证书

以下示例显示了一个 SSL 策略,该策略在启动与客户端的 SSL 连接之前检查用户的客户端证书有效性。

阻止具有过期客户端证书的用户的连接

  • 登录到命令行界面。

    如果您使用的是 GUI,请导航到 SSL 策略页面,然后在“数据”区域中单击“操作”选项卡。

  • 创建名为 act_current_client_cert 的 SSL 操作,该操作要求用户拥有当前客户端证书才能与 Citrix ADC 建立 SSL 连接。

    add ssl action act_current_client_cert-clientAuth DOCLIENTAUTH -clientCert ENABLED -certHeader "clientCertificateHeader" -clientCertNotBefore ENABLED -certNotBeforeHeader "Mon, 01 Jan 2007 00:00:00 GMT"

  • 创建一个名为 pol_current_client_cert 的 SSL 策略,用于检测到包含查询字符串的 Web 服务器的连接。

    add ssl policy pol_current_ client_cert 'REQ.SSL.CLIENT.CERT.VALIDFROM \>= "Mon, 01 Jan 2007 00:00:00 GMT"' act_block_ssl

  • 在全球范围内绑定您的新策略。

    由于除非适用更具体的 SSL 策略,否则此 SSL 策略应用于任何用户的 SSL 连接,因此您可能希望为其分配较低的优先级。如果您为其分配了一千 (1000) 的优先级,则应确保首先评估其他 SSL 策略,这意味着此策略仅适用于与更具体的策略条件不匹配的连接。