一文读懂,WAF阻止恶意攻击的8种方法

news2024/12/23 20:52:01

WAF(Web 应用程序防火墙)是应用程序和互联网流量之间的第一道防线,它监视和过滤 Internet 流量以阻止不良流量和恶意请求,WAF 是确保 Web 服务的可用性和完整性的重要安全解决方案。

它通过充当保护 Web 应用程序服务器免受恶意客户端攻击的中介来充当反向代理。

本文将由火伞云小编为您简要解答它的工作原理

WAF 用于阻止恶意攻击的 8 种方法

1、IP 围栏

这是最简单的保护方法,如果您知道恶意请求来自特定 IP 地址,可以直接使用 WAF 黑名单来拒绝它们,它依赖于一组静态信息。

例如:

火伞云WAF使用 HoneyPot Project 和 spamhaus DB 等信誉数据库来识别某些 IP 并随后阻止来自这些 IP 的请求。

2、地理围栏和地理封锁

地理围栏是 WAF 用来在特定地理区域周围创建虚拟周界或边界的一种技术。当用户的 IP 地址位于预定义边界内时,WAF 可以允许或限制对某些内容或功能的访问。

火伞云WAF利用 MaxMind DB 等Geo IP 数据库来允许或拒绝请求。

您还可以使用 WAF 创建地理阻止规则集,这是一种限制性更强的技术,可以完全阻止来自特定区域的访问。

例如:

如果您的电子商务网站仅面向美国客户,您可以使用此功能限制来自其他地区的访问。

3、要求检验

检验是 WAF 对请求和响应施加完全控制的策略的组成部分。通过检验请求的内容,WAF 可以将它们与已知的好/坏字符串和值进行匹配,以区分合法和恶意请求。

WAF使用多个过滤层分析流量,可以检测零日攻击、客户端攻击、机器人攻击(例如 DDoS 攻击)、病毒文件和Web应用程序漏洞。

最先进的WAF可以解码和分析 HTTPS 流量、XML、JSON 和其他广泛使用的数据传输格式。

常见的检验有以下两种:

标头检验

通过检查标头,WAF 可以检测到可能指示恶意活动的特定模式或异常,例如格式错误的用户代理或可疑的 cookie 值。

HTTP 请求的标头包含基本信息,例如用户代理、内容类型、cookie 和使用的 HTTP 方法(例如 GET、POST)。

每个都包含文本字符串,并具有广泛的潜在组合。

因此,WAF 会单独检查每个请求标头以识别潜在的恶意值,而不是依赖于预定义的白名单。

例如:
GET /login HTTP/1.1

Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
Referer: http://evil.com
Cookie: PHPSESSID=abcdef1234567890; username=admin; password=admin123

