更新时间:2024-11-05 GMT+08:00

通过LTS记录WAF全量日志

启用WAF全量日志功能后,您可以将攻击日志、访问日志记录到云日志服务(Log Tank Service,简称LTS)中,通过LTS记录的WAF日志数据,快速高效地进行实时决策分析、设备运维管理以及业务趋势分析。

LTS对于采集的日志数据,通过海量日志数据的分析与处理,可以为您提供一个实时、高效、安全的日志处理能力。LTS默认存储日志的时间为7天,存储时间可以在1~30天之间进行设置,超出存储时间的日志数据将会被自动删除,对于需要长期存储的日志数据(日志持久化),LTS提供转储功能,可以将日志转储至对象存储服务(OBS)或者数据接入服务(DIS)中长期保存。

  • 在WAF管理控制台,您可以查看最近30天的防护日志。
  • LTS按流量单独计费。有关LTS的计费详情,请参见LTS价格详情
  • 如果您已开通企业项目,您需要在“企业项目”下拉列表中选择您所在的企业项目并确保已开通操作权限,才能开启该企业项目的全量日志。

系统影响

开启全量日志功能是将WAF日志记录到LTS,不影响WAF性能。

将防护日志配置到LTS

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域或项目。
  3. 单击页面左上方的,选择安全与合规 > Web应用防火墙 WAF
  4. 在左侧导航树中,选择“防护事件”,进入“防护事件”页面。
  5. 选择“全量日志”页签,开启全量日志,并选择日志组和日志流,相关参数说明如表1所示。

    图1 配置全量日志
    表1 全量日志配置参数

    参数

    参数说明

    取值样例

    选择日志组

    选择已创建的日志组,或者单击“查看日志组”,跳转到LTS管理控制台创建新的日志组。

    lts-group-waf

    记录攻击日志

    选择已创建的日志流,或者单击“查看日志流”,跳转到LTS管理控制台创建新的日志流。

    攻击日志记录每一个攻击告警信息,包括攻击事件类型、防护动作、攻击源IP等信息。

    lts-topic-waf-attack

    记录访问日志

    选择已创建的日志流,或者单击“查看日志流”,跳转到LTS管理控制台创建新的日志流。

    访问日志记录每一个HTTP访问的关键信息,包括访问时间、访问客户端IP、访问资源URL等信息。

    lts-topic-waf-access

  6. 单击“确定”,全量日志配置成功。

    您可以在LTS管理控制台查看WAF的防护日志。

在LTS上查看并下载WAF防护日志

当您将WAF防护日志配置记录到LTS上后,请参考以下操作步骤,在LTS管理控制台查看、分析、下载记录的WAF日志数据。

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域或项目。
  3. 单击页面左上方的,选择管理与监管 > 云日志服务 LTS,进入“日志管理”页面。
  4. 在日志组列表中,单击展开waf日志组(例如,“lts-group-waf”)。
  5. 在日志流列表,单击日志流名称,进入日志流日志页面,查看并分析日志。
  6. “日志搜索”页签,单击可下载日志流中的上报日志。

    本地下载:将日志文件直接下载到本地,单次下载支持最大5,000条日志。

    在下拉框中选择“.csv”“.txt”,单击“开始下载日志”,可将日志导出至本地。

    图2 下载日志

WAF访问日志access_log字段说明

字段

类型

字段说明

描述

access_log.requestid

string

随机ID标识

与攻击日志的“req_id” 字段末尾8个字符一致。

access_log.time

string

访问请求的时间

日志内容记录的GMT时间。

access_log.connection_requests

string

标识该长链接第几个请求

-

access_log.eng_ip

string

WAF引擎IP

-

access_log.pid

string

标识处理该请求的引擎

引擎(worker PID)。

access_log.hostid

string

访问请求的域名标识

防护域名ID(upstream_id)。

access_log.tenantid

string

防护域名的租户ID

一个华为账号对应一个租户ID。

access_log.projectid

string

防护域名的项目ID

用户在对应区域下的项目ID。

access_log.remote_ip

string

标识请求的四层远端 IP

请求的客户端IP。

须知:

如果在WAF前部署了7层代理,本字段表示最靠近WAF的代理节点的IP地址。此时,真实访问者IP参考“x-forwarded-for”“x_real_ip”字段。

access_log.remote_port

string

标识请求的四层远端端口号

请求的客户端端口号。

access_log.sip

string

标识请求的客户端 IP

如,XFF等。

access_log.scheme

string

请求协议类型

请求所使用的协议有:

  • http
  • https

access_log.response_code

string

请求响应码

源站返回给WAF的响应状态码。

