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

gio*_*nda 2 nginx haproxy x-forwarded-for

昨天,我们受到了到达我们的网络服务器后端 (apache2) 的 DDoS 攻击。前端由到网络服务器的 haproxy 负载平衡连接组成。在 apache 的 access.log 上,我们看到来自两个 ip 的数千个请求,几个小时后我们意识到那些是假的/欺骗的,而不是实际的 ip。

为澄清起见,我们使用“137.137.136.136”的 ip 进行了“curl GET /”,实际上这就是我们在博客中看到的 ip(假的)

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

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

c4f*_*t0r 9

在haproxy中,如果你没有什么可以阻止这个,那是正常的,我不知道在nginx中如何处理,但我使用haproxy是这样解决的:

在默认选项中:

forwardfor
Run Code Online (Sandbox Code Playgroud)

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

reqidel ^X-Forwarded-For:.*
Run Code Online (Sandbox Code Playgroud)

X-Forwarded-For如果客户端尝试伪造,那么在 http 请求中删除,haproxy 会在 http 响应中使用真实的 ip 地址返回真实的标头

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