защита от DoS-атак с помощю модуля http_limit_req

Gena Makhomed gmm на csdoc.com
Вс Янв 24 06:25:17 MSK 2010


Здравствуйте, All!

небольшую DoS-атаку на сервер, порядка 5-10 запросов в секунду
ограничил таким простым способом:

http {
     limit_req_zone $binary_remote_addr zone=backend:10m rate=1r/s;
     limit_req_log_level notice;
server {
     server_name virtual.server.under.the.impact.of.dos;
     location / {
         limit_req zone=backend burst=64 nodelay;
         proxy_pass http://127.0.0.1/;
     }
}

теперь вместо 5-10 запросов в секунду с одного IP
на backend уходит не более одного запроса в секунду.

вопрос: каким способом лучше всего будет ограничить
оставшийся раз в секунду запрос от бота к backend`у ?

очевидный метод - включить и настроить кеширование http,
- снимется нагрузка с backend`а, но останется паразитный
исх.трафик, который тратить тратить канал и ресурсы сервера.

блокировать этот конкретный ip в firewall`е -
нет смысла, бот приходит с укртелекомовского
ADSL пула, и может легко сменить свой IP.

PS в документации на сайте есть небольшая неточность,
директивы limit_req_log_level и limit_conn_log_level
есть не только в 0.8.18+ но и в 0.7.63+ с 26.10.2009

-- 
Best regards,
  Gena




Подробная информация о списке рассылки nginx-ru