admin管理员组文章数量:1794759
雷池社区版 如何配置才能正确获取到源 IP
问题说明
默认情况下,雷池会通过 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
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
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。
雷池的配置
雷池全局配置里有一个这样的选项,专门用来解决这个问题。
雷池在这个配置里提供了几个选项,根据上面讲到的知识,大家可以根据实际情况来选择最适合的选项
- **从网络连接中获取**: 当雷池作为最外层代理设备,无其他前置代理时选用
- **从
X-Forwarded-For
中获取上一级代理的地址**:在流量到达雷池之前还有**一层**代理设备(如 Nginx,CDN 等)时可选用 - **从
X-Forwarded-For
中获取上上一级代理的地址**:在流量到达雷池之前还有**两层**代理设备(如 Nginx,CDN 等)时可选用 - **从
X-Forwarded-For
中获取上上上一级代理的地址**:在流量到达雷池之前还有**三层**代理设备(如 Nginx,CDN 等)时可选用 - **从其他 HTTP Header 中获取**:有几种情况
- 流量经过了一些特殊的反向代理设备,这类代理不会发送
X-Forwarded-For
头,但是可以通过配置,把IP
通过其他头发过来 - 流量到达雷池有多种途径,可能有一层代理,也可能有两层代理,可以通过配置前置代理设备来统一
HTTP
头
本文标签: 雷池社区版 如何配置才能正确获取到源 IP
版权声明:本文标题:雷池社区版 如何配置才能正确获取到源 IP 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754934061a1708339.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论