如何防止Web套接字DDOS攻击?

时间:2018-07-27 14:14:42

标签: 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;
    }

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

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

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

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

1 个答案:

答案 0 :(得分:0)

要么更改身份验证逻辑以便Nginx对其进行处理,要么在Nginx中实现request and connection limits,以控制接受并传递给上游服务器的连接数量