首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >亚马逊ELB背后的mod_rpaf

亚马逊ELB背后的mod_rpaf
EN

Server Fault用户
提问于 2011-11-10 20:08:05
回答 3查看 3.5K关注 0票数 3

我安装了mod_rpaf,以便从PHP日志中的X-Forwarded-For头获取用户的IP地址。

不幸的是,看起来我必须通过RPAFproxy_ips设置显式地设置该头将被尊重的it。

考虑到ELB没有静态IP,我如何告诉mod_rpaf接受来自任何IP,甚至任何10.* IP的报头?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2011-11-16 05:55:21

您可以尝试使用mod_extract_forwarded而不是mod_rpaf-它支持MEFaccept all (如果使用RHEL/CentOS/其他克隆,则包已经在EPEL中)。mod_extract_forwarded的一个缺点是,X-Forwarded-ForForwarded-For头名称是硬编码的,不能像mod_rpaf那样配置。

即使在mod_extract_forwarded中也不支持IP范围,但是您可以配置防火墙,只允许从某些IP范围直接访问Apache,或者检查mod_rewrite规则中的MEF_RPROXY_ADDR环境变量。

经过更多的思考之后,我发现了这个mod_extract_forwarded配置的问题--虽然mod_rpaf不支持多个代理链,只从X-Forwarded-For头获取最后一个地址,但mod_extract_forwarded试图支持这个地址,并使用不属于受信任代理列表的最后一个地址(这样,如果请求已经通过多个可信代理传递,那么实际的客户端地址将被使用而不是第二个到最后一个代理地址)。不幸的是,使用MEFaccept all意味着mod_extract_forwarded将信任所有代理,因此,如果ELB代理只是将它们的数据附加到X-Forwarded-For头中,而不是完全替换它,客户端可以通过发送带有自己的X-Forwarded-For头的请求来传递任何伪造的IP。

但是,我找到了另一个解析X-Forwarded-For头的模块。最近(不稳定的) Apache版本有国防部_遥控器模块,它显然支持代理地址的子网掩码。有一个到Apache2.2的后端和一个软膜规范文件;不幸的是,请求在Fedora中包含包被停止了。

票数 5
EN

Server Fault用户

发布于 2011-11-16 03:57:30

从对源代码的快速阅读来看,你似乎无法做到。您可以很容易地破解代码,只接受任何源(通过对第163行看起来像is_in_array(r->connection->remote_ip, cfg->proxy_ips) == 1的检查进行中性处理,但这似乎是一种安全风险)。

有什么方法可以问亚马逊,你在运行时落后的负载平衡器是什么?如果是这样你可以动态生成配置..。

票数 1
EN

Server Fault用户

发布于 2011-12-15 16:15:41

我刚刚发现CloudFlare已经为这类事情创建了自己的Apache模块,并且它确实支持范围的CIDR表示法。

IP地址在源代码中是硬编码的,但是由于它们提供了源代码,所以很容易在其中添加您自己的范围。

源代码中的注释表明它是从国防部_remoteip.c派生而来的,它在Apache 2.3中是可用的(或2.5取决于您是否查看了该页面的URL或标题)。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/329893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档