Citrix ADC

Web App Firewall 日志

Web App Firewall 生成的日志消息对于跟踪配置更改、Web App Firewall 策略调用和安全检查冲突非常有用。

为安全检查或签名启用日志操作后,生成的日志消息将提供有关 Web App Firewall 在保护您的网站和应用程序时观察到的请求和响应的信息。最重要的信息是 Web App Firewall 在观察到签名或安全检查冲突时采取的操作。对于某些安全检查,日志消息可以提供其他有用的信息,例如触发冲突的位置和检测到的特征码。您可以在非阻止模式下部署安全检查并监视日志,以确定触发安全冲突的事务是否是有效的事务(误报)。如果是,则可以删除或重新配置签名或安全检查、部署放宽或采取其他适当措施来减少误报,然后再启用对该签名或安全检查的阻止。日志中的冲突消息数量过多增加可能表明恶意请求激增。这可能会提醒您,您的应用程序可能受到攻击,以利用 Web App Firewall 保护检测到并阻止的特定漏洞。

Citrix ADC(本机)格式日志

默认情况下,Web App Firewall 使用 Citrix ADC 格式日志(也称为本机格式日志)。这些日志格式与其他 Citrix ADC 功能生成的日志格式相同。每个日志都包含以下字段:

  • 时间戳。发生连接的日期和时间。
  • 严重性。日志的严重性级别。
  • 模块。生成日志条目的 Citrix ADC 模块。
  • 事件类型。事件类型,例如签名冲突或安全检查冲突。
  • 事件 ID。分配给事件的 ID。
  • 客户端 IP。已记录连接的用户的 IP 地址。
  • 交易编号。分配给导致日志的事务的 ID。
  • 会话 ID。分配给导致日志的用户会话的 ID。
  • 消息。日志消息。包含识别触发日志条目的签名或安全检查的信息。

您可以搜索这些字段中的任何一个,也可以搜索不同字段中的任何信息组合。您的选择仅受您用于查看日志的工具的功能的限制。您可以通过访问 Citrix ADC 系统日志查看器在 GUI 中观察 Web App Firewall 日志消息,也可以手动连接到 Citrix ADC 设备并从命令行界面访问日志,也可以直接从 /var/log/文件夹放入 shell 并对日志进行尾部。

本机格式日志消息的示例

Jun 22 19:14:37 <local0.info> 10.217.31.98 06/22/2015:19:14:37 GMT ns 0-PPE-1 :
default APPFW APPFW_XSS 60 0 :  10.217.253.62 616-PPE1 y/3upt2K8ySWWId3Kavbxyni7Rw0000
pr_ffc http://aaron.stratum8.net/FFC/login.php?login_name=abc&passwd=
12345&drinking_pref=on&text_area=%3Cscript%3E%0D%0A&loginButton=ClickToLogin&as_sfid=
AAAAAAWEXcNQLlSokNmqaYF6dvfqlChNzSMsdyO9JXOJomm2v
BwAMOqZIChv21EcgBc3rexIUcfm0vckKlsgoOeC_BArx1Ic4NLxxkWMtrJe4H7SOfkiv9NL7AG4juPIanTvVo
%3D&as_fid=feeec8758b41740eedeeb6b35b85dfd3d5def30c Cross-site script check failed for
field text_area="Bad tag: script" <blocked>

常见事件格式 (CEF) 日志

Web App Firewall 亦支持 CEF 日志。CEF 是一个开放日志管理标准,提高来自不同安全和网络设备和应用程序的安全相关信息的互操作性。通过 CEF,客户可以使用通用的事件日志格式,让企业管理系统能够轻松地收集和汇总数据,以便进行分析。日志消息被分成不同的字段,以便您可以轻松地解析消息并编写脚本以识别重要信息。

分析 CEF 日志信息

