#ddos-guard - Консольная приложение написанное на php. Для автоматической блокировки ip адресов, с которых идет много запросов.
##Описание Скрипт для выявления и блокировки ip адресов с которых идет слишком много запросов. Проверка идет по логам веб-сервера apache, nginx, и т.д.
- Для хранения статуса работы скриптв используются файлы, БД не требуется.
- Логи парсятся с помощью файлов-обработчиков. в комплекте идет обработчик для логов apache стандартного формата, также можно писать свои обработчики находятся в каталоге handlers
- Блокировка ip осуществляется в файрволе iptables, и применима только для операционных систем где есть этот сервис.
- Возможносьть задать произвольное количество обрабатываемых файлов, и для каждого задать свои лимиты запросов в еденицу времени.
- В ходе выполнения скрипта формируется файл лога, путь до которого задается в конфиге
##Установка и настройка
- Клонируем репозиторий или копируем исходники в папку откуда будет запускаться
- Дать права на выполнеия файла ddos-guard.php. скрипт должен выполнятся под sudo или пользователем который имеет доступ к логам веб серверов и iptables
- Находясь в каталоге со скриптом выполнить из консоли
#./ddos-guard.php status
status: finished...
date: 01.01.1970 07:00:00
- Настроить конфиг файл ddos-guard.conf.php. Установить logFilePath добавить нужные файлы-логов для анализа в массив logs.
##Выполнение Если параметр disabled в конфиге установлен в true. То блокировка в iptables осуществлятся не будет
- Запуск анализа логов
#./ddos-guard.php
- Поставить выполнение ./ddos-guard.php в крон
При выполнении скрипта осуществляется блокировка повторного запуска, поэтому повторный запуск не возможе В случае если произошол сбой при выполнеии, и выполнение осталось заблокировано, то разблакировать можно командой ./ddos-guard.php reset
##Конфиг Конфиг располагается в файле ddos-guard.conf.php. В массиве logs находятся фараметры разбора отдельного файла лога. В параметре iptables должен обязательно задан порт на котором работает веб-сервер. rowHandler - это имя файла обработчика сртроки одной строки лога веб сервера. Файлы обработчика располагаются в каталоге handlers. Стандартны обработчие row_handler_default, для конфига опатча в стандартном формате. На основе файла row_handler_default.php можно создовать свои обработчкики, со свойе логикой отбора строк.
Пример:
return [
'logFilePath' => '/var/log/ddos-guard.log', // *Файл лога работы скрипта
'estimate' => 500, // *время в секундах на которое блокируется ip адрес
'disabled' => true, // *Запрет блокировки ip адресов, только пищет в лог и в файл ddos-guard.status.dat
'logs' => [ // Масссив обработчиков логов
'site.ru' => [
'filePath' => '/var/log/httpd/access_log', // * Путь до файла логов для парсинга и анализа
'iptables'=> ['port'=>80], // Флаг использования файрвола iptables для блокировки ip по порту
'limit' => [[100, 180]], // * массив лимитов блокировок. первый количество запросов, второй в промежуток временив секундах
'rowHandler' => 'row_handler_default' // * имя файла в каталоге handlers, который парсит строку из файла логов
]
]
];