启用WAF全量日志功能后,您可以将攻击日志、访问日志记录到云日志服务(Log Tank Service,简称LTS)中,通过LTS记录的WAF日志数据,快速高效地进行实时决策分析、设备运维管理以及业务趋势分析。
LTS对于采集的日志数据,通过海量日志数据的分析与处理,可以为您提供一个实时、高效、安全的日志处理能力。LTS默认存储日志的时间为7天,存储时间可以在1~30天之间进行设置,超出存储时间的日志数据将会被自动删除,对于需要长期存储的日志数据(日志持久化),LTS提供转储功能,可以将日志转储至对象存储服务(OBS)或者数据接入服务(DIS)中长期保存。
前提条件
- 已申请WAF。
- 已添加防护网站。
系统影响
开启全量日志功能是将WAF日志记录到LTS,不影响WAF性能。
将防护日志配置到LTS
-
登录管理控制台。
-
单击页面顶部的区域选择框,选择区域。
-
单击页面左上角的“服务列表”,选择“安全> Web应用防火墙(独享版)”。
-
在左侧导航栏,选择“防护事件”,进入“防护事件”页面。
-
选择“全量日志”页签,开启全量日志,并选择日志组和日志流。
配置全量日志:
全量日志配置参数:
参数 参数说明 取值样例 选择日志组
选择已创建的日志组。 lts-group-waf
记录攻击日志
选择已创建的日志流。
攻击日志记录每一个攻击告警信息,包括攻击事件类型、防护动作、攻击源IP等信息。
lts-topic-waf-attack
记录访问日志
选择已创建的日志流。
访问日志记录每一个HTTP访问的关键信息,包括访问时间、访问客户端IP、访问资源URL等信息。
lts-topic-waf-access
-
单击“确定”,全量日志配置成功。您可以在LTS管理控制台查看WAF的防护日志。
在LTS上查看WAF防护日志
当您将WAF防护日志配置记录到LTS上后,请参考以下操作步骤,在LTS管理控制台查看、分析记录的WAF日志数据。
- 登录管理控制台。
- 单击页面顶部的区域选择框,选择区域。
- 单击页面左上角的“服务列表”,选择“管理与部署> 云日志服务”,进入“日志管理”页面。
- 在日志组列表中,单击展开图标展开waf日志组(例如,“lts-group-waf”)。
- 查看WAF防护日志。
查看攻击日志
- 在日志流列表,单击配置的攻击日志流名称。
- 查看攻击日志。
查看访问日志
-
在日志流列表,单击配置的访问日志流名称。
-
查看访问日志。
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 WAF引擎所使用的回源IP。 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 标识请求命中的规则 命中多条规则此处也只会显示一条。
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 记录时会被截断) -