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 ” \
“id:1,\
phase:2,\
block,\
log,\
msg:’XSS Attack Detected’,\
tag:’OWASP Top 10′,\
severity:’CRITICAL'”
此规则检查请求参数 (ARGS) 中是否存在