ADC

Web App Firewall 日志

Web App Firewall 会生成用于跟踪配置、策略调用和安全检查违规详细信息的日志消息。

当您为安全检查或签名启用日志操作时,生成的日志消息将提供有关 Web App Firewall 在保护您的网站和应用程序时观察到的请求和响应的信息。最重要的信息是 Web App Firewall 在观察到签名或安全检查冲突时所采取的措施。对于某些安全检查,日志消息可以提供有用的信息,例如触发违规的用户位置或检测到的模式。日志中的违规消息数量过度增加可能表明恶意请求激增。该消息提醒您,您的应用程序可能受到攻击,以利用 Web App Firewall 保护检测到并阻止的特定漏洞。

注意:

Citrix Web App Firewall 日志记录只能与外部 SYSLOG 服务器一起使用。

NetScaler ADC(本机)格式化日志

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

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

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

本机格式日志消息示例

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_cross-site scripting 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>
<!--NeedCopy-->

通用事件格式 (CEF) 日志

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

分析 CEF 日志消息

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

  • src — 源 IP 地址
  • spt — 源端口号
  • 请求 — 请求 URL
  • act – action(例如 blocked、transformed)
  • msg — 关于观察到的安全检查违规的消息
  • cn1 — 事件 ID
  • cn2 — HTTP 交易 ID
  • cs1 — 配置文件名称
  • cs2 — PPE ID(例如 PPE1)
  • cs3-会话 ID
  • 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
<!--NeedCopy-->

上述消息可以分解为不同的组件。请参阅 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
<!--NeedCopy-->

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
<!--NeedCopy-->

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
<!--NeedCopy-->

在 Web App Firewall 违例消息中记录地理位置

日志详细信息可识别请求的发起位置,并帮助您配置 Web App Firewall 以获得最佳安全级别。为了绕过依赖于客户端 IP 地址的速率限制等安全实施,恶意软件或恶意计算机可能会不断更改请求中的源 IP 地址。识别请求来自的特定区域有助于确定请求是来自有效用户还是来自试图发起网络攻击的设备。例如,如果从特定区域收到的请求数量过多,则很容易确定这些请求是由用户发送还是由恶意计算机发送。对接收到的流量进行地理位置分析有助于转移诸如拒绝服务 (DoS) 攻击之类的攻击。

Web App Firewall 为您提供了使用内置 NetScaler ADC 数据库来识别与发起恶意请求的 IP 地址对应的位置的便利。然后,您可以对来自这些位置的请求实施更高级别的安全性。Citrix default syntax (PI) 表达式使您可以灵活地配置基于位置的策略,这些策略可与内置位置数据库一起使用以自定义防火墙保护,从而增强对特定区域中恶意客户端发起的协同攻击的防御能力。

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

注意:

地理位置记录使用通用事件格式 (CEF)。默认情况下, CEF loggingGeoLocationLogging 为关。必须明确启用这两个参数。

显示地理位置信息的 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
<!--NeedCopy-->

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

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
<!--NeedCopy-->

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

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

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

  • 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 命令启用地理位置记录。您可以同时启用 CEF 日志记录。使用 unset 命令禁用地理位置记录。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
<!--NeedCopy-->
> 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
<!--NeedCopy-->
> add appfw profile test_profile
 Done
<!--NeedCopy-->
> add appfw policy appfw_pol true test_profile -logAction custom1
 Done
<!--NeedCopy-->

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

Web App Firewall 为您提供了隔离 Web App Firewall 安全日志消息并将其重定向到其他日志文件的选项。如果 Web App Firewall 正在生成许多日志,从而难以查看其他 NetScaler ADC 日志消息,则可能需要这样做。当您只想查看 Web App Firewall 日志消息而不想看到其他日志消息时,也可以使用此选项。

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

示例:

  1. 切换到命令行管理程序并使用 vi 之类的编辑器来编辑 /etc/syslog.conf 文件。添加一个新条目以使用 local2.* 将日志发送到单独的文件,如以下示例所示:

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

  2. 重新启动 syslog 进程。您可以使用 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 策略。Citrix 建议您配置高级 SYSLOG 策略。

    高级 SYSLOG 策略配置

    add audit syslogAction sysact1 1.1.1.1 -logLevel ALL -logFacility LOCAL2

    add audit syslogPolicy syspol1 true sysact1

    bind audit syslogGlobal -policyName syspol1 -priority 100 -globalBindType APPFW_GLOBAL

    经典 SYSLOG 策略配置

    add audit syslogAction sysact1 1.1.1.1 -logLevel ALL -logFacility LOCAL2

    add audit syslogPolicy syspol1 true sysact1

    bind audit syslogGlobal -policyName syspol1 -priority 100 -globalBindType APPFW_GLOBAL

  4. 现在,所有 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 文件中。

注意:

如果要将日志发送到本地 NetScaler ADC 设备上的其他日志文件,则可以在该本地 NetScaler ADC 设备上创建系统日志服务器。将 syslogaction 添加到它自己的 IP,然后像配置外部服务器一样配置 ADC。ADC 充当存储日志的服务器。不能使用相同的 IP 和端口添加两个操作。在 syslogaction 中,默认情况下,IP 的值设置为 127.0.0.1,端口的值设置为 514

查看 Web App Firewall 日志

您可以使用 syslog 查看器或登录 NetScaler ADC 设备、打开 UNIX shell 并使用您选择的 UNIX 文本编辑器来查看日志。

使用命令行访问日志消息

切换到 shell 并尾随 /var/log/ 文件夹中的 ns.logs,以访问与 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 Viewer)。您可以通过多种方式访问 Syslog 查看器:

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

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

  • 文件-默认情况下,当前 /var/log/ns.log 文件处于选中状态,相应的消息将显示在 Syslog Viewer 中。/var/log 目录中其他日志文件的列表,格式为.gz 压缩。要下载和解压缩已存档的日志文件,请从下拉列表选项中选择日志文件。然后,与所选文件有关的日志消息将显示在 syslog 查看器中。要刷新显示内容,请单击“刷新”图标(两个箭头的圆圈)。

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

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

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

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

如果将光标置于特定日志消息的行中,则日志消息下方会显示多个选项,例如“模块”、“事件类型”、“事件 ID”或“消息”。您可以选择这些选项中的任何一个来突出显示日志中的相应信息。

重要内容

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

使用正则表达式模式掩盖敏感数据

日志表达式(绑定到 Web App Firewall (WAF) 配置文件)中的 REGEX_REPLACE 高级策略 (PI) 功能使您能够屏蔽 WAF 日志中的敏感数据。您可以使用选项使用正则表达式模式掩码数据,并提供字符或字符串模式来掩盖数据。此外,您可以配置 PI 函数以替换第一次出现或所有出现的正则表达式模式。

默认情况下,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"

使用 NetScaler 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. 单击创建关闭