除了日期、时间戳、客户端 IP、日志格式、设备、公司、构建版本、模块和安全检查信息外,Web App Firewall CEF 日志消息还包括以下详细信息:

  • src — 源 IP 地址
  • 小组委员会 — 源端口号
  • 请求-请求 URL
  • 行为-操作(例如阻止,转换)
  • msg — 消息(关于观察到的安全检查冲突的消息)
  • cn1 — 事件编号
  • cn2 — HTTP 事务 ID
  • cs1 — 个人资料名称
  • cs2 – PPE ID(例如 PPE1)
  • cs3-会话编号
  • cs4-严重性(例如信息、警报)
  • cs5 — 事件年份
  • cs6-签名冲突类别
  • 方法-方法(例如 GET/POST)

例如,考虑以下 CEF 格式的日志消息,该消息是在触发“开始”URL 冲突时生成的:

Jun 12 23:37:17 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0
|APPFW|APPFW_STARTURL|6|src=10.217.253.62 spt=47606 method=GET
request=http://aaron.stratum8.net/FFC/login.html msg=Disallow Illegal URL. cn1=1340
cn2=653 cs1=pr_ffc cs2=PPE1 cs3=EsdGd3VD0OaaURLcZnj05Y6DOmE0002 cs4=ALERT cs5=2015
act=blocked

上述消息可以分解为不同的组件。请参阅CEP 日志组件表格。

CEF 日志格式的请求检查冲突示例:请求未被阻止

Jun 13 00:21:28 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|
APPFW_FIELDCONSISTENCY|6|src=10.217.253.62 spt=761 method=GET request=
http://aaron.stratum8.net/FFC/login.php?login_name=abc&passwd=
123456789234&drinking_pref=on&text_area=&loginButton=ClickToLogin&as_sfid
=AAAAAAWIahZuYoIFbjBhYMP05mJLTwEfIY0a7AKGMg3jIBaKmwtK4t7M7lNxOgj7Gmd3SZc8KUj6CR6a
7W5kIWDRHN8PtK1Zc-txHkHNx1WknuG9DzTuM7t1THhluevXu9I4kp8%3D&as_fid=feeec8758b4174
0eedeeb6b35b85dfd3d5def30c msg=Field consistency check failed for field passwd cn1=1401
cn2=707 cs1=pr_ffc cs2=PPE1 cs3=Ycby5IvjL6FoVa6Ah94QFTIUpC80001 cs4=ALERT cs5=2015 act=
not blocked

CEF 格式的响应检查冲突示例:响应被转换

Jun 13 00:25:31 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|
APPFW_SAFECOMMERCE|6|src=10.217.253.62 spt=34041 method=GET request=
http://aaron.stratum8.net/FFC/CreditCardMind.html msg=Maximum number of potential credit
card numbers seen cn1=1470 cn2=708 cs1=pr_ffc cs2=PPE1
cs3=Ycby5IvjL6FoVa6Ah94QFTIUpC80001 cs4=ALERT cs5=2015 act=transformed

CEF 格式的请求方签名冲突示例:请求被阻止

Jun 13 01:11:09 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|
APPFW_SIGNATURE_MATCH|6|src=10.217.253.62 spt=61141 method=GET request=
http://aaron.stratum8.net/FFC/wwwboard/passwd.txt msg=Signature violation rule ID 807:
web-cgi /wwwboard/passwd.txt access  cn1=140 cn2=841 cs1=pr_ffc cs2=PPE0
cs3=OyTgjbXBqcpBFeENKDlde3OkMQ00001 cs4=ALERT cs5=2015 cs6=web-cgi act=blocked

在 Web App Firewall 冲突消息中记录地理位置

地理位置标识发出请求的地理位置,可帮助您配置 Web App Firewall 以获得最佳安全级别。要绕过依赖于客户端 IP 地址的安全实现(例如速率限制),恶意软件或流氓计算机可以不断更改请求中的源 IP 地址。识别请求来自何处的特定区域有助于确定请求是来自试图发起网络攻击的有效用户还是来自试图发起网络攻击的设备。例如,如果从特定区域收到过多的请求,则很容易确定这些请求是由用户还是流氓机器发送。接收到的流量的地理定位分析对于偏移攻击(如拒绝服务 (DoS) 攻击)非常有用。

