php - 如何防止web socket DDOS攻击?

标签 php nginx ratchet socketrocket

我刚刚从我的电脑上执行了一个基本的 DDOS:

websocket-bench -a 2500 -c 200 wss://s.example.com

令我失望的是,我的服务器崩溃了! WS 通过连接到我的 nginx 代理来工作:
    location / {
            proxy_pass http://sock;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header        X-Real-IP               $remote_addr;
            proxy_read_timeout 60;
    }

    upstream sock {
            server 127.0.0.1:1203 fail_timeout=1s;
    }

和本地服务器上的端口 1203ratchet . Ratchet 的设置是我允许任何连接和第一个 onMessage执行身份验证,如果无效则关闭连接。

我还尝试通过在第一个连接上传递 header 来进行身份验证,如果无效,套接字将关闭,但这根本没有帮助,nginx 仍然达到 100% 资源,然后崩溃。

我应该分析什么来防止这些崩溃?

当将上游更改为另一个关闭的端口(即禁用它)时,服务器仍然崩溃。

最佳答案

要么更改您的身份验证逻辑以便 Nginx 处理它,要么实现 request and connection limits在 Nginx 中控制有多少连接被接受并传递给上游服务器

关于php - 如何防止web socket DDOS攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51559838/

相关文章:

php - 重定向 htaccess 或 php?

php - 使用 Pushwoosh 和 Php 向特定设备发送通知

express - Nginx 和 Express 为静态文件和节点应用程序提供服务

php - 将 websocket 与 PHP 和 MySQL 脚本一起使用的最佳方法是什么?

javascript - 手动触发Web套接字onmessage事件

php - 数值不是数字?

php - 无法使用在 AWS EC2 实例上运行的 laravel 5.2 从数据库中提取数据

spring - 反向代理后面的 Thymeleaf 模板(在 Spring 引导应用程序中)未正确形成 url

ssl - nginx 响应所有域

php - Symfony Doctrine EntityManager 没有正确刷新