在此示例中,请求包含指向恶意网站 (http://evil.com) 的 Referer 标头。Web 服务器使用 Referer 标头来跟踪请求的来源。

通过包含恶意的 Referer 标头,攻击者可以尝试欺骗 Web 服务器,使其相信请求来自受信任的来源。

攻击者还包含一个 Cookie 标头,其中包含会话 ID (PHPSESSID=abcdef1234567890) 以及管理员帐户的用户名和密码(用户名=admin;密码=admin123)。

通过在 Cookie 标头中包含这些值,攻击者可以尝试获得对 Web 应用程序的未授权访问。

通过检查这些标头,WAF 可以检测到恶意 Referer 标头和 Cookie 标头的可疑内容。此外,它会阻止请求并阻止攻击成功。

WAF 还分析浏览器发送的用户代理字符串以获取其他指标,例如异常的浏览器设置和流量自动化的迹象。

请求验证

WAF 进一步检查请求正文、查询参数和请求的其他元素,以识别和阻止对 Web 应用程序的潜在威胁。

WAF 检验有效负载中的每个数据字节,以确定可能指示针对漏洞的攻击尝试的特定字母数字字符组合。

例如:

假设 Web 应用程序具有搜索功能,允许用户通过在搜索框中输入关键字来搜索产品。

攻击者可以通过提交包含 SQL 注入负载的特制输入来利用此功能。

例如:‘apple’ OR 1=1;– – 然后将作为以下 SQL 查询执行:
SELECT * FROM products WHERE name = ‘apple’ OR 1=1;–

此查询旨在绕过身份验证机制并从数据库中检索所有产品。

添加 OR 1=1 部分以使查询始终返回 true,最后的 — 用于注释掉查询的其余部分并防止任何错误。

如果 WAF 仅依赖预定义的白名单,它可能无法检测到此攻击,因为查询包含有效语法。

但是,通过单独检查每个请求并分析查询的内容,Web 应用程序防火墙可以检测 SQL 注入负载并阻止请求。

WAF 还会分析查询并查找 SQL 注入攻击中常用的关键字,

例如 OR、UNION、SELECT 和 DROP。如果检测到这些关键字中的任何一个,WAF 可以阻止请求并阻止攻击得逞。

WAF 的威胁检测能力超越了 SQL 注入,涵盖了其他频繁发生的高风险威胁,如 XSS 和 XXE。

4、响应检查

WAF 监视和分析离开 Web 应用程序的流量,以识别和阻止任何潜在的恶意或未经授权的活动。

它验证数据包的内容以确保内容类型与请求资源的预期内容类型相匹配。

例如

如果客户端请求图像文件,WAF 可以验证响应是图像文件,而不是可执行文件或恶意内容。

WAF 可以验证 Web 应用程序返回的响应代码是否有效且符合预期。

例如

如果 Web 应用程序为应该存在的资源返回 404 错误代码(未找到页面),则 WAF 可以识别这种潜在的攻击。

Web 应用程序防火墙能够通过屏蔽或阻止包含敏感信息(如信用卡号或任何其他自定义数据)的响应来防止数据泄漏。

例如:

一名员工试图将包含敏感数据的文件上传到外部文件共享网站。WAF 检测数据传输尝试并检查文件是否包含不应与外部共享的任何敏感信息。WAF 扫描文件以查找与组织的数据分类策略相匹配的模式或关键字。

如果文件包含敏感信息,WAF 会阻止上传并向安全团队发送警报。然后,安全团队可以调查事件并采取适当的行动,例如撤销员工的访问权限或展开进一步调查。

5、安全规则

收到请求后,WAF 会分析其有效负载并将其与其规则或签名进行比较。

WAF 通常有两种类型的安全规则:预定义和自定义。

a、预定义规则

供应商预先配置预定义规则,旨在防止常见攻击,例如 SQL 注入、跨站点脚本 (XSS) 和其他已知漏洞。这些规则通常会定期更新以应对新出现的威胁。

火伞云WAF检查每个应用程序区域并通过考虑 OWASP 前 10 大应用程序和 API 漏洞以及已预编程到 WAF 中的其他攻击向量来确定适用的威胁。

预定义的规则集包括防止:

SQL注入

XSS 攻击

本地和远程文件包含

尺寸限制

命令注入

未知的错误输入

恶意文件扩展名(例如 .php、.exe)

目录遍历字符(例如,“..”)

命令注入负载

Java 反序列化负载

主机标头中的本地主机

PROPFIND HTTP 方法

Shell 元字符(例如 |、>、<、)

任意代码执行负载

LDAP 注入负载

XPath 注入负载

XML 外部实体 (XXE) 负载

以下是用于阻止 XSS 攻击的 WAF 预定义规则示例:
SecRule ARGS “@rx <script[\s\S]*?>[\s\S]*?</script>” \
“id:1,\
phase:2,\
block,\
log,\
msg:’XSS Attack Detected’,\
tag:’OWASP Top 10′,\
severity:’CRITICAL'”

此规则检查请求参数 (ARGS) 中是否存在 <script> 标记,该标记常用于 XSS 攻击。如果规则匹配,它会触发一个动作来阻止请求(block),记录事件(log),并向服务器操作员(msg)发送消息。

该规则还包含一个标记,表明它解决了 OWASP 十大漏洞之一,并将严重性级别设置为严重。

b、自定义规则

网站或应用程序所有者创建自定义规则来解决其环境特有的特定安全问题。这些规则可以定制以满足应用程序的特定需求,并且可以提供超出预定义规则的额外保护层。

托管服务团队在零日漏洞报告后的 24 小时内虚拟修补在 Spring Framework 中检测到的远程代码执行 (RCE) 漏洞。

c、自动规则生成

随着 WAF 继续分析流量并识别新出现威胁的模式,它可以自动生成策略来抵御这些威胁。这有助于减少手动创建策略所涉及的时间和精力,同时防止可能尚未建立签名或规则的新的和不断发展的威胁。

例如:

一种新的攻击涉及向应用程序发送特制的 SQL 查询以绕过身份验证并获得对敏感数据的访问权限。WAF 可以分析流量并识别攻击中使用的特定 SQL 语法。然后,WAF 可以生成策略来阻止此特定语法并防止攻击得逞。

生成安全策略后,WAF 应用该策略来保护应用程序。这是需要安全专家支持的地方。支持团队可以手动微调安全策略以减少误报和漏报。

6、异常评分

如果规则匹配,WAF 会为请求中的每个偏差应用一个分数,作为其威胁检测和响应整体方法的一部分,这被称为“基于风险的方法”。

异常评分系统背后的想法是,并非请求中的所有偏差或异常都同样重要或表示攻击。通过为每个变化或异常分配一个分数,WAF 可以确定请求的总体风险级别,并决定是阻止还是允许它。

WAF使用多种因素来分配分数,包括偏差的严重性和类型、请求的上下文以及发出请求的用户的行为。

例如:

像拼写错误的 URL 这样的简单偏差可能只会得到低分

更严重的偏差,如尝试注入 SQL 代码,可能会获得更高的分数。

WAF 还可以使用分数来触发不同的操作,

例如:

阻止得分高的请求

允许低分

对平均分数的请求进行额外验证

7、DDoS 速率限制

DDoS 速率限制限制特定 IP 地址在给定时间范围内可以发送到服务器的请求数量。速率限制通常是根据一个预定的阈值来设置的,该阈值被认为对正常流量是安全的,任何超过此限制的请求都会被阻止。

通过实施 DDoS 速率限制,WAF 可以有效地防止攻击者用大量请求淹没服务器。这有助于确保合法用户仍然能够访问服务器,并且业务运营可以不间断地继续进行。

例如:

假设一家企业的网站通常每分钟收到大约 1,000 个请求。为防止 DDoS 攻击,企业为任何给定的 IP 地址设置了每分钟 2,000 个请求的 DDoS 速率限制。这意味着如果一个 IP 地址每分钟向服务器发送超过 2,000 个请求,WAF 将阻止这些请求。

现在,假设攻击者对企业网站发起 DDoS 攻击,使用僵尸网络向服务器发送大量请求。即使攻击者控制着数以千计的受感染设备,WAF 也会阻止任何超过每分钟 2,000 个请求阈值的 IP 地址。这有效地限制了 DDoS 攻击的影响,使网站能够继续为合法用户正常运行。

静态速率限制机制的主要缺陷是它依赖于固定的流量阈值。因此,在达到阈值之前可能无法检测到攻击,从而导致攻击检测缓慢或不充分。

8、机器人缓解

WAF 可以分析浏览器发送的cookie,并将它们检查到已知机器人 cookie 的数据库,例如 Udger、Checktor 和 Whatisyourbrowser DB。

为检测机器人,火伞云WAF使用 JavaScript 挑战来区分传统网络浏览器和机器人。

机器人控制组件包括但不限于:

验证码挑战

速率限制

机器人伪装者

网页抓取保护

机器人智能(指纹、IP、行为模式)

WAF 采用基于行为的分析来检测自动流量。这可能包括分析请求的速度和频率、访问页面的顺序,以及有助于区分机器人和人类行为的其他因素。

Bot 保护包括以下目标:

检测来自人类的机器人

识别好机器人与坏机器人

允许好的机器人并阻止坏的机器人

检测僵尸程序的来源并阻止 IP 地址

分析机器人行为和速率限制潜在机器人

通过集成这些方法,WAF 可以成功区分人类流量和机器人流量,识别恶意流量,并提供针对 DDoS 和机器人攻击的有效防御。 

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

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

相关文章

属性和方法

类的属性 变量&#xff1a;1&#xff0c;按照数据类型来分基本数据类型&#xff0c;引用数据类型 2&#xff0c;按照变量在类中声明的位置不同&#xff1a;成员变量&#xff08;属性&#xff09;、局部属性&#xff08;方法内&#xff0c;构造器内&#xff0c;代码块内等&…

android 如何分析应用的内存(六)

android 如何分析应用的内存&#xff08;六&#xff09; 接上文&#xff0c;本系列文章&#xff0c;最重要的部分——————对native堆内存的分析&#xff0c;即将上演 分成六大板块&#xff1a; 手动实现&#xff0c;new和delete&#xff0c;以及malloc和freee&#xff0…

LVS+Keepalived负载均衡高可用群集(往事清零,万事顺意)

一、Keepalived高可用详解 1.应用场景 在企业应用中&#xff0c;单台服务器承担应用存在单点故障的危险。单点故障一旦发生&#xff0c;企业服务将发生中断&#xff0c;造成极大的危害。所以需要群集实现高可用性&#xff0c;保证服务稳定。 2.介绍和原理简介 Keepalived是…

【JAVA开发环境配置】 卸载JDK很简单, 一分钟帮你搞定!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

中科三方:DNS云解析技术浅析

智能DNS云解析通过其智能解析&#xff0c;健康监测&#xff0c;负载均衡&#xff0c;宕机切换等高可用性的功能特性&#xff0c;给客户带来快捷&#xff0c;安全&#xff0c;流畅的上网体验。传统的DNS因为其解析时间冗长&#xff0c;易被劫持&#xff0c;无法精准调配用户的流…

【jupyter notebook】Anaconda prompt查询版本包(已安装的包列表、可以安装的包列表)

目录 0.环境介绍 1.查询当前已安装的某包信息 2.查询某包的所有版本 3.查看已安装的各个包的版本 0.环境介绍 windows Anaconda 1.查询当前已安装的某包信息 信息包含包名和版本&#xff0c;以包【matplotlib】为例 conda list matplotlib 2.查询某包的所有版本 conda s…

playwright-自动化测试

这里写目录标题 安装运行记录操作执行脚本 安装 &#xff08;1&#xff09;安装Playwright依赖库&#xff08;Playwright支持Async\Await语法&#xff0c;故需要Python3.7&#xff09; pip install playwright &#xff08;2&#xff09;安装Chromium、Firefox、WebKit等浏览…

【Unity Shader】平面投影实现阴影

介绍 球体和立方体挂载下面这个shader&#xff0c;就是多渲染一个阴影投影到y0的平面上 // shader&#xff0c;放在需要显示阴影的对象上 Shader "Custom/PlanarShadow1" {Properties{_Instensity("Shininess", Range(2, 4)) 2.0 //光照强度_Diffuse(&…

Mac下自定义快捷键

1、系统偏好设置-键盘-快捷键-App快捷键 2、确定要对什么进行自定义 比如 我要对DBeaver的运行自定义&#xff0c;我个人喜欢用cmd r 3、添加App快捷键 注意&#xff0c;菜单标题就是应用里的&#xff0c;必须要一模一样&#xff0c;哪怕是空格都不能少。也不能多。 4、对…

在Excel中如何筛选五笔码表?

你可以按照以下步骤筛选五笔码表中的简词&#xff1a; 1. 在 Excel 中打开五笔码表&#xff0c;选中需要筛选的数据列。 2. 点击“数据”选项卡中的“筛选”按钮&#xff0c;在下拉菜单中选择“高级筛选”。 3. 在弹出的“高级筛选”对话框中&#xff0c;选择“复制到其他位置…

什么是MBR/UEFI/GPT?MBR与UEFI具体区别是什么?

一、什么是MBR MBR是Master Boot Record&#xff08;主引导记录&#xff09;的缩写&#xff0c;是存储在计算机硬盘的第一个扇区&#xff08;通常是第0个扇区&#xff09;中的一个特殊的引导扇区。 MBR包含了启动计算机所需的信息&#xff0c;例如分区表、引导程序等。当计算机…

Python的接口自动化-unittest测试框架和ddt数据驱动

目录 引言 一、unittest测试框架 二、ddt数据驱动 引言 在编写接口自动化用例时&#xff0c;我们一般针对一个接口建立一个.py文件&#xff0c;一条接口测试用例封装为一个函数&#xff08;方法&#xff09;&#xff0c;但是在批量执行的过程中&#xff0c;如果其中一条出错…

#include < > 和#include ” ”有什么区别?

C语言头文件 C语言中头文件的扩展名为 .h的头文件&#xff0c;头文件中包含了函数的声明和宏定义&#xff0c;头文件可以被多个源文件引用。在C语言中有两种类型的头文件&#xff0c;一种是编译器自带的头文件&#xff0c;另一种就是程序员自己编写的头文件。 在C程序中如果要使…

package和import关键字的使用

package(包) package&#xff0c;称为包&#xff0c;用于指明该文件中定义的类、接口等结构所在的包。 8.1.1 语法格式 package 顶层包名.子包名 ; 包的作用 • 包可以包含类和子包&#xff0c;划分项目层次&#xff0c;便于管理 • 控制访问权限 import(导入) 为了使用定…

python基础知识(十三):numpy库的基本用法

目录 1. numpy的介绍2. numpy库产生矩阵2.1 numpy将列表转换成矩阵2.2 numpy创建矩阵 3. numpy的基础运算4. numpy的基础运算25. 索引 1. numpy的介绍 numpy库是numpy是python中基于数组对象的科学计算库。 2. numpy库产生矩阵 2.1 numpy将列表转换成矩阵 import numpy as …

中国人民大学与加拿大女王大学金融硕士——不断充实自己的知识库

在职场我们总是悄无声息的崩溃又悄无声息的自愈。别人拥有的&#xff0c;只要努力&#xff0c;你也会拥有。真正的成功源于生命里的学习&#xff0c;成长和热爱&#xff0c;以及不停步。一直前向走就是巅峰&#xff0c;中国人民大学与加拿大女王大学金融硕士助力我们在职提升。…

锂电池移动电源等电信终端产品配套用电源适配器/充电器产品纳入CCC范围

2023年8月1日起&#xff0c;以下三类产品纳入CCC认证范围&#xff1a; 1、便携式产品用锂离子电池和电池组(0915) 2、移动电源(0914) 3、电信终端产品配套用电源适配器/充电器(0807, 0907) 以上文章来源网络&#xff0c;如有涉及侵权&#xff0c;请联系删除&#xff01;我们一直…

部署Alertmanager对prometheus监控检测飞书报警通知

告警效果 一、编写alertmanager.yml 创建个目录存放alertmanager.yml文件 mkdir -p /data/alertmanager vi alertmanager.ymlroute:group_by: [alertname]group_wait: 30sgroup_interval: 30srepeat_interval: 1mreceiver: web.hook receivers:- name: web.hookwebhook_confi…

独立站买家必知的支付方式优缺点_FP独立站卖家必知的安全收款方式

做独立站该怎么收款是卖家首要考虑&#xff0c;除去衡量费用是否有潜在费用&#xff0c;更重要的能否符合消费者的付款习惯&#xff0c;销售的产品不同市场不同&#xff0c;所用到的收款方式也不相同。那么独立站的支付方式都有哪些呢&#xff1f;他们各有什么优缺点&#xff1…

HarmonyOS学习路之开发篇—Java UI框架(StackLayout)

StackLayout StackLayout直接在屏幕上开辟出一块空白的区域&#xff0c;添加到这个布局中的视图都是以层叠的方式显示&#xff0c;而它会把这些视图默认放到这块区域的左上角&#xff0c;第一个添加到布局中的视图显示在最底层&#xff0c;最后一个被放在最顶层。上一层的视图…