Лимиты – установка ограничений на трафик веб-приложения

По кнопке Лимиты на трафик защищаемого веб-приложения можно наложить несколько ограничений.

  1. Запросы, превысившие лимит запросов за секунду, будут блокироваться. (За эту настройку отвечает параметр Разрешенное число запросов в сек.)

  2. Запросы, превысившие лимит при разовом всплеске, будут сначала замедляться, а затем блокироваться. Либо такие запросы сразу будут блокироваться. (За эту настройку отвечают параметры Burst, Задержка).

При блокировке запроса выдается сообщение об ошибке. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.

Размеры лимитов подбираются эмпирическим путем. Для этого удобно настроить Лимиты, задать Пробный прогон, через некоторое время работы под нагрузкой (в это время лимиты будут фиксироваться в отчете, в таблице атак и на графиках, но запросы блокироваться не будут) сформировать отчет в разделе «Отчеты» и проверить по отчету превышение лимитов. При необходимости скорректировать Лимиты, еще раз проверить отчет. После подбора подходящих лимитов можно отключить Пробный прогон, тогда при превышении лимитов будет происходить замедление и блокировка запросов.

Предусмотрена возможность задать несколько наборов лимитов («лимитов»): по одному «лимиту» на каждое свойство запроса.

Ниже показано окно лимитов. Например, для сервера skrpv.com создан лимит [100] $remote_addr. Посмотреть и отредактировать лимит можно, кликнув по полю [100] $remote_addr. С помощью пиктограммы lk_black_del лимит удаляется.

../_images/user_guide_102cl.png

Поле Новый лимит позволит задать лимиты для оставшихся свойств запроса.

Также можно задать лимиты не только на веб-приложение в целом, но и на отдельные страницы веб-приложения, включающие вложенные подстраницы. При переходе на такую страницу лимиты считаются заново. Страницы веб-приложения задаются в настройках «Weblock.» (раздел Настройка конфигурационного файла веб-сервера).

На скриншоте выше показаны лимиты для веб-приложения в целом, например, Общие для skrpv.com. В левом столбце окна лимитов показаны поля меню: веб-приложение и его страницы – переходя по ним, справа открываются соответствующие лимиты.

Примечание

Общий лимит веб-приложения действует на все страницы, на которые не заданы специальные лимиты. Если лимит задан на страницу, то он действует и на все ее подстраницы.

Остановимся подробнее на создании нового лимита.

../_images/user_guide_104cl.png

Свойство запроса – объект применения лимитов, т.е. к каким группам запросов применяется лимитирование. Список значений:

  • $remote_addr – лимитирование по IP-адресам трафика защищаемого веб-приложения, когда заданные лимиты применяются по отношению к трафику с IP-адреса.

  • $binary_remote_addr – лимитирование по бинарному представлению IP-адресов трафика защищаемого веб-приложения; где заданные лимиты применяются по отношению к трафику с IP-адреса в бинарном представлении.

  • $server_name – лимитирование по трафику защищаемого веб-приложения в целом; когда заданные лимиты применяются ко всему потоку запросов, независимо от источника трафика.

Разрешенное число запросов в сек – ограничение на количество запросов в секунду. Целое число >=1. Как только количество запросов превысит данный лимит, запросы, поступившие в течение данной секунды, блокируются и клиенту выдается ошибка, заданная в поле Код ошибки. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.

Burst – разрешённый разовый всплеск запросов. Целое число >=0 и меньше параметра Разрешенное число запросов в сек. Как только количество запросов превысит данный лимит, запросы, поступившие в течение данных n миллисекунд, блокируются и клиенту выдается ошибка с параметром Код ошибки. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.

Задержка – порог замедления трафика при разовом всплеске запросов, т.е. запросы сверх данного лимита будут замедляться. При включенной опции задается целое число >=0 и меньше параметра Burst.

Если опция отключена (что соответствует значению «-1»), все запросы сверх лимита (заданного параметром Разрешенное число запросов в сек) сразу блокируются и клиенту выдается ошибка с параметром Код ошибки, а параметр Burst игнорируется. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.

Если опция включена и Задержка = 0, тогда все запросы замедляются, параметр Burst игнорируется.

Если опция включена и Задержка > 0, тогда, как только количество запросов превысит данный лимит, запросы этого всплеска будут замедляться. При этом, как только количество запросов превысит параметр Burst, запросы сразу блокируются и клиенту выдается ошибка с параметром Код ошибки. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.

Код ошибки – код ошибки, которая будет выдаваться клиенту при блокировании подозрительного трафика (когда количество запросов превышает один из выше заданных лимитов). По умолчанию – 503.

Пробный прогон – два режима применения лимитов:

  • да – лимиты только считаются, но не применяются (тестовой режим для проверки корректности установленных лимитов),

  • нет – лимиты применяются (основной режим, ограничивающий подозрительный трафик).

Пример 1. Задание лимитов.

Свойство запроса = $remote_addr

Разрешенное число запросов в сек = 5

Burst = 3

Задержка = 2

Код ошибки = 503

Пробный прогон = нет

Конец примера.

Пример 2. Принцип локализации лимитов. Лимиты могут быть заданы на веб-приложение в целом example.com и на отдельные его страницы example.com/list.

а) Если задан лимит Лимит_1 только на веб-приложение example.com (на страницы example.com/list лимит не задан) –

тогда Лимит_1 применяется к любой странице веб-приложения example.com, в том числе к страницам example.com/list.

б) Если заданы разные лимиты:

  • Лимит_1 на веб-приложение example.com,

  • Лимит_2 на страницы example.com/list

тогда для страниц example.com/list применяется Лимит_2, а для остальных страниц веб-приложения – Лимит_1.

в) Если задан лимит Лимит_2 только на страницы example.com/list (на веб-приложение example.com лимит не задан) –

тогда для страниц example.com/list применяется Лимит_2, а для остальных страниц веб-приложения лимиты не применяются.

Конец примера.

../_images/Weblock_Logos_small.png