Сервер nodejs против атак DOS

Я в процессе написания очень масштабируемого браузера на основе веб-чата с помощью nodejs. Эта концепция проста: сначала она проверяет браузер на поддержку websocket. Если он не одобрен или иным образом несовместим с спецификациями сервера, он просто грациозно снижается до традиционного длительного опроса.

Воспользовавшись своей высокоприбыльной моделью ввода/вывода, я не смог найти какую-либо другую инфраструктуру, которая до сих пор настолько хороша и удобна, как nodejs для такого рода работы. Однако у меня есть проблема, связанная с атаками DOS, для которых я решил придумать простое решение. Однако я не уверен, что это будет самый лучший способ борьбы с этими массовыми атаками наводнений.

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

С этим все будет в порядке?

Ответ 1

Это не относится к DDOS-атаке - распределенному отказу в обслуживании - там, где используется много IP-адресов, и когда вам нужно продолжать обслуживать некоторые машины, находящиеся внутри одного брандмауэра, как машины, участвующие в атаке.

Часто машины, используемые в DDOS, являются зомби-машинами, которые были захвачены. Когда DDOS против большой цели запускается, дросселирование по IP может запретить все машины из одной и той же локальной сети с огнем. Это может привести к действительно плохому PR для крупных компаний, когда машины, например, в New York Times, заражены и используются в DDOS, а журналисты "Таймс" проверяют, закрыт ли сайт компании и заблокированы, что приводит к тому, что они сообщают, что атака была намного успешнее, чем на самом деле.

Чтобы продолжить предоставление услуг перед DDOS, вам действительно нужно блокировать запросы на основе общих элементов самого запроса, а не только IP. security.se может стать лучшим форумом для конкретных советов о том, как это сделать.