【開山安全笔记】WAF略知一二

在工作或面试中,网安从业者经常遇到关于各类安全设备的问题。然而,初学者对于安全设备的工作原理,功能和作用大都没有很深入的了解。基于此背景,開山安全笔记将发表关于安全设备的系列文章。

本篇主要论述防火墙的概念、原理和作用、分类,且重点介绍Web应用防火墙(waf)的部署方式,适用场景等,同时对waf的高并发,waf与其他安全产品的区别等常见问题作总结。

以下内容为笔者搜集整合而来,若有纰漏,望读者指出,我们共同进步。


目录

  • 1 防火墙简介
    • 1.1 防火墙是什么
    • 1.2 防火墙的起源和发展
    • 1.3 防火墙的分类
  • 2 waf的原理及作用
    • 2.1 waf的概念
    • 2.2 waf是如何工作的?
      • waf的部署
      • waf是如何检测流量的?
      • 安全策略和规则是如何匹配的?如何绕过?
    • 2.3 waf的安全模型及局限性
      • waf的安全模型:
      • waf的局限性:
  • 3 常见问题
  • 4 waf产品
  • 5 总结
  • 6 参考链接


1 防火墙简介

当今网络应用飞速发展,随之产生的安全威胁促进网络安全防护的需求增加,而防火墙便是网络安全防护的首选,也是众多安全产品之首。

1.1 防火墙是什么

防火墙是作用于不同安全域之间,具备访问控制及安全防护功能的网络安全产品,根据安全目的、实现原理的不同,主要分为网络型防火墙、WEB应用防火墙、数据库防火墙、主机型防火墙或其组合。

从防护的角度出发,防火墙(Firewall)通过预先制定的安全规则来监视和控制传入和传出的网络流量。这些安全规则通常包括用户定义的安全规则,通用规则如OWASP CRS,安全厂商根据威胁情报提取的自有漏洞或入侵规则等。
从名称上看,防火墙是一道将“火”与所保护区域隔离开的保护屏障:在内部信任网和外部非信任网之间之间构造保护屏障,尽可能地对外部屏蔽网络内部的信息、结构和运行状况。
1714567730716.jpg

图1-防火墙工作示意图

1.2 防火墙的起源和发展

  • 防火墙的概念起源于1980年代。1988 年发布的莫里斯病毒是最早的互联网病毒之一,它产生了对虚拟防火墙的需求。
  • 后续出现了防火墙的前身,Packet filter等包过滤型路由器,有隔离网络功能。20 世纪 90 年代初,人们开发出一种基于网络的防火墙,可以专门保护 FTP 流量。这是防火墙能够控制应用程序或服务访问的开端。
  • 到 20 世纪 90 年代末,随着在线活动的增加,网络服务器被黑客攻击成为问题,人们开始关注网络应用程序防火墙(WAF)的开发。

1714567768007(1).jpg

图2-防火墙的起源和发展示意图
1714567779080.jpg

图3-防火墙技术革新示意图

1.3 防火墙的分类

也有学者将防火墙技术发展概括为:

  • 第一代:包过滤防火墙(仅能实现简单的访问控制)
    实现包过滤的核心技术是访问控制列表(五元组)
    包过滤防火墙只根据设定好的静态规则来判断是否允许数据通过

1714567789430.jpg

