长亭百川云 - 技术讨论

长亭百川云

技术讨论长亭漏洞情报库IP 威胁情报SLA在线工具
热门产品
雷池 WAF 社区版
IP 威胁情报
网站安全监测
百川漏扫服务
云堡垒机
百川云
技术文档
开发工具
长亭漏洞情报库
网安百科
安全社区
CT STACK 安全社区
雷池社区版
XRAY 扫描工具
长亭科技
长亭科技官网
万众合作伙伴商城
长亭 BBS 论坛
友情链接
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备2024055124号-2

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

发布于 1 年前

# 雷池 WAF
技术资料

发布于 1 年前

头像

齐天大圣孙悟空

更新于 1 年前

6

0

不想看长文可以直接翻到最后看结论

经常有大哥反馈说雷池攻击日志里显示的 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

1GET / HTTP/1.1
2Host: demo.waf-ce.chaitin.cn
3User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
4X-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 连接直接来获取。

1GET / HTTP/1.1
2Host: demo.waf-ce.chaitin.cn
3User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
4X-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 头
​
头像

雷池 - 小小

更新于 9 个月前

0

0

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

头像

你看什么看

更新于 7 个月前

七牛的全网加速X-Forwarded-For, 携带的ip是2-4不等, 询问过客服, 说是正常的. 这种情况就没法使用雷池, 希望后面更新下.

雷池是从右往左取ip,七牛的真实ip放在左边第一个, 数量又不固定.

​
头像

小菜菜

更新于 8 个月前

1

0

能针对网站单独设置这个吗?因为网站很多,有些层级不一样。

头像

KyleLi

更新于 6 个月前

非常赞同,我也是多个站点,部分走cdn部分不走,雷池似乎指定的Header找不到会自己去网络连接里去找,还算智能,但是最好的办法还是nginx里面再根据实际情况重写一个头给雷池读

​
头像

你看什么看

更新于 7 个月前

0

0

X-Forwarded-For: 1.2.3.4, 11.12.13.14, 21.22.23.24

这里的"上一级代理"对应的是哪个? 1.2.3.4 , 还是 21.22.23.24

头像

你看什么看

更新于 7 个月前

如果这对应的是21.22.23.24, 那不合理吧? X-Forwarded-For的协议, 有时候有3层, 有时候有4层. 如果4层的时候, 不是取不到ip值?

​
头像

你看什么看

更新于 7 个月前

1

0

X-Forwarded-For: 这个值如果不是固定的呢, 比如1-4个ip地址

​
头像

十三画

更新于 5 个月前

0

0

https://onlinetetris.org/

​
头像

a~magi

更新于 4 个月前

0

0

也可以使用proxy_protocl,雷池9x已经支持解析这个协议了

​
头像
相关贴子
#
建议为社区版本添加深色模式支持
#
希望雷池添加可以生成原服务器域名证书的功能
#
雷池规则广场:拦截常见扫描器
#
certd创建自动化流水线使用letsencrypt申请证书并更新雷池waf证书
#
一个站点,nginx 里面需要多个location不同判断,如何自定义