【開山安全笔记】WAF略知一二
在工作或面试中,网安从业者经常遇到关于各类安全设备的问题。然而,初学者对于安全设备的工作原理,功能和作用大都没有很深入的了解。基于此背景,開山安全笔记将发表关于安全设备的系列文章。
本篇主要论述防火墙的概念、原理和作用、分类,且重点介绍Web应用防火墙(waf)的部署方式,适用场景等,同时对waf的高并发,waf与其他安全产品的区别等常见问题作总结。
以下内容为笔者搜集整合而来,若有纰漏,望读者指出,我们共同进步。
1 防火墙简介
当今网络应用飞速发展,随之产生的安全威胁促进网络安全防护的需求增加,而防火墙便是网络安全防护的首选,也是众多安全产品之首。
1.1 防火墙是什么
防火墙是作用于不同安全域之间,具备访问控制及安全防护功能的网络安全产品,根据安全目的、实现原理的不同,主要分为网络型防火墙、WEB应用防火墙、数据库防火墙、主机型防火墙或其组合。
从防护的角度出发,防火墙(Firewall)通过预先制定的安全规则来监视和控制传入和传出的网络流量。这些安全规则通常包括用户定义的安全规则,通用规则如OWASP CRS,安全厂商根据威胁情报提取的自有漏洞或入侵规则等。
从名称上看,防火墙是一道将“火”与所保护区域隔离开的保护屏障:在内部信任网和外部非信任网之间之间构造保护屏障,尽可能地对外部屏蔽网络内部的信息、结构和运行状况。
1.2 防火墙的起源和发展
- 防火墙的概念起源于1980年代。1988 年发布的莫里斯病毒是最早的互联网病毒之一,它产生了对虚拟防火墙的需求。
- 后续出现了防火墙的前身,Packet filter等包过滤型路由器,有隔离网络功能。20 世纪 90 年代初,人们开发出一种基于网络的防火墙,可以专门保护 FTP 流量。这是防火墙能够控制应用程序或服务访问的开端。
- 到 20 世纪 90 年代末,随着在线活动的增加,网络服务器被黑客攻击成为问题,人们开始关注网络应用程序防火墙(WAF)的开发。
1.3 防火墙的分类
也有学者将防火墙技术发展概括为:
- 第一代:包过滤防火墙(仅能实现简单的访问控制)
实现包过滤的核心技术是访问控制列表(五元组)
包过滤防火墙只根据设定好的静态规则来判断是否允许数据通过
- 第二代:代理防火墙(在应用层代理内部网络和外部网络之间的通信)
- 第三代:状态监测防火墙(发展史上的里程碑)
- 第四代:统一威胁管理(简称UTM)
- 第五代:下一代防火墙(简称NG)
按照安全目的、实现原理分类,防火墙可分为:
- 网络型防火墙
- WEB应用防火墙(硬件WAF、软件WAF和云WAF)
- 数据库防火墙
- 主机型防火墙
- 以上组合
2 waf的原理及作用
2.1 waf的概念
传统防火墙无法解析HTTP应用层的细节,对规则的过滤过于死板,无法为Web应用提供足够的防护。为了解决上述问题,WAF应运而生。
WAF全称为Web Application Firewall,即Web应用程序防火墙。WAF属于检测型及纠正型防御控制措施,主要监视和阻止与Web应用程序之间的应用层流量,通过执行一系列针HTTP/HTTPS的安全策略来专门为Web应用提供保护的一种设备。
WAF分为硬件WAF、软件WAF(如ModSecurity)和云WAF。
与常规防火墙的区别在于,WAF工作在应用层,能够过滤特定Web应用程序的内容。通过检查HTTP流量,它可以防止源自Web应用程序安全漏洞的攻击,例如SQL注入、跨站点脚本,文件包含和安全性错误配置,对非法的请求予以实时阻断,从而对各类网站站点进行有效防护。
常见的waf功能有:常见web漏洞防护,扫描防护,CC攻击防护,反爬,日志记录,精准访问控制,IP黑名单和区域封禁等功能。
2.2 waf是如何工作的?
为确保安全,waf通过**配置DNS解析地址、软件部署、串联部署、透明部署、网桥部署、反向代理部署、旁路部署等(网关处)**获取攻击流量,waf会拦截并检查所有 HTTP 请求,基于规则进行攻击特征匹配,或利用其他方式进行攻击检测及阻断。通过以上行为,最终确保外部攻击流量无法触达网站服务器。
接下来我们阐述waf的部署及检测引擎细节。
waf的部署
- 透明传输部署
不改动原有网络拓扑
不增加网络设备的接口
WAF关机不影响服务器的访问 - 旁路部署
- 反向代理部署
不希望把WEB服务器暴露在公网。
特点:客户端与服务器互相均不可见
只转发代理策略匹配的HTTP流 - 镜像部署
只需要检测是否被攻击,不需要防护
同时注意还存在分布式部署的waf。综上,waf或同时或优先接收客户端到服务端的流量进行分析。
waf是如何检测流量的?
其实这是核心问题,就是waf的检测引擎到底提供了哪些功能,我们看京东云团队的一篇技术文章“Web应用防火墙--规则防护 | 京东云技术团队”
- 规则过滤:WAF防火墙根据预先定义的规则集来过滤和阻止恶意请求。这些规则可以基于请求的特征、源IP地址、请求频率等因素进行配置。一旦WAF检测到与规则匹配的恶意流量,它会采取相应的阻止措施,如拦截、重定向或放行。
- 攻击签名检测:WAF防火墙利用已知的攻击签名来识别恶意流量。这些签名通常基于已知的攻击模式或恶意代码的特征。当WAF检测到与签名匹配的流量时,会采取相应的阻止措施,从而防止攻击成功执行。
- 行为分析:WAF防火墙还采用行为分析技术来识别异常流量。它通过分析请求的行为模式,如访问频率、连接数、用户行为等,来识别与正常用户行为不符的异常行为。如果请求的行为被判断为恶意,WAF会采取相应的阻止措施。
- 机器学习算法:现代的WAF防火墙利用机器学习算法来提高恶意流量识别的准确性,自动适应不断变化的攻击手法,并实时更新防御策略。
我们展开前面所提的规则过滤,提出一个问题:
安全策略和规则是如何匹配的?如何绕过?
- 正则匹配:例如匹配函数 concat(),而不会匹配字符 concat。而 MySQL里面concat函数调用的时候括号是可以被隔开的。例如concat (),就可以绕过该正则。
- 语义分析:**将输入的参数模拟为真实语句去运行,然后判断结果是否有问题。**这种理念类似于一个 webshell检测引擎,在不考虑性能等情况下,将PHP的Zend引擎下执行命令的函数hook住,如果该函数被调用,会先进入自己的逻辑去判断。
对于语义分析的WAF,绕过理念会更加复杂和困难。因为你不再是对正则进行绕过。而是类似于对一个解析引擎进行黑盒测试的绕过,将其绕过后还要保证后端的真实解析引擎不出错。
类似于前面举例 concat的绕过,本质上是利用了前端语言引擎的解析和后端MySQL引擎解析的不一致达成绕过。而在基于语义分析绕过的情况下,再也无法使用等价替换的手段,只能通过WAF引擎与后端服务器引擎不一致来绕过。
长亭雷池waf开源了其语义分析引擎,并指出以下观点。
- “基于规则匹配的攻击识别方法存在先天不足。“
- “智能语义分析算法由词法分析、语法分析、语义分析和威胁模型匹配 4 个步骤组成。“
以 SQL 注入检测为例:
图8-语义分析与传统规则匹配区别示例图
2.3 waf的安全模型及局限性
waf的安全模型:
- 主动安全模型——根据允许的元素和操作列表过滤流量的白名单,任何不在列表中的内容都会被阻止。这种模型的优势在于它可以避免没有预料到的新的或未知的攻击。
- 被动安全模型——通过黑名单阻止特定的攻击来源对象。该模型更易于实施,但不能保证所有威胁都得到解决。可能需要维护一个可能庞大的恶意签名列表。同时安全级别取决于限制的具体数量。
waf的局限性:
- 不能防止源于内部的攻击,不提供对内部的保护;
- 不能防病毒;
- 不能根据网络被恶意使用和攻击的情况动态调整自己的策略;
- 本身的防攻击能力不够,容易成为被攻击的首要目标。
4 waf产品
硬件Waf:绿盟、启明、安恒、知道创宇、天融信等
硬件Waf通常的安装方式是将Waf串行部署在Web服务器前端,用于检测、阻断异常流量。常规硬件Waf的实现方式是通过代理技术代理来自外部的流量,并对请求包进行解析,通过安全规则库的攻击规则进行匹配,如成功匹配规则库中的规则,则识别为异常并进行请求阻断。
软件Waf:安全狗、云锁、D盾等
软件Waf则是安装在需要防护的服务器上,实现方式通常是Waf监听端口或以Web容器扩展方式进行请求检测和阻断。
云WAF:阿里云、安全狗、安恒、知道创宇等
云WAF,也称WEB应用防火墙的云模式,它的主要实现方式是利用DNS技术,通过移交域名解析权来实现安全防护。用户的请求首先发送到云端节点进行检测,如存在异常请求则进行拦截否则将请求转发至真实服务器。
图9-防火墙产品概述
注:本文参考的开源waf有ModSecurity,Safeline等。
3 常见问题
1.防火墙与路由器、交换机的对比
路由器、交换机的本质是根据MAC地址表/路由表进行数据帧/数据包的转发/路由。
防火墙的本质是在一个已经连通的网络中对传输的数据进行控制,以达到防治网络病毒攻击的目的。
防火墙默认所有的流量都不让通过,如果想让某些流量通过,则需要进行配置,加入白名单;相反,路由器默认是所有流量都可以通过,如果不想让某些流量通过,则通过ACL进行控制
那么,防火墙控制流量访问是不是也用了ACL这种技术呢?不是的,ACL这种技术最大的弊端就是它都是双向访问的,如果我允许你访问为,那么我也能访问你,如果我拒绝你访问我,那么我也不能访问你,这就是ACL,没办法做到单通。防火墙对ACL技术进行了升级,可以限制流量单向访问。另外,路由器只能对下四层进行流量控制,而防火墙可以做到对整个7层进行流量控制(例如防火墙上配置允许doc文件通过,docx文件不通过,这就是在第七层应用层进行控制)。
3.RASP
运行时应用程序自我保护(Runtime Application Self-Protection,RASP)是一种在应用上运行的技术,在应用程序运行时发挥作用,旨在实时检测针对应用程序的攻击。一旦应用程序开始运行,RASP可以通过分析应用程序的行为和这种行文的上下文来保护它不受恶意注入或行为的影响。可与waf结合,形成纵深防御机制。
4.waf高并发的实现
并发连接数控制:通过限制最大并发连接数来减轻防火墙的负担,使用负载均衡技术分散流量
防火墙高可用架构:主备、集群和分布式。主备方式即一台主防火墙负责处理业务,另一台备用防火墙在主防火墙出现故障时接管业务,保障系统正常运行。集群方式则是多台防火墙协同工作,共同处理业务,任一防火墙故障不影响整体性能。分布式架构通过将防火墙功能模块化,实现各模块独立部署和互不干扰,显著提升系统可靠性。
5 总结
相信大家在初学安全时,需要接触大量“不知所云”的安全设备,建议先建立有对这些安全设备的基础概念,知晓其简单原理,再结合业务进行深入的了解。
综上,本篇主要论述防火墙的概念、原理和作用、分类,且重点介绍Web应用防火墙(waf)的部署方式,适用场景等,同时对waf的高并发,waf与其他安全产品的区别等常见问题作总结。我们知道了:
- waf通过软件部署、串联部署、透明部署、网桥部署、反向代理部署、旁路部署等(网关处)获取攻击流量,拦截并检查所有 HTTP 请求,基于规则进行攻击特征匹配,语义分析等进行攻击检测及阻断。
- 规则匹配通常为正则匹配,语义分析简单讲就是一个代码执行引擎。
- waf能提供常见web漏洞防护,扫描防护,CC攻击防护,反爬,日志记录,精准访问控制,IP黑名单和区域封禁等功能。
本文为笔者搜集整合而来,若有纰漏,望读者指出。我们共同进步!
6 参考链接
- Web Application Firewall 101 - Learn All About WAFs
- 信息安全-网安产品(WAF、蜜罐、漏洞扫描工具、安全事件系统)
- 防火墙详解(发展史、概念、应用、包过滤技术、状态监测包过滤技术
- 【深蓝实验室天魁战队】WAF的识别、检测、绕过原理与实战案例
- WAF建设运营及AI应用实践 - 博客 - 腾讯安全应急响应中心
- 部署雷池WAF的避坑指南
- Azure Web 应用程序防火墙的工作原理 - Training | Microsoft Learn
- Web应用防火墙--规则防护 | 京东云技术团队 - 掘金 (juejin.cn)
- WAF防火墙到底有什么作用 - 掘金
- 语义分析检测算法 | 雷池 WAF 社区版 (chaitin.cn)
waf从入门到Bypass | Wh0ale’s Blog - WAF那些事儿 (qq.com)
- 盘点 2023 十大免费/开源 WAF - 知乎 (zhihu.com)
- 好文赏析:一文读懂运行时应用程序自我保护(RASP)