Защита от DDoS от залогиненых пользователей

Главные вкладки

Аватар пользователя Sorix Sorix 11 июня 2009 в 3:14

После тестирования своего сайта программкой AB я получил вполне ожидаемые результаты
Параметры теста: 50 одновременных запросов, всего 1000 запросов.
Страница была очень нагружена контентом и генерировала достаточное кол-во запросов к БД.

У залогиненного пользователя:

Requests per second:    6.02 [#/sec] (mean)
Time per request:       166.014 [ms] (mean, across all concurrent requests)
Transfer rate:          199.63 [Kbytes/sec] received

У анонима (работает кеширование):

Requests per second:    184.58 [#/sec] (mean)
Time per request:       5.418 [ms] (mean, across all concurrent requests)
Transfer rate:          6113.97 [Kbytes/sec] received

Результаты понятное дело очень сильно отличаются, из-за того что у залогиненого пользователя не работает кеширование.

Вопрос: возможно ли как-то лимитировать количество запросов от одного пользователя? Например, так сделано ВКонтакте — нельзя делать более 1 запроса в секунду от 1 пользователя. Друпалу это могло бы сильно помочь при защите от DDoS-атаки, если атакующий ограничен в количестве учетных записей.

Комментарии

Аватар пользователя Azerot Azerot 11 июня 2009 в 8:31

А модуль throttle не пробовали использовать, выключая всю тяжёлую функциональность при перенагрузке? Перенагрузка я так понимаю в этом же модуле и настраивается.

Аватар пользователя Sorix Sorix 11 июня 2009 в 13:10

Throttle, к сожалению, мало что дает, он лишь отключает модули при определенной посещаемости, отключать половину сайта -- совсем не вариант, да и не снимет это столько нагрузки.

Бонус производительности будет только при временном бане пользователя, который делает ненормальное количество запросов.

Аватар пользователя Azerot Azerot 11 июня 2009 в 13:38

При распределённом DDoS банить весь инет будете? Smile

Напишите модуль, который будет недопускать более 1 запроса в секунду от пользователя.
На мой взгляд не так уж сложно такой модуль написать.

Аватар пользователя Sorix Sorix 12 июня 2009 в 2:47

Банится не подсеть, а конкретный пользователь. Написать модуль — выход вполне очевидный и платный, просто хотелось бы знать может есть аналогичные модули уже.