防止 haproxy 中的 X-Forwarded-For 欺骗

防止 haproxy 中的 X-Forwarded-For 欺骗

昨天,我们遭受了一次 DDoS 攻击,攻击范围到达了我们的 Web 服务器后端(apache2)。前端由 haproxy 负载平衡连接到 Web 服务器组成。在 apache 的 access.log 上,我们看到来自两个 IP 的数千个请求,几个小时后我们意识到这些请求是假的/欺骗的,并不是真正的 IP。

为了澄清起见,我们对 IP 地址“137.137.136.136”执行了“curl GET /”,结果确实这就是我们在博客中看到的 IP 地址(假的)。

现在,在另一个使用 nginx 作为反向代理的集群中,更改/制作 X-Forwarded-For 标头不起作用。这意味着,即使您在特定标头中输入随机 IP,nginx 仍会将正确的 IP 传递给后端 Web 服务器?

这与 haproxy 有关吗?
有人可以确认精心设计的 X-Forwarded-For 标头可以通过 haproxy 吗?
为什么 nginx 中不会发生这种情况?
您如何防止这种情况发生?

答案1

在 haproxy 中,如果你没有什么可以阻止这种情况,那是正常的,我不知道在 nginx 中如何处理它,但我使用 haproxy 以这种方式解决了:

在默认选项中:

forwardfor

在我的 haproxy 前端定义中,我有:

reqidel ^X-Forwarded-For:.*

X-Forwarded-For如果客户端尝试伪造,则在 http 请求中删除该请求,并且 haproxy 在 http 响应中返回具有真实 ip 地址的真实标头

如果你想用它X-Forwarded-For来检查 http 客户端的 IP 地址,你需要删除它(如果存在于 http 请求中),因为使用 http 代理的客户端有时会在X-Forwarded-For

相关内容