当前位置: 首页 > news >正文

雷池 WAF 如何配置才能正确获取到源 IP

经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。

这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。

问题说明

image.png

默认情况下,雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题,雷池获取到的 IP 就是攻击者的真实 IP。

但是,有些情况下我们需要在雷池前面再叠加其他代理设备(如 Nginx,CDN,应用交付,API 网管等等)。在这种情况下,实际连接雷池的不是真正的网站用户,而是这些代理设备,这种情况下我们就需要根据实际网络拓扑来调整雷池的 IP 获取方式。 ## 先了解什么是 X-Forwarded-For

X-Forwarded-For 是一个相对通用的 HTTP 请求头。

HTTP 流量在经过代理时,由于网络连接被截胡,服务器无法得知真正的客户端 IP。这时代理设备会给当前的流量加上一个 X-Forwarded-For 头,里面的内容就是连接这个代理的客户端 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,真正的客户端地址是 1.2.3.4

GET / HTTP/1.1 Host: demo.waf-ce.chaitin.cn User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 X-Forwarded-For: 1.2.3.4

X-Forwarded-For 实际上是一个链式结构。如果流量经过了多层代理设备,X-Forwarded-For 会记录途径的所有 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,流量经过了三层代理,真正的客户端地址是 1.2.3.4,第一层代理的是 11.12.13.14,第二层代理的地址是 21.22.23.24,第三次代理的地址可以通过 Socket 连接直接来获取。

GET / HTTP/1.1 Host: demo.waf-ce.chaitin.cn User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 X-Forwarded-For: 1.2.3.4, 11.12.13.14, 21.22.23.24

IP-Forwarded-For 头靠谱么

在代理设备和代理链路可信的情况下 IP-Forwarded-For 头传递的内容是很靠谱的,可以放心的试用。

但是呢,如果代理设备不可信,那么攻击者会通过伪造 IP-Forwarded-For 头的办法来实现伪造源 IP。

雷池的配置

雷池全局配置里有一个这样的选项,专门用来解决这个问题。

image.png

雷池在这个配置里提供了几个选项,根据上面讲到的知识,大家可以根据实际情况来选择最适合的选项

从网络连接中获取: 当雷池作为最外层代理设备,无其他前置代理时选用
从 X-Forwarded-For 中获取上一级代理的地址:在流量到达雷池之前还有一层代理设备(如 Nginx,CDN 等)时可选用
从 X-Forwarded-For 中获取上上一级代理的地址:在流量到达雷池之前还有两层代理设备(如 Nginx,CDN 等)时可选用
从 X-Forwarded-For 中获取上上上一级代理的地址:在流量到达雷池之前还有三层代理设备(如 Nginx,CDN 等)时可选用
从其他 HTTP Header 中获取:有几种情况流量经过了一些特殊的反向代理设备,这类代理不会发送 X-Forwarded-For 头,但是可以通过配置,把 IP 通过其他头发过来流量到达雷池有多种途径,可能有一层代理,也可能有两层代理,可以通过配置前置代理设备来统一 HTTP 头

对大多数 CDN 来说,会将 CDN 自身的 IP 也放到 XFF 中, 此时需要设置为从上上一级 获取

相关文章:

  • Python中requests模块(爬虫)基本使用
  • MySQL的驱动安装
  • OpenCV-图像拼接
  • Python爬虫爬取王者荣耀英雄信息并保存到图数据库
  • Spring源码学习:SpringMVC(2)DispatcherServlet初始化【子容器9大组件】
  • 【YOLO目标检测车牌数据集】共10000张、已标注txt格式、有训练好的yolov5的模型
  • python中logging的用法
  • 433按键单片机解码
  • Meta AI 发布 Llama 3.2
  • 赛氪作媒体支持单位受邀参加首届科普翻译与跨学科专业学术研讨会
  • OCR Fusion: EasyOCR/Tesseract/PaddleOCR/TrOCR/GOT
  • 不同的浏览器、服务器和规范对 URL 长度的限制
  • 前端面试经验总结2(经典问题篇)
  • LIMS和LIS的主要区别
  • InternVL 微调实践
  • 分享的文章《人生如棋》
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CSS 专业技巧
  • IDEA 插件开发入门教程
  • java 多线程基础, 我觉得还是有必要看看的
  • Java 内存分配及垃圾回收机制初探
  • JavaWeb(学习笔记二)
  • JS+CSS实现数字滚动
  • js写一个简单的选项卡
  • LeetCode29.两数相除 JavaScript
  • October CMS - 快速入门 9 Images And Galleries
  • PermissionScope Swift4 兼容问题
  • 百度小程序遇到的问题
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 思考 CSS 架构
  • 新版博客前端前瞻
  • 如何正确理解,内页权重高于首页?
  • # 飞书APP集成平台-数字化落地
  • #HarmonyOS:Web组件的使用
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $$$$GB2312-80区位编码表$$$$
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (7) cmake 编译C++程序(二)
  • (苍穹外卖)day03菜品管理
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)JAVA使用POI操作excel
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (算法)前K大的和
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)OpenStack Hacker养成指南
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?