access_log.method

string

请求方法

请求行中的请求类型。通常为“GET”“POST”

access_log.http_host

string

请求的服务器域名

浏览器的地址栏中输入的地址,域名或IP地址。

access_log.url

string

请求URL

URL链接中的路径(不包含域名)。

access_log.request_length

string

请求的长度

包括请求地址、HTTP请求头和请求体的字节数。

access_log.bytes_send

string

发送给客户端的总字节数

WAF返回给客户端的总字节数。

access_log.body_bytes_sent

string

发送给客户端的响应体字节数

WAF返回给客户端的响应体字节数。

access_log.upstream_addr

string

选择的后端服务器地址

请求所对应的源站IP。例如,WAF回源到ECS,则返回源站ECS的IP。

access_log.request_time

string

标识请求处理时间

从读取客户端的第一个字节开始计时(单位:s)。

access_log.upstream_response_time

string

标识后端服务器响应时间

后端服务器响应WAF请求的时间(单位:s)。

access_log.upstream_status

string

标识后端服务器的响应码

后端服务器返回给WAF的响应状态码。

access_log.upstream_connect_time

string

源站与后端服务建立连接的时间,单位为秒。

在使用SSL的情况下,握手过程所消耗的时间也会被记录下来。多次请求建立的时间,使用逗号分隔。

access_log.upstream_header_time

string

后端服务器接收到第一个响应头字节的用时,单位为秒。

多次请求响应的时间,使用逗号分隔。

access_log.bind_ip

string

WAF引擎回源IP

引擎回源用网卡的具体IP值,若引擎通过挂载EIP回源,此值并非EIP的值。

access_log.group_id

string

对接LTS服务的日志组ID

WAF对接云日志服务日志组ID。

access_log.access_stream_id

string

日志流ID

“group_id”相关,是日志组下用户的access_stream的ID。

access_log.engine_id

string

WAF引擎标识

WAF引擎的唯一标识。

access_log.time_iso8601

string

日志的ISO 8601格式时间

-

access_log.sni

string

通过SNI请求的域名

-

access_log.tls_version

string

建立SSL连接的协议版本

请求所使用的TLS协议版本。

access_log.ssl_curves

string

客户端支持的曲线列表

-

access_log.ssl_session_reused

string

SSL会话是否被重用。

表示SSL会话是否被重用。

r:是

.:否

access_log.process_time

string

引擎的检测用时(单位:ms)

-

access_log.args

string

标识URL中的参数数据

-

access_log.x_forwarded_for

string

当WAF前部署代理时,代理节点IP链

代理节点IP链,为1个或多个IP组成的字符串。

最左边为最原始客户端的IP地址,代理服务器每成功收到一个请求,就将请求来源IP地址添加到右边。

access_log.cdn_src_ip

string

当WAF前部署CDN时CDN识别到的客户端IP

当WAF前部署CDN时,此字段记录的为CDN节点识别到的真实客户端IP。

须知:

部分CDN厂商可能使用其他字段,WAF仅记录最常见的字段。

access_log.x_real_ip

string

当WAF前部署代理时,真实的客户端IP

代理节点识别到的真实客户端IP。

access_log.intel_crawler

string

用于情报反爬虫分析

-

access_log.ssl_ciphers_md5

string

标识ssl_ciphers的md5值

-

access_log.ssl_cipher

string

标识使用的ssl_cipher

-

access_log.web_tag

string

标识网站名称

-

access_log.user_agent

string

标识请求header中的user-agent

-

access_log.upstream_response_length

string

标识后端响应的大小

-

access_log.region_id

string

标识请求所属Region

-

access_log.enterprise_project_id

string

标识请求域名所属企业项目ID

-

access_log.referer

string

标识请求头中的Referer内容

最大长度为128字符,大于128字符会被截断。

access_log.rule

string

标识请求命中的规则

命中多条规则此处也只会显示一条。

access_log.category

string

标识请求命中的日志分类

-

access_log.waf_time

string

访问请求的时间

-

access_log.geo

string

标记地理位置信息

  • c:地理位置国家名
  • r:地理位置地区名

WAF攻击日志attack_log字段说明

字段

类型

字段说明

描述

attack_log.category

string

日志分类

值为“attack”

attack_log.time

string

日志时间

-

attack_log.time_iso8601

string

日志的ISO 8601格式时间

-

attack_log.policy_id

string

防护策略ID

-

attack_log.level

string

防护策略层级

表示Web基础防护策略级别。

  • 1:宽松
  • 2:中等
  • 3:严格

attack_log.attack

string

发生攻击的类型

