当前位置: 首页 > news >正文

AWS-WAF-Log S3存放,通过Athena查看

1.创建好waf-cdn 并且设置好规则和log存储方式为s3

在这里插入图片描述

2. Amazon Athena 服务 使用 (注意s3桶位置相同得区域)

https://docs.aws.amazon.com/zh_cn/athena/latest/ug/waf-logs.html#waf-example-count-matched-ip-addresses
官方文档参考,建一个分区查询表

不能直接使用 因为是cdn 资源需要修改相关字段

CREATE EXTERNAL TABLE `waf_logs`(`timestamp` bigint,`formatversion` int,`webaclid` string,`terminatingruleid` string,`terminatingruletype` string,`action` string,`terminatingrulematchdetails` array <struct <conditiontype: string,sensitivitylevel: string,location: string,matcheddata: array < string >>>,`httpsourcename` string,`httpsourceid` string,`rulegrouplist` array <struct <rulegroupid: string,terminatingrule: struct <ruleid: string,action: string,rulematchdetails: array <struct <conditiontype: string,sensitivitylevel: string,location: string,matcheddata: array < string >>>>,nonterminatingmatchingrules: array <struct <ruleid: string,action: string,overriddenaction: string,rulematchdetails: array <struct <conditiontype: string,sensitivitylevel: string,location: string,matcheddata: array < string >>>,challengeresponse: struct <responsecode: string,solvetimestamp: string>,captcharesponse: struct <responsecode: string,solvetimestamp: string>>>,excludedrules: string>>,
`ratebasedrulelist` array <struct <ratebasedruleid: string,limitkey: string,maxrateallowed: int>>,`nonterminatingmatchingrules` array <struct <ruleid: string,action: string,rulematchdetails: array <struct <conditiontype: string,sensitivitylevel: string,location: string,matcheddata: array < string >>>,challengeresponse: struct <responsecode: string,solvetimestamp: string>,captcharesponse: struct <responsecode: string,solvetimestamp: string>>>,`requestheadersinserted` array <struct <name: string,value: string>>,`responsecodesent` string,`httprequest` struct <clientip: string,country: string,headers: array <struct <name: string,value: string>>,uri: string,args: string,httpversion: string,httpmethod: string,requestid: string>,`labels` array <struct <name: string>>,`captcharesponse` struct <responsecode: string,solvetimestamp: string,failureReason: string>,`challengeresponse` struct <responsecode: string,solvetimestamp: string,failureReason: string>,`ja3Fingerprint` string,`oversizefields` string,`requestbodysize` int,`requestbodysizeinspectedbywaf` int
)
PARTITIONED BY ( 
`region` string, 
`date` string) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION's3://<aws-waf-logs-xxx>/AWSLogs/<accountID>/WAFLogs/cloudfront/<waf-acl>'
TBLPROPERTIES('projection.enabled' = 'true','projection.region.type' = 'enum','projection.region.values' = 'cloudfront','projection.date.type' = 'date','projection.date.range' = '2024/07/08,NOW','projection.date.format' = 'yyyy/MM/dd','projection.date.interval' = '1','projection.date.interval.unit' = 'DAYS','storage.location.template' = 's3://<aws-waf-logs-xxx>/AWSLogs/<accountID>/WAFLogs/${region}/<waf-acl>/${date}/')

修改< >中的字符为自己的资源

测试查询

SELECT COUNT(httpRequest.country) as count, httpRequest.country 
FROM waf_logs
WHERE terminatingruletype='RATE_BASED' 
GROUP BY httpRequest.country
ORDER BY count
LIMIT 100;
SELECT COUNT(*) AS count,webaclid,action,httprequest.clientip,httprequest.uri
FROM waf_logs
WHERE terminatingruleid='<id>'
GROUP BY webaclid, action, httprequest.clientip, httprequest.uri
ORDER BY count DESC
LIMIT 100;

具体的sql 字段需要修改成自己的 可以先检索全表 查看字段 方便搜索
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 51单片机4(reg52头文件介绍)
  • Camunda如何通过外部任务与其他系统自动交互
  • C:数据结构---算法
  • Flask 用 Redis 缓存键值对-实例
  • 【数据结构】数据结构中树的结构:理解与应用
  • 基于RAG大模型的变电站智慧运维-第十届Nvidia Sky Hackathon参赛作品
  • 从课本上面开始学习的51单片机究竟有什么特点,在现在的市场上还有应用吗?
  • C++类和对象基础笔记总结(默认成员函数)
  • Apache Doris:下一代实时数据仓库
  • 阿里云Linux中安装MySQL,并使用navicat连接以及报错解决
  • EasyCVR视频技术:城市电力抢险的“千里眼”,助力抢险可视化
  • SpinalHDL之VHDL 和 Verilog 生成
  • 【2024_CUMCM】时间序列1
  • 【TOOLS】Chrome扩展开发
  • struts2如何防止XSS脚本攻击(XSS防跨站脚本攻击过滤器)
  • hexo+github搭建个人博客
  • 【个人向】《HTTP图解》阅后小结
  • Bytom交易说明(账户管理模式)
  • gcc介绍及安装
  • linux安装openssl、swoole等扩展的具体步骤
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • React Transition Group -- Transition 组件
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Redis学习笔记 - pipline(流水线、管道)
  • SpringCloud集成分布式事务LCN (一)
  • 浮动相关
  • 前端_面试
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 算法系列——算法入门之递归分而治之思想的实现
  • 提醒我喝水chrome插件开发指南
  • 新书推荐|Windows黑客编程技术详解
  • 学习Vue.js的五个小例子
  • 一个完整Java Web项目背后的密码
  • 责任链模式的两种实现
  • 正则表达式
  • 追踪解析 FutureTask 源码
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​什么是bug?bug的源头在哪里?
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (ibm)Java 语言的 XPath API
  • (搬运以学习)flask 上下文的实现
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)