通过 Web App Firewall,您可以方便地使用内置 Citrix ADC 数据库来识别与恶意请求源自的 IP 地址相对应的位置。然后,您可以对来自这些位置的请求强制执行更高级别的安全性。Citrix 默认语法 (PI) 表达式允许您灵活配置基于位置的策略,这些策略可与内置位置数据库结合使用,以自定义防火墙保护,从而加强防御工作,防御从特定区域的流氓客户端启动的协调攻击。

您可以使用 Citrix ADC 内置数据库,也可以使用任何其他数据库。如果数据库没有特定客户端 IP 地址的任何位置信息,CEF 日志将地理定位显示为未知地理定位。

注意:地理位置日志记录使用通用事件格式 (CEF)。默认情况下,CEF 日志记录和 GeoLocationLogging 处于关闭状态。您必须显式启用这两个参数。

显示地理位置信息的 CEF 日志消息示例

June 8 00:21:09 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|
APPFW_STARTURL|6|src=10.217.253.62 geolocation=NorthAmerica.US.Arizona.Tucson.\*.\*
spt=18655 method=GET request=http://aaron.stratum8.net/FFC/login.html
msg=Disallow Illegal URL. cn1=77 cn2=1547 cs1=test_pr_adv cs2=PPE1
cs3=KDynjg1pbFtfhC/nt0rBU1o/Tyg0001 cs4=ALERT cs5=2015 act=not blocked

显示地理定位 = 未知的日志消息示例

June 9 23:50:53 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|
APPFW|APPFW_STARTURL|6|src=10.217.30.251 geolocation=Unknown spt=5086
method=GET request=http://aaron.stratum8.net/FFC/login.html msg=Disallow Illegal URL.
cn1=74 cn2=1576 cs1=test_pr_adv cs2=PPE2 cs3=PyR0eOEM4gf6GJiTyauiHByL88E0002
cs4=ALERT cs5=2015 act=not blocked

使用命令行配置日志操作和其他日志参数

使用命令行配置配置文件安全检查的日志操作

在命令提示窗口中,键入以下命令之一:

  • set appfw profile <name> SecurityCheckAction ([log] | [none])
  • unset appfw profile <name> SecurityCheckAction

示例

set appfw profile pr_ffc StartURLAction log

unset appfw profile pr_ffc StartURLAction

使用命令行配置 CEF 日志记录

默认情况下,CEF 日志记录处于禁用状态。在命令提示符下,键入以下命令之一以更改或显示当前设置:

  • set appfw settings CEFLogging on
  • unset appfw settings CEFLogging
  • sh appfw settings | grep CEFLogging

使用命令行配置信用卡号的日志记录

在命令提示窗口中,键入以下命令之一:

  • set appfw profile <name> -doSecureCreditCardLogging ([ON] | [OFF])
  • unset appfw profile <name> -doSecureCreditCardLogging

使用命令行配置地理位置日志记录

  1. 使用 set 命令启用 GeoLocationLogging。您可以同时启用 CEF 日志记录。使用取消设置命令禁用地理定位日志记录。show 命令显示所有 Web App Firewall 参数的当前设置,除非包含 grep 命令以显示特定参数的设置。

    • set appfw settings GeoLocationLogging ON [CEFLogging ON]
    • unset appfw settings GeoLocationLogging
    • sh appfw settings | grep GeoLocationLogging
  2. 指定数据库

    add locationfile /var/netscaler/inbuilt_db/Citrix_netscaler_InBuilt_GeoIP_DB.csv

    add locationfile <path to database file>

自定义 Web App Firewall 日志

默认格式 (PI) 表达式使您可以灵活地自定义日志中包含的信息。您可以选择在 Web App Firewall 生成的日志消息中包含要捕获的特定数据。例如,如果您将 AAA-TM 身份验证与 Web App Firewall 安全检查一起使用,并且想知道触发安全检查冲突的访问 URL、请求 URL 的用户的名称、源 IP 地址以及用户发送请求的源端口,您可以可以使用以下命令指定包含所有数据的自定义日志消息:

> sh version
NetScaler NS12.1: Build 50.0013.nc, Date: Aug 28 2018, 10:51:08   (64-bit)
 Done
