济南企业网站设计,望京 网站建设,买邮箱的网站,哪些品牌网站做的好经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。
这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。
问题说明 默认情况下#xff0c;雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题#xff0c;雷池获取到的…经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。
这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。
问题说明 默认情况下雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题雷池获取到的 IP 就是攻击者的真实 IP。
但是有些情况下我们需要在雷池前面再叠加其他代理设备如 NginxCDN应用交付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。
雷池的配置
雷池全局配置里有一个这样的选项专门用来解决这个问题。 雷池在这个配置里提供了几个选项根据上面讲到的知识大家可以根据实际情况来选择最适合的选项
从网络连接中获取: 当雷池作为最外层代理设备无其他前置代理时选用
从 X-Forwarded-For 中获取上一级代理的地址在流量到达雷池之前还有一层代理设备如 NginxCDN 等时可选用
从 X-Forwarded-For 中获取上上一级代理的地址在流量到达雷池之前还有两层代理设备如 NginxCDN 等时可选用
从 X-Forwarded-For 中获取上上上一级代理的地址在流量到达雷池之前还有三层代理设备如 NginxCDN 等时可选用
从其他 HTTP Header 中获取有几种情况流量经过了一些特殊的反向代理设备这类代理不会发送 X-Forwarded-For 头但是可以通过配置把 IP 通过其他头发过来流量到达雷池有多种途径可能有一层代理也可能有两层代理可以通过配置前置代理设备来统一 HTTP 头对大多数 CDN 来说会将 CDN 自身的 IP 也放到 XFF 中 此时需要设置为从上上一级 获取