Описана настройка следующей схемы защиты web-сервера:
access.log
, куда Nginx пишет о запросах;Имеется скрипт mitigator.py
(скачать)
для управления MITIGATOR, в частности, для временной блокировки IP-адреса
через MITIGATOR API. При необходимости скрипт можно доработать самостоятельно
для совершения любых других действий на MITIGATOR. Скрипт использует только
стандартные модули, работает с Python 2.7+ и Python 3.
Для запуска скрипта нужна учетная запись MITIGATOR и ID политики защиты
(например, 42
в URL .../policies/42
при заходе на MITIGATOR).
Также скрипт принимает IP и время блокировки в секундах.
Описание всех параметров печатается с ключом --help
(-h
).
Утилита log2ban анализирует логи и при обнаружении привышения
за отведенное лимита запросов время выполняет действия по блокировке.
По ссылке приведена инструкция по установке в разделе «Install scripts»
и команда запуска log2ban. Вместо встроенного ipset-control.sh
при интеграции нужно пользоваться API или интерфейсом MITIGATOR.
Разместим скрипт блокировки:
install mitigator.py /usr/local/bin
Настройки log2ban указываются в log2ban.py
:
Команда, которая будет выполняться для блокировки IP:
BAN_IP_COMMAND = "mitigator.py --server <server> --user <user> --password <password> --no-verify --policy <policy> tbl block --ip \"%s\" --time <bantime>"
Метки <server>
, <user>
, <password>
, <policy>
и <bantime>
нужно заменить на реальные значения; \"%s\"
оставить как есть —
ip-адрес будет передан log2ban при выполненнии.
Ключ --no-verify
нужен, если MITIGATOR работает с самоподписанным
сертификатом, и необходимо отключить его проверку.
Настройка подключения к базе данных MONGODB_HOST
. Если база
заблокированных IP не нужна, указывается MONGODB_HOST = None
.
Команда для чтения лога ECHO_LOG_COMMAND
, формат лога (см. документацию).
Трафик должен идти через MITIGATOR, должна быть включена общая защита и защита выбранной политики.
Имитировать атаку можно утилитой httperf
:
httperf --server 192.0.2.20 --num-conn 100
При успешной настройке через несколько секунд после запуска httperf
на сервере можно видеть, что log2ban отработал и вызвал исполнение
скрипта блокировки
На MITIGATOR можно в карточке TBL политики проверить, что IP атакующего (192.0.2.20 в примере) находится в списке временно заблокированных.