【问题标题】:Communication between two servers for a ddos challenge page?ddos挑战页面的两台服务器之间的通信?
【发布时间】:2019-10-22 06:33:36
【问题描述】:

我需要开发一个与 Cloudflare 防火墙挑战非常相似的挑战页面。

我知道如何制作挑战应用程序的前端和后端,并且我知道如何在服务器上进行设置。

问题在于如何在一个服务器上的网站上实现它,而挑战应用程序在另一台服务器上。我应该如何在服务器之间进行通信?两台服务器都是 Ubuntu 16.4。提前谢谢大家。

【问题讨论】:

  • 你在说什么交流?
  • @Shadow 我想“倾听”访问该网站的用户,如果他们与该网站建立了多个连接,则将他们重定向到挑战页面,如果他们在那里解决了验证码,他们应该被重定向回到网站,再也不会被打扰,如果没有,他们应该总是被重定向到挑战服务器,所以他们不会占用网站服务器的资源。我说的是每天有 2000 万个连接。其中只有百分之几是真正的访客。

标签: php laravel-5 ubuntu-16.04


【解决方案1】:

我认为像cloudflare一样使用nginx服务器解决这个问题会更好。

  • 制作具有速率限制的 nginx 反向代理
  • 如果限制命中用户将被重定向到错误页面
  • 将您的挑战应用与错误页面集成。

更多关于此配置的信息在这里: https://serverfault.com/questions/645154/how-to-redirect-to-an-other-link-when-excess-request-limit-req-with-nginx

如何在错误页面中使用 PHP 在这里: Nginx, PHP + FPM Custom Error Pages 您可以在第三个服务器上运行此反向代理,也可以在挑战应用服务器上运行它。

使您的域指向反向代理 然后 配置 nginx

 server {

        listen   80 default_server;
        server_name *.*;
        client_body_timeout 5s;
        client_header_timeout 5s;
        location / {
            proxy_set_header Host $host;
            proxy_pass http://00.00.00.00/; #replace with upstream ip
        }

}

你必须将它与自定义 php 错误页面结合起来

【讨论】:

  • 谢谢你的回答,但是如何让用户通过反向代理服务器,而不是在访问域名时到达网站服务器?
  • 非常感谢您的宝贵时间!!最后一个问题。我正在考虑存储每个唯一的 IP 并检查用户是否解决了验证码一次,如果是,他将永远不会再遇到挑战。如果 IP 达到限制或访问与主页不同的 URL,我还想显示错误页面。使用这种方法(反向代理),我可以做到这一点,对吧?
  • 是的,你可以。您可以选择合适的技术,例如 cookie 或基于标头的绕过
  • 好的,我会全力以赴,完成后会更新。感谢您的帮助!