AWS WAF实战、优势对比和缺陷解决

文章目录

    • 挑战和目标
    • AWS WAF的优势
    • AWS WAF的不足
    • 我是怎么做的?
    • 什么是比较好的AWS WAF设计?

笔者为了解决公司Web站点防御性问题,较为深入的研究AWS WAF的相关规则。面对上千万的冲突,笔者不得设计出一种能漂亮处理冲突数据WAF规则。
AWS WAF

AWS WAF开发人员在线指南

挑战和目标

笔者意图引进WAF,但运维同学折腾了几个月都没有开启WAF成功,面临有以下挑战和目标:

  • 解决大量与现有业务的冲突
  • 尽可能的Block掉攻击流量
  • 风险操作统一管理(统一给一个标签出来)方便我们监控

笔者只能接管WAF的配置权限,设计WAF规则,并最终解决了相关落地问题。

AWS WAF的优势

  1. 高度可配置 相对阿里来说
  2. 纯JSON语言 DSL(领域内语言)

AWS WAF的不足

  1. 缺乏可视化编辑能力
    非常容易漏,即一个请求没有经过深度检测就被放过的可能
    这里举个例子,如果我们检查一个请求具有客户端特征,如果我们选择了Accept就意味着这个请求将被特赦,无法再对其进行任何检查。
    所以Accept动作是一个非常风险的设计动作。特别是当你的WAF已经设计比较复杂的时候。

  2. 对于官方的托管规则存在以下问题:
    三个问题其实是一个问题,如何关闭特定托管子项,AWS的托管规则子项仅存在这种选择: Count,Accept,Block。想关都不关不掉。

    a. 无法重复两次使用同一种托管规则
    b. 无法删除被打上的标签
    c. 无法关闭托管规则的子项:真乃一荣俱荣,一损俱损
    如果无法关闭特定标签,后面就无法直接使用特定的命名空间进行判断.
    因为拖管规则命名空间被一些需要根据业务关闭而又无法关闭的标签给污染了,导致后面每次使用该命名空间要么都要判断排除,要么就不能使用该命名空间,而需要独立使用子项(可能包含了数十种子项).
    总之就是自虐.
    当然我们做了解决:通过自定义的Filter规则,来替代AWS的特定拖管规则,在Filter规则里对特定不符合业务的子托管规则进行剔除操作.

  3. 在线编辑功能,只能两层(横向)
    超出的部分就只能在线编辑,JSON的提示真是非人语言

我是怎么做的?

  1. 解决可视化问题
    制作了可视化工具,能解析AWS 的WAF JSON.
    特别是对Accept/Block/Count的目标和各规则之间关系进行了解析和展示.
  2. 关闭特定托管规则子项
    过自定义的Filter规则,来替代AWS的特定拖管规则,在Filter规则里对特定不符合业务的子托管规则进行剔除操作.
  3. 在线编辑只能两层
    只能强行用复制粘贴方法了.在一个规则里测试好,再复制出来.
    幸亏我22层规则是纵向的,横向的只有2-3层的样子.

什么是比较好的AWS WAF设计?

我认为做到以下几点可称为好的AWS WAF设计:

  1. 流量过滤器
  2. 干掉纯IP流量
    如果你的服务器不需要支持纯IP连接的话.纯IP真是万恶之源.
  3. 给优先用户一些标签
    给登录用户一个标签,给公司出去流量一个标签
  4. 对托管规则做一个适合业务的裁剪(通过上面提到Filter规则)
  5. 集中管理
    也就是各层判断根据判断结果打标签,一概不做Block.
    等所有标签决策投票完毕后,有任何问题的,继续走:Will_Ban层
    由决策层统一做判断:
    比如是我们的保护路径或者登录用户我们就纳入Manual层,做记录,放行
    其他自然流入最底的Tail_End进行Block.

最终笔者将以上5点扩展为具体规则,编写一个22层的WAF来解决了相关问题。

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

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

相关文章

汽车后视镜反射率测定仪

后视镜是驾驶员坐在驾驶室座位上直接获取汽车后方、侧方和下方等外部信息的工具。它起着“第三只眼睛”的作用。后视镜按安装位置划分通常分为车外后视镜、监视镜和内后视镜。外后视镜观察汽车后侧方监视镜观察汽车前下方内后视镜观察汽车后方及车内情况。用途不一样镜面结构也…

计算机网络-物理层(三)-信道的极限容量

计算机网络-物理层(三)-信道的极限容量 当信号在信道中传输失真不严重时,在信道的输出端,这些信号可以被识别 当信号在信道中,传输失真严重时,在信道的输出端就难以识别 造成失真的因素 码元传输速率信号传输距离噪声干扰传输媒…

excel条件格式:不同组对应位置对比标记

问题描述 下图中有两组数据,想要对比两个对应位置的数据并标记 条件格式 选中其中一个单元格,条件格式->新建规则 使用公式确定要设置格式的单元格,自定义需求 格式化剩余同样标准的单元格

docker项目实战

