手把手教你如何配置 AWS WAF 入门

文章目录

    • 1 前言
    • 2 新手第一步
    • 3 实践
      • 3.1 了解托管规则
      • 3.2 编写自己的DIY规则
      • 3.3 配置实战A,控制泛洪攻击(攻击请求速率)
      • 3.4 配置实战B:当检查到特定路径请求的时候拒绝对方的试探
    • 4 更进一步
      • 4.1 什么是合理的规则设计?如何利用好AWS的分层结构?
      • 4.2 几个重要的AWS WAF 概念及简易运用
        • 标签 和 标签组
      • 4.3 进一步提升你的WAF防御可以考虑问题
      • 4.4 管理WAF日志的方案选型心得
        • 4.4.1 用 CloudWatch Logs Insights 分析WAF日志
        • 4.4.2 用自建ES Kibana管理WAF日志
        • 4.4.3 用 AWS OpenSearch 来管理WAF日志

1 前言

在这里插入图片描述

题图是Security Automations for AWS WAF 架构图。描绘了 AWS WAF 如何筛选对各种 AWS 资源的 Web 请求、存储来自 AWS WAF 的日志以及监控威胁日志。

当你开始使用WAF(Web Application Firewall)时,你便能为其后的内容提供保护。WAF不仅可以配置复杂的规则来判断请求是否为攻击或不需要的流量,还有另一种有趣的玩法:通过AWS Lambda进行动态控制。

想象一下,如果某个IP正在进行多次恶意请求,仅仅拦截单次请求可能会被对方轻易绕过。这时,我们可以借助AWS Lambda的WAF日志分析器或CloudWatch等工具进行感知,并动态地添加IP声誉列表来控制攻击源或向管理员发出警报。

AWS WAF与亚马逊的其他服务完美结合,玩法多样,绝不仅仅是静态的防护盾牌。当然,在此之前,你需要对WAF有一个基本的了解。接下来,我将通过详细的步骤,指导你配置一个全新的WAF作为起点。

2 新手第一步

假设你已经拥有一个空白的WAF:
第一步找到你的WAF:
在这里插入图片描述
在这里插入图片描述

继续让我们选择它,你的可能叫别的名字,显然这并不重要:(如果你的伙伴没有为你配置需要你自行创建一个ACL)
在这里插入图片描述

左侧的功能分页说明一下:
在这里插入图片描述

编辑规则主要看 Rules:
在这里插入图片描述

2号位置就是规则区了,3号可以手工添加一条规则:
在这里插入图片描述

3 实践

3.1 了解托管规则

我们先手工添加一条规则尝试:
你有两个选项:
Add managed rule groups:
即:添加托管规则
Add my own rules and rule groups:
添加自定义规则
在这里插入图片描述

我们会发现AWS WAF的规则是串型执行:Priority一列就是顺序。
这里列出的是AWS 付费(2023年12月31日)的3种托管规则集:
在这里插入图片描述

这里列出11种 AWS 免费的托管规则:
在这里插入图片描述

此外还提供了一些三方不同厂商提供的付费托管规则,OWASP TOP10等应有尽有:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总之托管规则应有尽有,但因为其面向通用场景,而不能完全适配我们自己的业务,还是需要我们动手DIY一些适合我们的规则。

3.2 编写自己的DIY规则

在这里插入图片描述

点击: Add my own rules and rule groups 添加自定义规则

默认是 Rule visual editor: 即可视化编辑器:
在这里插入图片描述

点击 Rule JSON editor 进入JSON编辑器,此模式的优点是:

  • 方便快速复制
  • 方便多级嵌套条件编写
    可视化只支持一层的逻辑判断,举个例子:
    如果 http.method == “options” ,则继续判断 如果 http.url 开头是 “/api” 则允许
    因为涉及两级判断所以只能使用 Rule JSON editor模式了。。。
    下图 显示了*** Rule JSON editor*** 模式
    在这里插入图片描述

这也就是 AWS WAF的所谓高级编辑模式了。

3.3 配置实战A,控制泛洪攻击(攻击请求速率)

只用可视模式

目标是 当用户请求 每five(5)分钟 达到 600次的时候,就Block(拒绝)对方。直到对方速度低于此速度。
(AWS的槽点在于只能 配置每5分钟。。。)

配置如下:
在这里插入图片描述
在这里插入图片描述

点击Save Rules,此时你的WAF便具有了一定的HTTP泛洪防御能力。

3.4 配置实战B:当检查到特定路径请求的时候拒绝对方的试探

actuator攻击是一种很常见的试探攻击,处理不当很可能导致信息泄露等威胁。
所以我们的WAF可以如此配置:
当请求URI中涉及 actuator则Block(阻断)
配置如下图:
在这里插入图片描述