图4-包过滤功能概述

  • 第二代:代理防火墙(在应用层代理内部网络和外部网络之间的通信)
  • 第三代:状态监测防火墙(发展史上的里程碑)
  • 第四代:统一威胁管理(简称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黑名单和区域封禁等功能。

1714567843988.jpg

图5-阿里云waf的功能示意图
1714567856844.jpg

图6-著名开源waf,ModSecurity的功能介绍图

2.2 waf是如何工作的?

为确保安全,waf通过**配置DNS解析地址、软件部署、串联部署、透明部署、网桥部署、反向代理部署、旁路部署等(网关处)**获取攻击流量,waf会拦截并检查所有 HTTP 请求,基于规则进行攻击特征匹配,或利用其他方式进行攻击检测及阻断。通过以上行为,最终确保外部攻击流量无法触达网站服务器。

接下来我们阐述waf的部署及检测引擎细节。

waf的部署

  • 透明传输部署
    不改动原有网络拓扑
    不增加网络设备的接口
    WAF关机不影响服务器的访问
  • 旁路部署
  • 反向代理部署
    不希望把WEB服务器暴露在公网。
    特点:客户端与服务器互相均不可见
    只转发代理策略匹配的HTTP流
  • 镜像部署
    只需要检测是否被攻击,不需要防护

1714567880478.jpg

图7-部署方式优劣势比较
同时注意还存在分布式部署的waf。综上,waf或同时或优先接收客户端到服务端的流量进行分析。

waf是如何检测流量的?

其实这是核心问题,就是waf的检测引擎到底提供了哪些功能,我们看京东云团队的一篇技术文章“Web应用防火墙--规则防护 | 京东云技术团队”

  1. 规则过滤:WAF防火墙根据预先定义的规则集来过滤和阻止恶意请求。这些规则可以基于请求的特征、源IP地址、请求频率等因素进行配置。一旦WAF检测到与规则匹配的恶意流量,它会采取相应的阻止措施,如拦截、重定向或放行。
  2. 攻击签名检测:WAF防火墙利用已知的攻击签名来识别恶意流量。这些签名通常基于已知的攻击模式或恶意代码的特征。当WAF检测到与签名匹配的流量时,会采取相应的阻止措施,从而防止攻击成功执行。
  3. 行为分析:WAF防火墙还采用行为分析技术来识别异常流量。它通过分析请求的行为模式,如访问频率、连接数、用户行为等,来识别与正常用户行为不符的异常行为。如果请求的行为被判断为恶意,WAF会采取相应的阻止措施。
  4. 机器学习算法:现代的WAF防火墙利用机器学习算法来提高恶意流量识别的准确性,自动适应不断变化的攻击手法,并实时更新防御策略。

我们展开前面所提的规则过滤,提出一个问题:

安全策略和规则是如何匹配的?如何绕过?

  • 正则匹配:例如匹配函数 concat(),而不会匹配字符 concat。而 MySQL里面concat函数调用的时候括号是可以被隔开的。例如concat (),就可以绕过该正则。
  • 语义分析:**将输入的参数模拟为真实语句去运行,然后判断结果是否有问题。**这种理念类似于一个 webshell检测引擎,在不考虑性能等情况下,将PHP的Zend引擎下执行命令的函数hook住,如果该函数被调用,会先进入自己的逻辑去判断。
    对于语义分析的WAF,绕过理念会更加复杂和困难。因为你不再是对正则进行绕过。而是类似于对一个解析引擎进行黑盒测试的绕过,将其绕过后还要保证后端的真实解析引擎不出错。
    类似于前面举例 concat的绕过,本质上是利用了前端语言引擎的解析和后端MySQL引擎解析的不一致达成绕过。而在基于语义分析绕过的情况下,再也无法使用等价替换的手段,只能通过WAF引擎与后端服务器引擎不一致来绕过。

长亭雷池waf开源了其语义分析引擎,并指出以下观点。

  • “基于规则匹配的攻击识别方法存在先天不足。“
  • “智能语义分析算法由词法分析、语法分析、语义分析和威胁模型匹配 4 个步骤组成。“

以 SQL 注入检测为例:
1714567944436.jpg

图8-语义分析与传统规则匹配区别示例图

2.3 waf的安全模型及局限性

waf的安全模型:

  • 主动安全模型——根据允许的元素和操作列表过滤流量的白名单,任何不在列表中的内容都会被阻止。这种模型的优势在于它可以避免没有预料到的新的或未知的攻击。
  • 被动安全模型——通过黑名单阻止特定的攻击来源对象。该模型更易于实施,但不能保证所有威胁都得到解决。可能需要维护一个可能庞大的恶意签名列表。同时安全级别取决于限制的具体数量。

waf的局限性:

  • 不能防止源于内部的攻击,不提供对内部的保护;
  • 不能防病毒;
  • 不能根据网络被恶意使用和攻击的情况动态调整自己的策略;
  • 本身的防攻击能力不够,容易成为被攻击的首要目标。

3 常见问题

1.防火墙与路由器、交换机的对比
路由器、交换机的本质是根据MAC地址表/路由表进行数据帧/数据包的转发/路由。
防火墙的本质是在一个已经连通的网络中对传输的数据进行控制,以达到防治网络病毒攻击的目的。
1714568069380.jpg

图10-防火墙与路由器交换机对比示意图防火墙默认所有的流量都不让通过,如果想让某些流量通过,则需要进行配置,加入白名单;相反,路由器默认是所有流量都可以通过,如果不想让某些流量通过,则通过ACL进行控制
那么,防火墙控制流量访问是不是也用了ACL这种技术呢?不是的,ACL这种技术最大的弊端就是它都是双向访问的,如果我允许你访问为,那么我也能访问你,如果我拒绝你访问我,那么我也不能访问你,这就是ACL,没办法做到单通。防火墙对ACL技术进行了升级,可以限制流量单向访问。另外,路由器只能对下四层进行流量控制,而防火墙可以做到对整个7层进行流量控制(例如防火墙上配置允许doc文件通过,docx文件不通过,这就是在第七层应用层进行控制)。
1714568085995.jpg

图11-防火墙与路由器对比
2.与IDS,IPS的区别
IDS:入侵检测系统。IDS更侧重于威胁检测和警报,而防火墙则侧重于实时的访问控制和阻止威胁。
IPS:入侵防御系统。能自动采取措施以防止检测到的攻击,是主动防御系统。

3.RASP
运行时应用程序自我保护(Runtime Application Self-Protection,RASP)是一种在应用上运行的技术,在应用程序运行时发挥作用,旨在实时检测针对应用程序的攻击。一旦应用程序开始运行,RASP可以通过分析应用程序的行为和这种行文的上下文来保护它不受恶意注入或行为的影响。可与waf结合,形成纵深防御机制。

4.waf高并发的实现
并发连接数控制:通过限制最大并发连接数来减轻防火墙的负担,使用负载均衡技术分散流量
防火墙高可用架构:主备、集群和分布式。主备方式即一台主防火墙负责处理业务,另一台备用防火墙在主防火墙出现故障时接管业务,保障系统正常运行。集群方式则是多台防火墙协同工作,共同处理业务,任一防火墙故障不影响整体性能。分布式架构通过将防火墙功能模块化,实现各模块独立部署和互不干扰,显著提升系统可靠性。

4 waf产品

  • 硬件Waf:绿盟、启明、安恒、知道创宇、天融信等

    硬件Waf通常的安装方式是将Waf串行部署在Web服务器前端,用于检测、阻断异常流量。常规硬件Waf的实现方式是通过代理技术代理来自外部的流量,并对请求包进行解析,通过安全规则库的攻击规则进行匹配,如成功匹配规则库中的规则,则识别为异常并进行请求阻断。

  • 软件Waf:安全狗、云锁、D盾等

    软件Waf则是安装在需要防护的服务器上,实现方式通常是Waf监听端口或以Web容器扩展方式进行请求检测和阻断。

  • 云WAF:阿里云、安全狗、安恒、知道创宇等

    云WAF,也称WEB应用防火墙的云模式,它的主要实现方式是利用DNS技术,通过移交域名解析权来实现安全防护。用户的请求首先发送到云端节点进行检测,如存在异常请求则进行拦截否则将请求转发至真实服务器。

5 总结

相信大家在初学安全时,需要接触大量“不知所云”的安全设备,建议先建立有对这些安全设备的基础概念,知晓其简单原理,再结合业务进行深入的了解。

综上,本篇主要论述防火墙的概念、原理和作用、分类,且重点介绍Web应用防火墙(waf)的部署方式,适用场景等,同时对waf的高并发,waf与其他安全产品的区别等常见问题作总结。我们知道了:

  • waf通过软件部署、串联部署、透明部署、网桥部署、反向代理部署、旁路部署等(网关处)获取攻击流量,拦截并检查所有 HTTP 请求,基于规则进行攻击特征匹配,语义分析等进行攻击检测及阻断。
  • 规则匹配通常为正则匹配,语义分析简单讲就是一个代码执行引擎。
  • waf能提供常见web漏洞防护,扫描防护,CC攻击防护,反爬,日志记录,精准访问控制,IP黑名单和区域封禁等功能。

本文为笔者搜集整合而来,若有纰漏,望读者指出。我们共同进步!

欢迎关注我的gzh:打代码的猫

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)

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

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

