2015-01-08 3 views
1

Я задавался вопрос, если хранить IP-адрес пользователя в рукопожатие с WebSocket будет хорошим способом защитить свой Java EE сервер Agains DDOS:защиты Agains DOS WebSocket с IP-адресом

когда сервер Присылать ненормальное количество подключений, он переключается в «безопасный» режим, где, если заданный запрос подключения предоставляет IP-адрес, который неизвестен серверу (сохранен в базе данных, подключение в первый раз), я могу просто отказаться от этого соединения.

может это помочь? (Моя главная задача - максимально защитить мой сервер веб-сайтов. Я изучил оригинал, но пока не добился успеха.)

Спасибо за помощь!

+2

Защита на этом уровне, вероятно, слишком поздно, и использование простых IP-адресов может быть недостаточно. Большинство атак DOS - это распределенные атаки, в которых злоумышленник использует зараженные системы для запуска атаки с разных IP-адресов. Решение поставщика облачного смягчения, вероятно, является лучшим способом предотвращения DDOS-атак. (IMHO) –

ответ

1

Защита от DDoS должна быть на уровне сети (маршрутизация, балансировка, переключение и т. Д.). Сервер не может ничего сделать, если к нему поступает огромное количество запросов. Даже если сервер быстро отправляет их с ошибками, канал насыщен, а запросы с запросом не могут доходить до сервера, или они достигают очень плохой пропускной способности. Отложите в сторону, что DDoS можно сделать даже с ICMP-пакетами, которые даже не на уровне TCP/UDP, а только на уровне IP, поэтому сервер WebSocket не может этого сделать.

Защита от DoS связана с логикой больше, чем с инфраструктурой. По сути, вектор атаки, который позволяет повесить ваш сервер. Практическим примером может быть то, что при отправке искаженного запроса WebSocket поток, который отправляет сокеты на вашем сервере, умирает или застревает, не позволяя приложению принимать больше соединений. Чтобы защитить свой сервер от DoS, проверьте такие вещи.

+0

Я вижу, большое спасибо! Я вообще не думал о сетевом уровне – Leo

+1

Небольшое дополнение: атаки DoS могут происходить на разных уровнях. Для TCP см. Ответ. Но это также может произойти на уровне WebSocket: злонамеренный клиент может просто сделать рукопожатие открытия WebSocket очень медленно, обманывая байты над проводом. Например. вы можете захотеть, чтобы ваш сервер WebSocket обеспечивал максимальное время для завершения рукопожатия открытия WebSocket (а затем максимум для завершения любой проверки подлинности). – oberstet

+0

очень хорошая точка – vtortola