<module-BanIP>

Данный модуль предназначен для отслеживания частоты событий, таких как неудачные попытки аутентификации, и для автоматической блокировки IP-адресов связанных с этими событиями.

<module-BanIP>
  <log-level>N</log-level>
  <pool include-trusted="Yes|No">
    <name>string</name>
    <filter>
      <addr>...</addr>
      ...
    </filter>
    <trigger-limit>N</trigger-limit>
    <time-window>time</time-window>
    <events-max>N</events-max>
    <ban-limit>N</ban-limit>
    <ban-time1>timeout</ban-time1>
    <ban-repeat-time>timeout</ban-repeat-time>
    <ban-time2>timeout</ban-time2>
  </pool>
  ...
  <on-ban>command</on-ban>
</module-BanIP>
pool

Пул привязывается к различным модулям и выполняет две функции: отслеживает события, такие как неудачные попытки аутентификации, и блокирует подключения с IP-адресов для которых частота событий превысила установленный максимум. Необязательный атрибут include-trusted указывает, должны ли контролироваться данным пулом доверенные адреса (по-умолчанию: no). Все дочерние узлы кроме name необязательны и имеют значения по-умолчанию. Максимальное количество пулов - 8.

pool/name

Имя пула. Этот узел является обязательным и используется для привязки к модулям сервера. В конфигурациях соответствующих модулей имя пула указывается в узлах banip-pool.

pool/filter

Необязательный узел ACL позволяющий указывать какие адреса IP клиентов будут контролироваться данным пулом. Адреса соответствующие узлу addr с атрибутом type имеющим значение deny будут игнорироваться. Если список не указан, либо адрес не соответствует ни одному узлу addr, он будет контролироваться.

pool/trigger-limit

Максимальное количество адресов частота событий для которых отслеживается одновременно. По-умолчанию: 5000.

pool/time-window

Период времени за который должно произойти более events-max событий для помещения адреса в список заблокированных. По-умолчанию: 3 min.

pool/events-max

Максимально допустимое количество событий за период времени указанный в time-window. При превышении данного порога адрес будет добавлен в список заблокированных. По-умолчанию: 3.

pool/ban-limit

Максимальное количество записей в списке заблокированных адресов. По-умолчанию: 100000.

pool/ban-time1

Интервал времени на который адрес блокируется в первый раз. Значение 0 означает постоянную блокировку. По-умолчанию: 10 min.

pool/ban-repeat-time

Интервал времени во время которого пул будет продолжать хранить адрес после окончания временной блокировки но не будет его блокировать. Если за данный период адрес снова будет заблокирован (т.е. частота событий превысит порог установленный events-max за время time-window), для продолжительности блокировки будет использовано значение ban-time2. По-умолчанию: 1 hour.

pool/ban-time2

Интервал времени на который блокируется адрес во второй и последующие разы. Значение 0 означает постоянную блокировку. По-умолчанию: 1 day.

on-ban

Если задано - команда (внешняя программа) которая будет выполняться при каждом создании и удалении блокировки. Указанная строка будет дополнена следующими аргументами:

  1. Имя пула в кавычках, как в узлах pool/name.

  2. Адрес IP который помещается в список или удаляется из списка заблокированных.

  3. Код операции: 0 - разблокирован администратором, 1 - заблокирован администратором, 4 - время действия временной блокировки закончилось, 5 - заблокирован автоматически, 7 - заблокирован автоматически повторно.

  4. Этот аргумент указывается только если 3й аргумент равен 5 или 7 и только если блокировка временная. Аргумент указывает время окончания действия блокировки в формате: "ГГГГ-ММ-ДД ЧЧ:ММ:СС".

В директории examples находится скрипт REXX banip.cmd предназначенный для вызова из модуля BanIP на платформе OS/2. Скрипт добавляет и удаляет правила системного брандмауэра для заблокированных/разблокированных адресов, что позволяет снизить нагрузку на сервер.