Как предотвратить DDOS-атаки через веб-сокеты?

Я только что выполнил базовый 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 является трещотка. Настройка храповика заключается в том, что я разрешаю любое соединение и первый onMessage выполняет аутентификацию и, если она недействительна, соединение закрывается.

Я также пробовал аутентификацию, передавая заголовки при первом соединении, и если он неверен, сокет закрывается, но это не помогло вообще, и nginx все еще достигает 100% ресурсов, а затем падает.

Что я должен анализировать, чтобы предотвратить эти сбои?

При смене восходящего канала на другой закрытый порт (т. Е. Отключение его) сервер все равно дает сбой.

2

Решение

Либо измените логику аутентификации, чтобы Nginx ее обрабатывал, либо внедрите лимиты запроса и подключения в Nginx, чтобы контролировать, сколько соединений принято и передано на вышестоящий сервер

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]