> add audit messageaction custom1 ALERT 'HTTP.REQ.URL + " " + HTTP.REQ.USER.NAME + " " + CLIENT.IP.SRC + ":" + CLIENT.TCP.SRCPORT'
Warning: HTTP.REQ.USER has been deprecated. Use AAA.USER instead.
 Done
> add appfw profile test_profile
 Done
> add appfw policy appfw_pol true test_profile -logAction custom1
 Done

配置 Syslog 策略以隔离 Web App Firewall 日志

Web App Firewall 为您提供了一个选项,用于隔离 Web App Firewall 安全日志消息并将其重定向到其他日志文件。如果 Web App Firewall 生成大量日志,从而难以查看其他 Citrix ADC 日志消息,则可能需要这样做。如果您仅对查看 Web App Firewall 日志消息感兴趣且不希望看到其他日志消息,也可以使用此选项。

要将 Web App Firewall 日志重定向到不同的日志文件,请配置 syslog 操作以将 Web App Firewall 日志发送到不同的日志设施。您可以在配置 syslog 策略时使用此操作,并将其全局绑定以供 Web App Firewall 使用。

示例

  1. 切换到 shell 并使用编辑器(如 vi)来编辑 /etc/syslog.conf 文件。添加一个新条目以使用 local2.* 将日志发送到单独的文件,如以下示例所示:

    local2.\* /var/log/ns.log.appfw

  2. 重新启动系统日志过程。您可以使用 grep 命令标识 syslog 进程 ID (PID),如以下示例所示:

    root@ns\# **ps -A | grep syslog**

    1063 ?? Ss 0:03.00 /usr/sbin/syslogd -b 127.0.0.1 -n -v -v -8 -C

    root@ns# **kill -HUP** 1063

  3. 在命令行界面中,配置 syslog 操作和策略。将其绑定为全球 Web App Firewall 策略。

> add audit syslogAction sysact 1.1.1.1 -logLevel ALL -logFacility LOCAL2

> add audit syslogPolicy syspol1 ns_true sysact1

> bind appfw global syspol1 100

  1. 所有 Web App Firewall 安全检查冲突现在都将重定向到 /var/log/ns.log.appfw 文件。您可以结尾此文件以查看在处理正在进行的流量过程中触发的 Web App Firewall 冲突。

    root@ns# tail -f ns.log.appfw

警告:如果您已将 syslog 策略配置为将日志重定向到其他日志设施,Web App Firewall 日志消息将不再显示在 /var/log/ns.log 文件中。

查看 Web App Firewall 日志

您可以使用系统日志查看器或登录 Citrix ADC 设备、打开 UNIX 外壳并使用您选择的 UNIX 文本编辑器来查看日志。

使用命令行访问日志消息

切换到 shell 并尾随 /var/log/ 文件夹中的 ns.log 以访问与 Web App Firewall 安全检查冲突相关的日志消息:

  • Shell
  • tail -f /var/log/ns.log

您可以使用 vi 编辑器或任何 Unix 文本编辑器或文本搜索工具来查看和筛选特定条目的日志。例如,您可以使用 grep 命令访问与信用卡冲突相关的日志消息:

  • tail -f /var/log/ns.log | grep SAFECOMMERCE

使用 GUI 访问日志消息

Citrix GUI 包含一个非常有用的工具(Syslog 查看器),用于分析日志消息。您有多个用于访问 Syslog 查看器的选项:

  • 要查看特定配置文件安全检查的日志消息,请导航到 Web App Firewall > 配置 件,选择目标配置文件,然后单击安全检查。突出显示目标安全检查的行,然后单击日志。当您直接从配置文件的选定安全检查访问日志时,它会过滤掉日志消息,并仅显示与所选安全检查的冲突相关的日志。Syslog 查看器可以显示 Web App Firewall 日志的本机格式以及 CEF 格式。但是,为了让 syslog 查看器过滤掉目标配置文件特定的日志消息,从配置文件访问时,日志必须采用 CEF 日志格式。
  • 您还可以通过导航到 Citrix ADC > 系统 > 审核 访问系统 日志查看器。在审核消息部分,单击 Syslog 消息链接以显示 Syslog 查看器,该查看器显示所有日志消息,包括所有配置文件的所有 Web App Firewall 安全检查冲突日志。这对于在请求处理过程中可能触发多个安全检查冲突时进行调试非常有用。
  • 导航到 Web App Firewall > 策略 > 审核 。在审核消息部分,单击 Syslog 消息链接以显示 Syslog 查看器,该查看器显示所有日志消息,包括所有配置文件的所有安全检查冲突日志。

