亚马逊 ELB 背后的 mod_rpaf

cee*_*yoz 3 amazon-elb mod-rpaf

我已经mod_rpaf安装好从X-Forwarded-ForPHP、Apache 日志等的标头中获取用户的 IP 地址。

不幸的是,看起来我必须通过设置明确设置哪些 IP 标头将受到尊重RPAFproxy_ips

鉴于 ELB 没有静态 IP,我怎么知道mod_rpaf接受来自任何 IP 甚至任何 10.* IP 的标头?

Ser*_*sov 5

你可以试试用mod_extract_forwarded代替mod_rpaf ——它支持MEFaccept all(如果你用的是RHEL/CentOS/other-clone,这个包已经在EPEL里了)。一个缺点mod_extract_forwardedX-Forwarded-ForForwarded-For标头名称是硬编码的,不能像mod_rpaf.

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


大约过一些这方面的更多的思考,我发现一个问题,这个mod_extract_forwarded配置-虽然mod_rpaf不支持多代理链,从只需在最后一个地址X-Forwarded-For头,mod_extract_forwarded企图以支持这一点,并使用其中不属于可信代理列表中的最后一个地址(这样如果请求通过了多个受信任的代理,将使用实际的客户端地址而不是倒数第二个代理地址)。不幸的是,使用MEFaccept all该手段mod_extract_forwarded将信任所有的代理,因此,如果ELB代理只是他们的数据附加到X-Forwarded-For头部,并没有完全取代它,客户可以通过发送自己的要求通过任何伪造IPX-Forwarded-For报头。

但是,我发现了另一个模块来解析X-Forwarded-For标头。最近(不稳定)的 Apache 版本有mod_remoteip模块,它显然支持代理地址的子网掩码。有一个到 Apache 2.2backport和一个Fedora规范文件;不幸的是,在 Fedora 中包含软件包请求被搁置了。