更新时间:2022-08-13 21:23:29
► 场景分析:
Cloudflare 日志分析仪表盘模板仅针对 Cloudflare 中的 WAF 日志数据进行统计分析,利用可视化图表帮助运维人员、安全人员更直观有效的发现问题。主要分析场景包含以下3种:
• 场景一:针对 DDoS/CC 攻击指定防护策略:
CC(Challenge Collapsar)攻击 是 DDoS 攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。攻击的原理就是攻击者控制某些主机不停地发送大量数据包给对方服务器,造成服务器资源耗尽,直到宕机奔溃。
通过查看流量趋势可发现流量异常的时间点,再分析对应时间点访问IP、访问来源国家的访问数量和流量信息,从而定位攻击来源,制定防护策略。
• 场景二:挖掘攻击事件:
APT(Advanced Persistent Threat)攻击,即高级可持续威胁攻击,也称为定向威胁攻击,指某组织对特定对象展开的持续有效的攻击活动。这种攻击活动具有极强的隐蔽性和针对性,通常会运用受感染的各种介质、供应链和社会工程学等多种手段实施先进性、持久且有效的威胁和攻击。
通过查看攻击趋势、攻击 IP、攻击来源国家,分析出持续对网站发起攻击的组织。
• 场景三:提升 Web 应用安全性:
通过分析 WAF 日志中攻击者常用的攻击手法,网站运维人员可检查网站是否存在类似漏洞,若存在可及时修复。
例如:WAF 日志中出现一个 WebLogic 新漏洞的拦截利用请求,网站运维人员便可确认 Web 应用使用的版本在漏洞影响范围后可更新的 WebLogic 版本,并及时修补漏洞。

Cloudflare 日志分析仪表盘模板共包含 3 个报表【概览】、【流量】、【安全】。
• 【概览】:Cloudflare 日志分析概览报表所涉及的分析内容,包含:网站请求总数量、网站(请求主机)总数、访客IP数量、触发 WAF 请求数量、被攻击网站数量、攻击 IP 数量、访客设备类型分布、访问 HTTP 协议版本分布、访客来源国家分布、HTTP 响应状态码分布、访客 IP 类别(如:白名单),以及缓存状态分布。
基于概览分析报表,可帮助运维或安全人员实时监控当前网站整体请求统计数据,针对请求量激增或存在被攻击的情况下,可结合访客数量、访客来源、设备类型、访客 IP 类别等数据,定位攻击来源并及时制定防护措施。

• 【流量】:Cloudflare 日志分析流量报表所涉及的分析内容,包含:流量趋势统计(响应流量/请求流量)、访客IP请求数量全量统计及 Top10、访客 IP 请求流量(MB)及响应流量(MB)统计、访客来源国家请求数量统计及 Top10、访客来源国家请求流量(MB)及响应流量(MB)统计、请求来源主机请求数量统计及 Top10、缓存命中次数详情统计。
基于流量分析报表,可帮助运维人员通过可视化方式,从流量维度实现数据统计分析,实现 WAF 状态监控。




•【安全】:Cloudflare 日志分析安全报表所涉及的分析内容,包含:网站攻击数量趋势统计、WAF 动作分布、攻击来源国家分布、攻击数量-域名统计、攻击数量-WAF 策略统计(low/med/high)统计、攻击IP数量全量统计及 Top10、攻击详情。
基于安全分析报表,运维人员或安全人员可通过查看攻击趋势、攻击 IP、攻击来源国家等统计数据,分析持续对网站发起攻击的组织,并及时采取对应措施。




► 操作配置:
1. 配置解析规则:
1)进入数据管理>对象管理>解析规则页面,点击【导入】按钮,选择将 WAF-cloudflare.json,点击【确定】;
2)点击【编辑】可进入 WAF-cloudflare 解析规则编辑页面,其中已默认配置过滤条件:[type]==waf AND [tags==cloudflare],可自动匹配采集数据并进行数据解析,如下所示:

2. 配置数据采集:Cloudflare Enterprise 企业级客户可通过 Logpull 机制使用 RESTful API 方式请求下载日志数据,并将日志推送至 AnyRobot。
1)进入数据源>数据输入页面,点击【新建】填写配置信息并保存,配置参数如下所示:

2)Cloudflare 端下载日志脚本配置:
a)前提条件:
• 已拥有 Cloudflare Enterprise 账户;
b)在 Linux 主机上编写下载日志脚本,并使用 crontab 表达式配置定时下载任务,示例如下:
• 编写下载日志脚本,示例内容如下所示:
#!/bin/bash
 
# 在AnyRobot中新建的日志接收端口
ANYROBOT_SERVER="127.0.0.1"
----------------------------------------------修改为 AnyRobot 的 IP 地址
ANYROBOT_DATA_INPUT_PORT="20010"--------修改为 AnyRobot 侧数据输入配置的接收端口号

# Cloudflare API的鉴权信息
AUTH_EMAIL="该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。"
------------------------------------修改为 Cloudflare 的登录邮箱
AUTH_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"--------------修改为已获取的 Cloudflare API KEY
ZONEID="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"---------------------修改为已获取的 Cloudflare Zone ID
 

# 获取日志的字段,此处是目前提供的所有字段
LOG_FILEDS="CacheCacheStatus,CacheResponseBytes,CacheResponseStatus,CacheTieredFill,ClientASN,ClientCountry,
ClientDeviceType,ClientIP,ClientIPClass,ClientRequestBytes,ClientRequestHost,ClientRequestMethod,ClientRequestPath,
ClientRequestProtocol,ClientRequestReferer,ClientRequestURI,ClientRequestUserAgent,ClientSSLCipher,ClientSSLProtocol,
ClientSrcPort,ClientXRequestedWith,EdgeColoCode,EdgeColoID,EdgeEndTimestamp,EdgePathingOp,EdgePathingSrc,
EdgePathingStatus,EdgeRateLimitAction,EdgeRateLimitID,EdgeRequestHost,EdgeResponseBytes,EdgeResponseCompressionRatio,EdgeResponseContentType,
EdgeResponseStatus,EdgeServerIP,EdgeStartTimestamp,FirewallMatchesActions,FirewallMatchesRuleIDs,FirewallMatchesSources,OriginIP,OriginResponseBytes,
OriginResponseHTTPExpires,OriginResponseHTTPLastModified,OriginResponseStatus,OriginResponseTime,OriginSSLProtocol,ParentRayID,RayID,SecurityLevel,
WAFAction,WAFFlags,WAFMatchedVar,WAFProfile,WAFRuleID,WAFRuleMessage,WorkerCPUTime,WorkerStatus,WorkerSubrequest,WorkerSubrequestCount,ZoneID"
 
# 获取日志的时间范围,只能获取一分钟前的日志
timestamp_now=$(date +%s)
timestamp_end=$(expr $timestamp_now - 60)
 
# 获取一个小时内的日志
timestamp_start=$(expr $timestamp_end - 3600)
 
curl -s -H "X-Auth-Email: ${AUTH_EMAIL}" -H "X-Auth-Key: ${AUTH_KEY}"  "https://api.cloudflare.com/client/v4/zones/${ZONEID}/logs/received?start=${timestamp_start}&end=${timestamp_end}&&fields=${LOG_FILEDS}×tamps=rfc3339" | nc ${ANYROBOT_SERVER} ${ANYROBOT_DATA_INPUT_PORT}
• 在 Linux 主机上执行 crontab -e 进入定时任务编辑界面,输入 crontab 表达式创建定时下载任务,默认每小时执行一次日志下载任务,命令示例如下:
0 * * * * /path/to/cloudflare_log_download.s

说明:
1. 上述 Cloudflare 日志下载命令脚本中 timestamps 时间戳格式必须为 rfc3339,以确保 AnyRobot 侧可对 EdgeStartTimestamp 字段进行正常解析;
2. 以上命令请根据实际情况修改脚本路径。
c)完成下载日志脚本配置后,Linux 主机会定时从 Cloudflare 侧下载日志并将日志推送至 AnyRobot。
3)导入仪表盘文件:进入数据管理>对象管理>仪表盘页面,点击【导入】按钮,选择 Cloudflare 日志分析仪表盘 .json 文件即可。

► 注意事项:
• 若通过本地上传或其他采集方式进行数据采集,在数据输入和解析规则配置时日志类型与日志标签,请按如下进行配置:
日志 日志类型(type) 日志标签(tags)
Cloudflare WAF 日志 waf cloudflare
• Cloudflare WAF 仪表盘必须在数据源的日志类型满足的条件下才允许使用。