基于 HTML 的 Syslog 查看器提供了以下筛选器选项,用于仅选择您感兴趣的日志消息:

  • F@@ile— 默认情况下选择当前 /var/log/ns.log 文件,并且相应的消息显示在 Syslog 查看器中。/var/log 目录中的其他日志文件列表以压缩的 .gz 格式提供。要下载和取消压缩存档的日志文件,只需从下拉选项中选择日志文件即可。然后,与所选文件相关的日志消息将显示在 syslog 查看器中。要刷新显示,请单击刷新图标(两个箭头圆圈)。

  • 模块列表框— 您可以选择要查看其日志的 Citrix ADC 模块。您可以将其设置为适用于 Web App Firewall 日志的 APPFW。

  • 事件类型”列表框-此框包含一组复选框,用于选择您感兴趣的事件类型。例如,若要查看与签名冲突有关的日志消息,您可以选中APPFW_Signature_Match复选框。同样,您可以选中一个复选框以启用您感兴趣的特定安全检查。您可以选择多个选项。

  • 严重性— 您可以选择特定严重性级别以仅显示该严重性级别的日志。如果要查看所有日志,请将所有复选框留空。

    要访问特定安全检查的 Web App Firewall 安全检查冲突日志消息,请在模块的下拉选项中选择 APPFW 进行筛选。“事件类型”显示一组丰富的选项,以进一步优化您的选择。例如,如果选中 APPFW_FIELDFORMAT 复选框并单击“应用”按钮,则系统日志查看器中只会出现与字段格式安全检查违规相关的日志消息。同样,如果选中APPFW_SQLAPPFW_STARTURL复选框并单击应用按钮,则系统日志查看器中只会显示与这两个安全检查冲突有关的日志消息。

如果将游标放在特定日志消息的行中,则日志消息下方会显示多个选项,例如 ModuleEventTypeEventIDClientIPTransactionID 等。您可以选择这些选项中的任何一个以突出显示日志中的相应信息。

单击部署:此功能仅在 GUI 中可用。您可以使用 Syslog 查看器不仅查看日志,还可以根据 Web App Firewall 安全检查冲突的日志消息部署放宽规则。此操作的日志消息必须采用 CEF 日志格式。如果可以为日志消息部署放宽规则,则该行的“Syslog 查看器”框的右边缘会出现一个复选框。选中该复选框,然后从“操作”列表中选择一个选项以部署松弛规则。“全部 编辑和部署、“ 部署全 部部署均可用作“操作”选项。例如,您可以选择要编辑和部署的单个日志消息。您还可以从一个或多个安全检查中选择多个日志消息的复选框,然后使用“部署”或“全部部署”选项。以下安全检查目前支持单击部署功能:

  • StartURL
  • URL 缓冲区溢出
  • SQL 注入
  • XSS
  • 字段一致性
  • Cookie 一致性

使用 GUI 中的“单击以部署”功能的步行

  1. 系统日志查看器中,在 模块 选项中选择 APPFW
  2. 选择要筛选相应日志消息的安全检查。
  3. 启用该复选框以选择规则。
  4. 使用 作”下拉列表的选项部署放宽规则。
  5. 验证规则是否显示在相应的放宽规则部分。

注意:

使用“单击 部署”选项部署 的 SQL 注入和 XSS 规则不包括精细粒度松弛建议。

