Giter Club home page Giter Club logo

ddos-guard's Introduction

#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, который парсит строку из файла логов
        ]
    ]
];

ddos-guard's People

Contributors

viktorsh avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.