Apache modsecurity: ограничить количество запросов на ресурс в секунду - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь настроить modsecurity для Apache, чтобы ограничить количество запросов к одному и тому же ресурсу за единицу времени: 10 обращений в секунду на ресурс, независимо от того, какой IP-адрес выполняет запрос. Желательно не блокировать дополнительные вызовы, а перенаправить на данную страницу.

Я включил модуль и поместил следующий код в httpd.conf:

<LocationMatch "(.*)\.dimg(.*)">
  SecDebugLogLevel 9
  SecAction phase:2,initcol:resource=%{REQUEST_URI},pass,nolog,id:132
  SecRule RESOURCE:COUNT "@gt 10" "phase:2,pause:300,deny,status:503,setenv:RATELIMITED,skip:1,nolog,id:102"
  SecAction "phase:2,setvar:resource.count=+1,pass,nolog,id:103"
  SecAction "phase:5,deprecatevar:resource.count=10/1,pass,nolog,id:104"
  Header always set Retry-After "10" env=RATELIMITED
  ErrorDocument 503 "Service Unavailable"

Затем я запускаю стресс-тест для имитации высокой нагрузки. Но лишние запросы не блокируются. Из журналов: Записанная исходная переменная коллекции: resource.count = "0"

В результате SecRule RESOURCE: COUNT "@gt 10" возвращает false для любого запроса.

Что здесь не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...