至此你又拥有了另一个安全规则。

4 更进一步

4.1 什么是合理的规则设计?如何利用好AWS的分层结构?

现在你可以根据你的防御需求来尝试调配自己的规则了

这里提供一种WAF配置思路,结合了官方的建议:

可以从上到下添加至少如下的检查规则分别为:

  1. 白名单
  2. 黑名单
  3. 速率控制:也就是HTTP泛洪攻击防护
  4. 自定义的防护任务
  5. 托管规则

4.2 几个重要的AWS WAF 概念及简易运用

标签 和 标签组
  • 是什么
    在这里插入图片描述

  • 什么场景下使用?
    为了后面的规则能判断前面的规则是否识别出特定问题了

使用前面的例子,如果我发现对方在尝试高频率请求,可以不直接拒绝而是 使用 Count 统计,再打一个标签:high_speed)高频率,如下图:
后面的其他规则,通过通过判断是否为高频率 而进一步做出决策,例如下下图一个名为anti_attack的规则:
在这里插入图片描述

至此相比你已经了解了标签的最主要的用法。

4.3 进一步提升你的WAF防御可以考虑问题

当然你需要根据你要防护服务器的实际情况进一步完善,思考以下几个问题:

  • 能否对白名单的IP也可以进行安全检查?
    而不是因为对方是白名单,就可以放弃对它的进一步安全分析
  • 能否分级观察不同的压力情况?以辅助安全检查员做出安全决策?
  • 能否更多统一的建立对攻击流量的标签分析
  • 当你的业务是从中途开始上WAF,该如何解决冲突又不危害现有业务的正常工作?
  • 如何动态的改变WAF,通过其他AWS服务?
    使WAF能够变成的动态、有机的防御设施

4.4 管理WAF日志的方案选型心得

4.4.1 用 CloudWatch Logs Insights 分析WAF日志

优势:语法较简洁,查询快,在线趋势显示好。
缺点:比较贵,查询按次收费

4.4.2 用自建ES Kibana管理WAF日志

优势:便宜
缺点:

  1. 保存时间可能跟其他日志混合无法长期,如果你们运维解决了这个问题也还好。
  2. 需要进一步对WAF的日志做解析,ES默认是不理解WAF的自定义结构的。识别不出更进一步的字段,导致你得下载下来进一步的分析。这样失去了在线查询的意义。
4.4.3 用 AWS OpenSearch 来管理WAF日志