1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘 1)拉取mysql:5.6和owncloud镜像 [rootmaster ~]# docker pull mysql:5.6 5.6: Pulling from library/mysql 35b2232c987e: Pull complete fc55c00e48f2: Pull complete 0030405130e3: Pull compl…

设置Windows主机的浏览器为wls2的默认浏览器

1. 准备工作 wsl是可以使用Windows主机上安装的exe程序,出于安全考虑,默认情况下改功能是无法使用。要使用的话,终端需要以管理员权限启动。 我这里以Windows Terminal为例,介绍如何默认使用管理员权限打开终端,具体…

SQLite数据库实现数据增删改查

当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据的增删改查操作。其中,宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数。 实现功能: 创建 SQLite 数据库表,用于存储宠…

实例040 限制窗体大小

实例说明 Windows窗体是可以随意改变大小的,然而对于一些要求严格的窗体,开发人员不希望用户随意的改变其大小,例如,定位准确的地图和游戏软件等。遇到这种情况必须对窗口的大小进行一些限制。本例设计一个限制了大小的窗体&#…

vue2+Spring Boot2.7 大文件分片上传

之前我们文章 手把手带大家实现 vue2Spring Boot2.7 文件上传功能 将了上传文件 但如果文件很大 就不太好处理了 按正常情况甚至因为超量而报错 这里 我弄了个足够大的文件 我们先搭建 Spring Boot2.7 环境 首先 application.yml 代码编写如下 server:port: 80 upload:path:…

漏洞指呗-VluFocus靶场专栏-番外篇

漏洞指呗-VluFocus靶场专栏-番外篇奇技淫巧 🌸struts2漏洞扫描工具🌸step1 修改ip和端口step2 验证漏洞是否存在step3 执行cmd命令,获取flag 🌸Goby插件工具headshot🌸step1 输入ip和端口 检测step2 cmd 输入指令 &…

漏洞指北-VulFocus靶场专栏-初级01

漏洞指北-VulFocus靶场专栏-初级 初级001 🌸海洋CMS代码执行(CNVD-2020-22721🌸step1:进入后台页面 账号密码:admin amdinstep2:点击系统,点击后台IP安全设置,关闭step3 启动burpsuite&#xff…

Visual Studio 2022 你必须知道的实用调试技巧

目录 1、什么是bug? 2.调试是什么?有多重要? 2.1我们是如何写代码的? 2.2又是如何排查出现的问题的呢? ​编辑 2.3 调试是什么? 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍…

设计模式——接口隔离原则

文章目录 基本介绍应用实例应传统方法的问题和使用接口隔离原则改进 基本介绍 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上先看一张图: 类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖类 D&…

python rtsp 硬件解码 二

上次使用了python的opencv模块 述说了使用PyNvCodec 模块,这个模块本身并没有rtsp的读写,那么读写rtsp是可以使用很多方法的,我们为了输出到pytorch直接使用AI程序,简化rtsp 输入,可以直接使用ffmpeg的子进程 方法一 …

Python 处理 Excel 表格的 14 个常用操作

目录 1. 安装依赖库 2. 导入库 3. 读取Excel文件 4. 写入Excel文件 5. 创建工作表 6. 访问工作表 7. 读取单元格数据 8. 写入单元格数据 9. 获取行数和列数 10. 过滤数据 11. 排序数据 12. 添加新行 13. 删除行或列 14. 计算汇总统计 总结 无论是数据分析师、财…

Mybatis的环境搭建

目录 一.Mybatis的环境搭建 1.创建项目 2.进行相关配置 3.安装插件 4.插件的使用 一.Mybatis的环境搭建 1.创建项目 1.1 创建Maven项目,配置好相应的JDK和archetype 1.2 给项目命名和创建目录结构 1.3 添加自定义Property自定义属性 2.进行相关配置 2.1 导入p…

MySQL 安装 audit 日志审计插件

下载 我的MySQL版本是 5.7.37的,用的是日志审计插件(audit-plugin)是1.1.10的,大家可以对应自己版本去下载。 https://github.com/trellix-enterprise/mysql-audit/releases 配置 1、进入到/opt目录下载 audit,可以…

11. 盛最多水的容器

链接 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。说明:你不能倾斜容器。 示例…

Spring Clould 负载均衡 - Ribbon

视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) Ribbon-负载均衡原理(P14) 具体实现时通过LoaBalanced注解实现,表示RestTemplate要被Ribbon拦截处理 orderservice调用user时候&#xff0c…

面试之快速学习STL-容器适配器

1. 容器适配器 简单的理解容器适配器,其就是将不适用的序列式容器(包括 vector、deque 和 list)变得适用。 注意:默认使用的基础容器不代表一定只能用它,比如queue可以用deque,list。 如果你希望你的qu…

perl下载与安装教程【工具使用】

Perl是一个高阶程式语言,由 Larry Wall和其他许多人所写,融合了许多语言的特性。它主要是由无所不在的 C语言,其次由 sed、awk,UNIX shell 和至少十数种其他的工具和语言所演化而来。Perl对 process、档案,和文字有很强…