SafeLine
SafeLine copied to clipboard
[建议] 希望能源 IP 获取方式能设置多个或是站点可以分别设置
背景与遇到的问题
例如: CDN传过来的XXF头会被伪造(X-Forwarded-For: s:-ysJ[$[mm2:-jJnds[env:goh:-i:ds[h33::-nJs://i-5d3627-m8gw-uma5.pi5sf.store?Type=A Type&Name=11001108Char=!},2408:400a:8a:6000:6b38:4fdc:fdfc:925a),造成取值取成了CDN节点的IP,导致CDN与WAF间的回源失败,严重可能造成业务出现问题。 也存在站点接入了多个CDN的情况,即各个CDN会有其防ip伪造的head头,例如:x-true-ip、true-ip、client-ip等等,主要还是防止XFF被伪造。
建议的解决方案
增加源 IP 获取方式的取值,可以设置多个源 IP 获取方式,或是有一定的优先级(先取CDN厂商特定的真实IP获取头,后考虑XFF)。
小小纠正一点,背景问题在雷池社区版上是不存在的。目前即使将 “源 IP 获取方式” 配置为 “X-Forwarded-For”,也只会和普通请求头一样,把 XFF 整体当成一个 IP 来解析,如果是 “IP1, IP2” 这种就会解析失败直接使用连接 IP。而不会直接取 “左数第一个源 IP”,原因就是这个 “XFF 伪造” 问题。
除此之外,安全丰富的 XFF 配置,确实会让界面操作变得比较复杂,加上这其实更常见于企业拓扑,不太符合社区版的定位。可以参考这里的讨论:https://github.com/chaitin/SafeLine/issues/301#issuecomment-1714875984
目前更建议统一修改一下 CDN 传递的请求头,例如统一修改为 X-Real-IP
其实说白了,归根到底,只要把不同站点的配置分开就好,全局默认的配置,然后每个站点都有自己专属的配置,同时设置的话,以站点的配置为主,这样就可以解决好多问题
哈哈 我也提了个类似的,增加一个备用源站获取方式
建议支持设置多个,因为不同的cdn,回源ip头大相径庭,有时候我们不能只用一家cdn。
- https://github.com/chaitin/SafeLine/issues/301
5.4 版本支持了从 XFF 中解析源 IP,解析原理是 “设置可信的代理数量”,可以尝试一下是否能直接解决这个问题。
同样需要,因为部分网站使用的cdn厂商不一样,很难进行统一,比如说百度智能云的cdn和cloudflare的header头就不同,cf可以通过xff的上一层获得,但是百度智能云就需要上上层获得真实ip,如果每个域名支持单独配置的话感觉就灵活多了
问题建议反馈请移步 https://rivers.chaitin.cn/discussion