优势:其实它也是 Kibana。但是增加了官方的自己服务的数据解析,让你可以任意查询WAF数据。
缺点:比自建ES Kibana要有一点成本。需要租一台AWS的服务器并为此付费(建议是内存优化类型的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode每日一题:1599.经营摩天轮的最大利润

前言:本题是一道逻辑细节题,考察阅读理解并转化为代码的能力,很多细节 题目描述: 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但…

基于图神经网络的动态物化视图管理

本期 Paper Reading 主要介绍了发布于 2023 年 ICDE 的论文《Dynamic Materialized View Management using Graph Neural Network》,该文研究了动态物化视图管理问题,提出了一个基于 GNN 的模型。在真实的数据集上的实验结果表明,取得了更高的…

redis 从0到1完整学习 (十二):RedisObject 之 List 类型

文章目录 1. 引言2. redis 源码下载3. redisObject 管理 List 类型的数据结构3.1 redisObject 管理 List 类型3.2 List PUSH 源码 4. 参考 1. 引言 前情提要: 《redis 从0到1完整学习 (一):安装&初识 redis》 《redis 从0到1…

鸿蒙OS应用开发之气泡提示

前面学习了弹窗提示,其实有时候只是想在旁边做一些说明,那么采用弹窗的方式就比较麻烦一些,这时可以采用系统里面的气泡提示方式。 系统也提供了几种方式弹出气泡提示,最简单的一种是采用bindPopup属性。它的定义如下: 在后面的参数设置里,也是比较复杂的形式。我们先来演…

内存泄漏检测工具

1. vs/vc(windows下)自带的检测工具 将下面的语句加到需要调试的代码中 #define _CRTDBG_MAP_ALLOC // 像一个开关,去开启一些功能,这个必须放在最上面 #include <stdlib.h> #include <crtdbg.h>// 接管new操作符 原理: 就是使用新定义的DBG_NEW去替换代码中的n…

Jetpack Compose中使用Android View

使用AndroidView创建日历 Composable fun AndroidViewPage() {AndroidView(factory {CalendarView(it)},modifier Modifier.fillMaxWidth(),update {it.setOnDateChangeListener { view, year, month, day ->Toast.makeText(view.context, "${year}年${month 1}月$…

x-cmd pkg | openssl - 密码学开源工具集

目录 简介首次用户技术特点竞品分析进一步阅读 简介 OpenSSL 是一个开源的密码库和 SSL/TLS 协议实现&#xff0c;它提供了一组密码学工具和加密功能&#xff0c;用于保护数据通信的安全性。项目发展历史可以追溯到 1998 年&#xff0c;源自 Eric A. Young 和 Tim J. Hudson 开…

Docker的一个简单例子(一)

文章目录 环境示例准备构建启动/停止容器更新应用分享应用 参考 环境 RHEL 9.3Docker Community 24.0.7 示例 准备 从github克隆 getting-started-app 项目&#xff1a; git clone https://github.com/docker/getting-started-app.git查看项目&#xff1a; ➜ getting-s…

I.MX8QM flexcan移植

Android SDK&#xff1a;imx8_13.0.0_1.2.0(android 13 u-boot 2022.04 kernel 5.15.74) 一、kernel 内核配置&#xff1a; # 相应的defconfig中添加使能下面两个宏。 # 官方默认的配置可能是以模块的方式编译&#xff0c;这里直接将can驱动编译到内核中 CONFIG_CANy CONFIG…

C++面试宝典第12题:数组元素相除

题目 从控制台输入若干个整数作为数组,将数组中每一个元素除以第一个元素的结果,作为新的数组元素值。比如:可以先输入3,作为数组元素的个数;然后输入3个整数,作为数组元素的值。 解析 这道题本身并不复杂,但里面隐藏了不少“坑点”和“雷区”,主要考察应聘者全面思考问…

vue项目中实现预览pdf

vue项目中实现预览pdf 1. iframe <iframe :src"pdfSrc"></iframe> ​data() {return {pdfSrc: http://192.168.0.254:19000/trend/2023/12/27/5635529375174c7798b5fabc22cbec45.pdf,}},​iframe {width: 100%;height: calc(100vh - 132px - 2 * 20px -…

数据结构:堆的三部曲 (一)堆的实现

堆的实现 1.堆的结构1.1堆的定义理解 2.堆的实现&#xff08;以小根堆为例&#xff09;2.1 堆结构体的定义2.2 堆的插入交换函数向上调整算法插入函数的代码 2.3 堆的删除向下调整算法&#xff1a;删除函数的代码&#xff1a; 2.4其他操作 3.测试以及完整源代码实现3.1测试代码…

typore自定义删除线快捷键

打开高级设置 设置快捷键 重新打开typore

Java实现短信发送业务

1、业务需求 发送短信功能是一个很普遍的需求&#xff0c;比如验证码&#xff0c;快递单号&#xff0c;通知信息一类。 而在Java中实现短信功能相对简单&#xff0c;只需要调用短信服务商提供的API。接下来以阿里云为例&#xff0c;介绍如何实现短信发送功能&#xff0c;其他短…

x-cmd pkg | bat - cat 命令的现代化替代品

目录 简介首次用户功能特点进一步阅读 简介 bat 是 cat 命令的替代品&#xff0c;对 cat 命令进行功能扩展&#xff0c;如语法高亮、自动分页等&#xff0c;为用户提供更友好的显示和定制选项。对于需要在终端频繁查看文本内容的用户&#xff0c;推荐用 bat。 首次用户 使用 …

计算机基础面试题 |01.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

企业级依赖管理: 深入解读 Maven BOM

一、背景 当开发者在一个大型项目中使用 Maven 进行依赖管理时&#xff0c;项目往往会包含多个模块或子项目&#xff0c;并且这些模块会共享相同的依赖项。但是&#xff0c;不同模块可能会独立地指定各自的依赖版本&#xff0c;这可能导致以下问题&#xff1a; 依赖版本不一致…

在多Module项目中,给IDEA底部选项卡区域添加Services选项卡

一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时&#xff0c;如果要调试测需要依次启动各个项目比较麻烦。 idea其实提供了各module的启动管理工具了&#xff0c;可以快速启动和关闭各个服务&#xff0c;也能批量操作&#xff0c;比如一次…

25. 数组作为函数参数

写代码时&#xff0c;我们会将数组作为参数传给函数 冒泡排序&#xff1a; 两两相邻的元素进行比较&#xff0c;可能的话进行交换 一趟冒泡排序会将一个元素放在其最后应该在的位置 10个数字只需9趟&#xff0c;第一趟10个数字待排序&#xff0c;9对比较&#xff1b;第二趟…

计算机科学速成课【学习笔记】(1)——计算机早期历史

本集课程B站链接&#xff1a; 【计算机科学速成课】[40集全/精校] - Crash Course Computer Science_哔哩哔哩_bilibili【计算机科学速成课】[40集全/精校] - Crash Course Computer Science共计40条视频&#xff0c;包括&#xff1a;1. 计算机早期历史-Early Computing、2. 电…