发生攻击的类型,仅在攻击日志中出现。

  • default:默认
  • sqli:SQL注入攻击
  • xss:跨站脚本攻击
  • webshell:WebShell攻击
  • robot:恶意爬虫
  • cmdi:命令注入攻击
  • rfi:远程文件包含
  • lfi: 本地文件包含
  • illegal:非法请求
  • vuln:漏洞攻击
  • cc:命中CC防护规则
  • custom_custom:命中精准防护规则
  • custom_whiteblackip:命中IP黑白名单规则
  • custom_geoip:命中地理位置控制规则
  • antitamper: 命中网页防篡改规则
  • anticrawler:命中JS挑战反爬虫规则
  • leakage:命中敏感信息泄露规则
  • antiscan_high_freq_scan:防扫描-高频扫描攻击。
  • followed_action:攻击惩罚,详见配置攻击惩罚标准封禁访问者指定时长

attack_log.action

string

防护动作

WAF防护攻击动作。

  • block:拦截
  • log:仅记录
  • captcha:人机验证

attack_log.sub_type

string

爬虫的子类型

当attack为robot时,该字段不为空。

  • script_tool:脚本工具
  • search_engine:搜索引擎
  • scaner:扫描工具
  • uncategorized:其他爬虫

attack_log.rule

string

触发的规则ID或者自定义的策略类型描述

-

attack_log.rule_name

string

标识自定义的策略类型描述。

命中基础防护规则时该字段为空。

attack_log.location

string

触发恶意负载的位置

-

attack_log.req_body

sting

标识请求体

-

attack_log.resp_headers

string

响应头

-

attack_log.hit_data

string

触发恶意负载的字符串

-

attack_log.resp_body

string

响应体

-

attack_log.backend.protocol

string

标识当前后端协议

-

attack_log.backend.alive

string

标识当前后端状态

-

attack_log.backend.port

string

标识当前后端端口

-

attack_log.backend.host

string

标识当前后端Host值

-

attack_log.backend.type

string

标识当前后端Host 类型

IP 或域名

attack_log.backend.weight

number

标识当前后端权重

-

attack_log.status

string

请求的响应状态码

-

attack_log.upstream_status

string

标识请求的源站响应状态码

-

attack_log.reqid

string

随机ID标识

由引擎IP尾缀、请求时间戳、NGINX分配的请求ID组成。

attack_log.requestid

string

标识请求唯一ID

NGINX分配的请求ID。

attack_log.id

string

攻击ID

攻击的ID标识。

attack_log.method

string

请求方法

-

attack_log.sip

string

客户端请求IP

-

attack_log.sport

string

客户端请求端口

-

attack_log.host

string

请求的服务器域名

-

attack_log.http_host

string

请求的服务器域名

-

attack_log.hport

string

请求的服务器端口

-

attack_log.uri

string

请求URL

不包括域名。

attack_log.header

json string,decode后为json table

请求header信息

-

attack_log.mutipart

json string,decode后为json table

请求multipart header

用于文件上传。

attack_log.cookie

json string,decode后为json table

请求Cookie信息

-

attack_log.params

json string,decode后为json table

请求URI后的参数信息

-

attack_log.body_bytes_sent

string

发送给客户端的响应体字节数

WAF发送给客户端的响应体字节数。

attack_log.upstream_response_time

string

后端服务器从上游服务接收响应内容所经过的时间,单位为秒。

多次请求响应的时间,使用逗号分隔。

attack_log.engine_id

string

引擎的唯一标识

-

attack_log.region_id

string

标识引擎所在region的ID

-

attack_log.engine_ip

string

标识引擎IP

-

attack_log.process_time

string

引擎的检测用时

-

attack_log.remote_ip

string

标识请求的四层客户端IP

-

attack_log.x_forwarded_for

string

标识请求头中“X-Forwarded-For”的内容

-

attack_log.cdn_src_ip

string

标识请求头中“Cdn-Src-Ip”的内容

-

attack_log.x_real_ip

string

标识请求头中“X-Real-IP”的内容

-

attack_log.group_id

string

日志组ID

对接LTS服务的日志组ID。

attack_log.attack_stream_id

string

日志流ID

“group_id”相关,是日志组下用户的 access_stream的ID。

attack_log.hostid

string

防护域名ID(upstream_id)

-

attack_log.tenantid

string

防护域名的租户ID

-

attack_log.projectid

string

防护域名的项目ID

-

attack_log.enterprise_project_id

string

标识请求域名所属企业项目ID

-

attack_log.web_tag

string

标识网站名称

-

attack_log.req_body

string

识请求体(超过 1K 记录时会被截断)

-