相关文章

Java项目:88 springboot104学生网上请假系统设计与实现

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本学生网上请假系统管理员,教师,学生。 管理员功能有个人中心,学生管理,教师管理,班级信息…

virtualbox kafka nat + host-only集群 + windows 外网 多网卡

virtualbox kafka nat + host-only集群 + windows 映射访问 kafka集群搭建背景kafka集群搭建 背景 使用virtualbox搭建kafka集群,涉及到不同网络策略的取舍 首先 桥接 网络虽说 啥都可以,但是涉及到过多ip的时候,而且还不能保证使用的ip不被占用,所以个人选择kafka虚拟机…

手撕spring框架(3)

手撕spring框架(3) 相关系列 手撕spring框架(1) 手撕spring框架(2) InitializingBean 接口详解 什么是 InitializingBean 接口? InitializingBean 接口是 Spring 框架中的一个接口&#xff0c…

服务器远程连接jupyter notebook

目录 服务器远程连接jupyter notebook1、在服务器端安装notebook2、在服务器端的设置Step 1:Step 2:Step 3: 3. 在服务器端运行jupyter4、在windows 上连接远程服务器 参考资料 服务器远程连接jupyter notebook 1、在服务器端安装notebook conda install jupyter notebook 2…

一个C++小程序调试过程记录

