WAF(Web应用程序防火墙)是应用程序和互联网流量之间的首道防线,它监测和筛选互联网流量以拦截不良流量和恶意请求,WAF是保障Web服务可用性与完整性的重要安全解决方案。

WAF用于阻止恶意攻击的8种方法
IP围栏
这是最简便的防护方式,如果您获知恶意请求来自特定IP地址,可直接使用WAF黑名单予以拒绝,它依赖于一组静态信息。
地理围栏和地理封锁
地理围栏是WAF用来在特定地理区域周围构建虚拟周界或边界的一种技术。当用户的IP地址处于预定义边界内时,WAF可以允许或限制对某些内容或功能的访问。

您还可以借助WAF创建地理阻止规则集,这是一种限制性更强的技术,能够彻底阻止来自特定区域的访问。
例如:
如果您的电商网站仅面向美国客户,可以使用此功能限制来自其他地区的访问。
请求检验
检验是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。
响应检查
WAF监测并解析离开Web应用程序的流量,以辨识并拦截任何潜在的恶意或未经授权的活动。
它核验数据包的内容,以确保内容类型与请求资源的预期内容类型相符。
例如
若客户端请求图像文件,WAF可以核实响应确实为图像文件,而非可执行文件或恶意内容。
WAF可以核验Web应用程序返回的响应代码是否有效且符合预期。
例如
若Web应用程序为本应存在的资源返回404错误代码(页面未找到),WAF便可识别出这种潜在的攻击。
Web应用程序防火墙能够通过屏蔽或拦截包含敏感信息(如信用卡号或任何其他自定义数据)的响应来防止数据泄露。
例如:
一名员工试图将包含敏感数据的文件上传至外部文件共享网站。WAF检测到数据传输尝试并核查文件是否包含不应对外共享的任何敏感信息。WAF扫描文件以寻找与组织的数据分类策略相匹配的模式或关键词。
若文件包含敏感信息,WAF会阻止上传并向安全团队发出警报。随后,安全团队可以调查该事件并采取适当的应对措施,例如撤销该员工的访问权限或展开进一步调查。
安全规则
收到请求后,WAF会解析其有效负载并将其与自身的规则或签名进行比对。
WAF通常具备两类安全规则:预定义和自定义。
a、预定义规则
供应商预先配置预定义规则,旨在防范常见攻击,例如SQL注入、跨站脚本(XSS)及其他已知漏洞。这些规则通常会定期更新以应对新出现的威胁。
预定义的规则集涵盖防范:
- SQL注入
- XSS攻击
- 本地和远程文件包含
- 尺寸限制
- 命令注入
- 未知的异常输入
- 恶意文件扩展名(例如.php、.exe)
- 目录遍历字符(例如”..”)
- 命令注入负载
- Java反序列化负载
- 主机标头中的localhost
- 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'”
该规则还附带一个标签,表明其应对的是OWASP十大漏洞之一,并将严重级别设定为critical。
b、自定义规则
网站或应用程序所有者制定自定义规则来应对其环境特有的具体安全问题。这些规则可根据应用程序的特定需求进行定制,并能提供超出预定义规则范围的额外防护层。
托管服务团队在零日漏洞报告发布后的24小时内,对Spring Framework中检测到的远程代码执行(RCE)漏洞完成了虚拟补丁修复。
c、自动规则生成
随着WAF持续解析流量并识别新出现的威胁模式,它能够自动生成策略来抵御这些威胁。这有助于减少人工制定策略所耗费的时间和精力,同时防范可能尚未建立签名或规则的新型及演变中的威胁。
例如:
某种新型攻击涉及向应用程序发送特制的SQL查询,以绕过身份验证并获取对敏感数据的访问权限。WAF可以解析流量并辨识出攻击中所用的特定SQL语法。随后,WAF可以生成策略来拦截此特定语法并防止攻击得逞。
生成安全策略后,WAF会应用该策略来保护应用程序。这正是需要安全专家介入的环节。支持团队可以手动微调安全策略,以减少误报和漏报。
异常评分
若规则匹配,WAF会针对请求中的每一项偏差施加一个分值,这是其威胁检测与响应整体方法的一部分,这被称为”基于风险的方法”。
异常评分体系背后的思路是,请求中的所有偏差或异常并非同等重要或都代表着攻击。通过为每种变化或异常分配一个分值,WAF能够判定请求的整体风险等级,并决定是拦截还是放行。
WAF采用多种因素来分配分值,包括偏差的严重程度和类型、请求的上下文以及发出请求的用户的行为模式。
例如:
像拼写错误的URL这类简单偏差可能只会获得较低分值
更严重的偏差,如尝试注入SQL代码,则可能获得更高分值。
WAF还可以利用分值来触发不同的处置动作,
例如:
拦截高分请求
放行低分请求
对中等分值的请求进行额外验证
DDoS速率限制
DDoS速率限制约束特定IP地址在给定时间范围内可向服务器发送的请求数量。速率限制通常依据预先设定的阈值来确立,该阈值被认为对正常流量而言是安全的,任何超出此限制的请求都会被拦截。
通过实施DDoS速率限制,WAF能够有效防止攻击者用海量请求淹没服务器。这有助于确保合法用户仍能访问服务器,同时业务运营可以不间断地持续进行。
例如:
假设某企业的网站通常每分钟接收约1,000个请求。为防范DDoS攻击,该企业为任意给定的IP地址设置了每分钟2,000个请求的DDoS速率限制。这意味着若某IP地址每分钟向服务器发送超过2,000个请求,WAF将拦截这些请求。
现在,假设攻击者对该企业网站发起DDoS攻击,利用僵尸网络向服务器发送海量请求。即便攻击者掌控着数以千计的被感染设备,WAF也会拦截任何超过每分钟2,000个请求阈值的IP地址。这有效遏制了DDoS攻击的影响,使网站得以继续为合法用户正常提供服务。
静态速率限制机制的主要弊端在于它依赖固定的流量阈值。因此,在达到阈值之前可能无法察觉攻击,从而导致攻击检测迟缓或不充分。
机器人缓解
WAF可以解析浏览器发送的cookie,并将它们与已知机器人cookie的数据库进行比对,例如Udger、Checktor和Whatisyourbrowser DB。
机器人管控组件包括但不限于:
- 验证码挑战
- 速率限制
- 机器人伪装识别
- 网页抓取防护
- 机器人智能(指纹、IP、行为模式)
WAF采用基于行为的分析来识别自动化流量。这可能涵盖分析请求的速度与频率、访问页面的先后顺序,以及其他有助于区分机器人和人类行为的因素。
Bot防护涵盖以下目标:
- 识别来自人类的机器人
- 区分好机器人与坏机器人
- 放行好机器人并拦截坏机器人
- 侦测僵尸程序的来源并拦截IP地址
- 解析机器人行为并对潜在机器人实施速率限制
通过整合这些方法,WAF能够成功区分人类流量与机器人流量,识别恶意流量,并提供针对DDoS和机器人攻击的有效防御。
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/3184.html
