2012-06-21 3 views
4

Я разрабатываю модуль атаки на уровне прикладного уровня для NGINX, и мне приходится подсчитывать запрос в секунду (каждую секунду). Идея состоит в том, чтобы сделать автоматический детектор атак, который включает фильтрацию при увеличении скорости запроса.Запросы количества запросов NGINX в секунду

В это время это происходит с помощью скрипта оболочки, который читает журнал доступа каждую секунду и вычисляет скорость запроса. Проблема в том, что это не очень эффективно.

Если у вас есть идея о том, как я могу достичь этого, делитесь своими мыслями.

Спасибо!

ответ

1

Вы можете использовать HttpLimitReqModule:

http { 
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 

... 

server { 

    ... 

    location /search/ { 
     limit_req zone=one burst=5; 
    } 

ссылка: http://wiki.nginx.org/HttpLimitReqModule

+0

Привет! Спасибо за ответ, но я не думаю, что это очень помогло бы мне. Этот модуль ограничивает запросы на пользователя ... и я не хочу этого. Мне нужно подсчитывать запросы в секунду, и я хочу добавить это в свой модуль (nginx должен быть как можно более легким) (может быть какая-то увеличиваемая переменная, которая сбрасывается каждую секунду), но каков метод, чтобы поймать эти запросы так Я могу увеличить эту переменную? Спасибо. – jimbo

+0

Я бы пошел с предложением выше. Вы хотите удалить весь трафик, который исходит от определенных IP-адресов, а не блокировать ваш сервис! Второй подход заключается в использовании fail2ban, как в этом решении https://rtcamp.com/tutorials/nginx/fail2ban/ –

-1

Использование tail -f -s на access_log. Это довольно эффективно.

Смежные вопросы