如何通过Application Load Balancer转发真实IP的请求?

问题描述 投票:0回答:1

我有一台 EC2 机器在 AWS Application Load Balancer 后面运行。我已经设置了 mod_evasive (用于 DDOS 防护)。

问题是,每当客户端向负载均衡器请求时,它都会转发自己的 IP,而不是客户端的实际 IP。我还实现了 X-Forward-Header 来获取客户端请求的真实 IP,并成功阻止了该 IP。主要问题在于,当客户端再次向负载均衡器发出请求时,由于负载均衡器的 IP 地址,该请求会再次到达 EC2。我无法阻止负载均衡器 IP。

有什么解决办法吗?有什么建议吗?

amazon-web-services proxy aws-application-load-balancer ddos mod-evasive
1个回答
0
投票

使用 AWS Application Load Balancer (ALB) 时,实际的客户端 IP 地址通常会在 X-Forwarded-For 标头中传递到您的 EC2 实例。看来您已经将系统配置为使用此标头来获取真实的客户端 IP。

现在,如果您使用 mod_evasive 进行 DDoS 防护,并且基于 X-Forwarded-For 标头阻止 IP,则可能会遇到 ALB 的 IP 被阻止且来自客户端的后续请求无法通过的问题再次通过ALB,触发保护机制。

一种可能的解决方案是修改 mod_evasive 配置以排除 ALB 的 IP 地址被阻止。这样,只有实际的客户端 IP 才会受到 DDoS 保护规则的约束。以下是如何执行此操作的总体概述:

确定您的 AWS ALB 使用的 IP 地址范围。您可以在 AWS 控制台或 AWS CLI 中找到此信息。

更新您的 mod_evasive 配置以排除此 IP 范围。配置可能看起来像这样:

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify [email protected]
DOSWhitelist 127.0.0.1
DOSWhitelist ALB-IP-Range

将 ALB-IP-Range 替换为 ALB 使用的实际 IP 范围。

重新启动或重新加载 Apache 以应用更改。

这样,ALB的IP就不会触发DDoS防护,只有来自实际客户端的请求才会受到保护。

© www.soinside.com 2019 - 2024. All rights reserved.