Top 20 C Projects With Source Code [2024 Update]https://www.interviewbit.com/blog/cpp-projects/ 这个网页有一些简单的C程序的源码,闲来无事,把第一个程序(Bookshop Management System Using C)的源码下载了下来。 源文件…

面试:Spring(IOC、AOP、事务失效、循环引用、SpringMVC、SpringBoot的自动配置原理、Spring框架常见注解)

目录 一、Spring的单例Bean是否是线程安全的? 二、什么是AOP 1、介绍 (1)记录操作日志 (2)实现Spring中的事务 三、spring中事务失效的场景有哪些? 1、异常捕获处理 2、抛出检查异常 3、非public方…

jupyter notebook导出pdf文件显示不了中文

找到文件index.tex.j2,我的在 C:\Users\Administrator\miniconda3\envs\opencv2\share\jupyter\nbconvert\templates\latex 我安装miniconda3并配置opencv2所需要的环境, 配置前 最后:用文本编辑器打开,修改图中article为ctexart&#xf…

计算机网络 —— 网络层

IP 1. 基本介绍2. IP地址定义3. IP地址分类4. 子网掩码5. 全局地址与私有地址 1. 基本介绍 TCP/IP 协议的心脏是网络层,主要“实现节点之间的通信”,即“点对点(end-to-end)通信”。 网络层包含IP(Internet Protocol)及DNS(Domain Name Sys…

设计模式之空对象模式

空对象模式(Null Object Pattern)也称为零对象模式,是一种设计模式,用于代表空值的对象,而不是返回null。它的目的是让空对象能够像任何其他非空对象一样被使用,从而避免在代码中进行空值检查,提…

Meditron:基于 Llama 完全开源的医学大语言模型

健康危机就在眼前,当医疗资源有限时,每一秒钟都至关重要!Meditron 就像一位忠实的医疗助手,提供基于证据的护理建议和情境意识的推荐,帮助医疗工作者在诊断和治疗过程中做出更准确的决策。 在资源有限的医疗环境中&am…

06_电子设计教程基础篇(学习视频推荐)

文章目录 前言一、基础视频1、电路原理3、模电4、高频电子线路5、电力电子技术6、数学物理方法7、电磁场与电磁波8、信号系统9、自动控制原理10、通信原理11、单片机原理 二、科普视频1、工科男孙老师2、达尔闻3、爱上半导体4、华秋商城5、JT硬件乐趣6、洋桃电子 三、教学视频1…

Text-to-SQL小白入门(12)Awesome-Text2SQL开源项目star破1000

项目介绍 项目地址 23年9月份刚开源这个项目,大半年过去了,star数终于破1000啦,决定在知乎更新一下内容,看看内容变化,知乎有上当时项目介绍的链接:追光者:Text-to-SQL小白入门(六&…

用LM Studio搭建微软的PHI3小型语言模型

什么是 Microsoft Phi-3 小语言模型? 微软Phi-3 模型是目前功能最强大、最具成本效益的小型语言模型 (SLM),在各种语言、推理、编码和数学基准测试中优于相同大小和更高大小的模型。此版本扩展了客户高质量模型的选择范围&#x…

【计算机网络】网络层总结

目录 知识梗概 IP地址 子网划分 IP包头格式 路由 网络层协议 ARP病毒/ARP欺骗 知识梗概 IP地址 IP相关介绍:机器之间需要交流,必须要一个地址才能找到对应的主机,IP地址是主机的一种表示,保证主机之间的正常通信&#xff…

【Mac】Mac安装软件常见问题解决办法

前言 刚开始用Mac系统的小伙伴或者在更新系统版本后运行App的朋友会经常碰到弹窗提示「xxx已损坏,无法打开,您应该将它移到废纸篓」、「打不开xxx,因为Apple无法检查其是否包含恶意软件」、「打不开xxx,因为它来自身份不明的开发…

计算机408备考-数据结构重要知识点-数据结构的定义

【计算机408备考-数据结构重要知识点-数据结构的定义-哔哩哔哩】 https://b23.tv/x7shjNf 数据是信息的载体。数据元素是数据的基本单位。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。数据对象是具有相同性质的数据元素的集合&…

cAdvisor-Docker容器性能分析工具

cAdvisor-Docker容器性能分析工具 软件简介 cAdvisor 是谷歌公司用来分析运行中的Docker容器的资源占用以及性能特性的工具。 cAdvisor 是一个运行中的守护进程用来收集、聚合、处理和导出运行容器相关的信息,每个容器保持独立的参数、历史资源使用情况和完整的资…

【数据结构与算法】力扣 239. 滑动窗口最大值

题干描述 给你一个整数数组 nums,有一个大小为 k **的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入: nums [1,3,-1,-3,5,3…

树莓派点亮LED灯

简介 使用GPIO Zero library 的 Python库实现点亮LED灯。接线 树莓派引脚参考图如下: LED正极 接GPIO17 LED负极 接GND 权限 将你的用户加到gpio组中, 否则无法控制GPIO sudo usermod -a -G gpio 代码 from gpiozero import LED from time impor…

使用Python的Tkinter库创建你的第一个桌面应用程序

文章目录 准备工作创建窗口和按钮代码解释运行你的应用程序结论 在本教程中,我们将介绍如何使用Python的Tkinter库创建一个简单的桌面应用程序。我们将会创建一个包含一个按钮的窗口,点击按钮时会在窗口上显示一条消息。 准备工作 首先,确保…