重要内容

  • 支持 CEF 日志格式— CEF 日志格式选项提供了一个方便的选项,用于监视、分析和分析 Web App Firewall 日志消息,以识别攻击,微调配置的设置以减少误报,并收集统计数据。
  • 击部署— Syslog 查看器提供了一个选项,用于从一个方便的位置筛选、评估和部署针对单个或多个安全检查冲突的放宽规则。
  • 自定义日志消息的选项— 您可以使用高级 PI 表达式自定义日志消息,并包含要在日志中看到的数据。
  • 隔离 Web App Firewall 特定日志— 您可以选择筛选应用程序防火墙特定日志并将其重定向到单独的日志文件。
  • 远程日志记录— 您可以将日志消息重定向到远程 syslog 服务器。
  • 地理位置日志记录— 您可以将 Web App Firewall 配置为包括接收请求的区域的地理位置。内置的地理定位数据库可用,但您可以选择使用外部地理定位数据库。Citrix ADC 设备同时支持 IPv4 和 IPv6 静态地理定位数据库。
  • 信息丰富的日志消息— 以下是可包含在日志中的信息类型的一些示例,具体取决于配置:
    • 已触发 Web App Firewall 策略。
    • 触发了安全检查冲突。
    • 一项请求被认为格式不正确。
    • 请求或响应已被阻止或未被阻止。
    • 请求数据(如 SQL 或 XSS 特殊字符)或响应数据(如信用卡号或安全对象字符串)已转换。
    • 响应中的信用卡数量超过配置的限制。
    • 信用卡号码和类型。
    • 在签名规则中配置的日志字符串和签名 ID。
    • 有关请求来源的地理位置信息。
    • 受保护机密字段的屏蔽(X ‘d out)用户输入。

使用 RegEx 模式掩盖敏感数据

日志表达式(绑定到 Web 应用程序防火墙 (WAF) 配置文件)中的 REGEX_REPLACE 高级策略 (PI) 函数使您能够掩盖 WAF 日志中的敏感数据。您可以使用选项使用 regex 模式来掩盖数据,并提供字符或字符串模式来掩盖数据。此外,您可以配置 PI 函数以替换 regex 模式的第一个匹配项或所有匹配项。

默认情况下,Citrix GUI 界面提供以下掩码:

  • SSN
  • 信用卡
  • 密码
  • 用户名

掩盖 Web 应用程序防火墙日志中的敏感数据

您可以通过在绑定到 WAF 配置文件的日志表达式中配置 REGEX_REPLACE 高级策略表达式来掩盖 WAF 日志中的敏感数据。 要掩盖敏感数据,您必须完成以下步骤:

  1. 添加 Web 应用程序防火墙配置文件
  2. 将日志表达式绑定到 WAF 配置文件

添加 Web 应用程序防火墙配置文件

在命令提示窗口中,键入:

add appfw profile <name>

示例:

Add appfw profile testprofile1

将日志表达式与 Web 应用程序防火墙配置文件绑定

在命令提示窗口中,键入:

bind appfw profile <name> -logExpression <string> <expression> –comment <string>

示例:

bind appfw profile testProfile -logExpression "MaskSSN" "HTTP.REQ.BODY(10000).REGEX_REPLACE(re!\b\d{3}-\d{2}-\d{4}\b!, “xxx”, ALL)" -comment "SSN Masked"

使用 Citrix ADC GUI 掩盖 Web 应用程序防火墙日志中的敏感数据

  1. 在导航窗格上,展开安全 > Citrix Web App Firewall > 配置文件
  2. 配置文件 页上,单击 编辑
  3. Citrix Web App Firewall 配置文件 页面上,导航到高级设置部分,然后单击扩展日志记录

    扩展日志记录部分

  4. 扩展日志记录 部分中,单击 添加

    Citrix WAF 日志绑定

  5. 创建 Citrix Web App Firewall 扩展日志绑 定”页面上,设置以下参数:

    1. 名称。日志表达式的名称。
    2. 已启用。选择此选项可掩盖敏感数据。
    3. 日志掩码。选择要掩盖的数据。
    4. 表达式。输入使您能够掩盖 WAF 日志中的敏感数据的高级策略表达式
    5. 评论。有关屏蔽敏感数据的简要描述。
  6. 点击 创建关闭

    Citrix WAF 日志绑定