Skip to content

ksenobit16bit/ipban.sh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Скрипт предназначен для организации блокировки от перебора из access.log'ов nginx при помощи iptables, без изменения самих настроек nginx и iptables.

Принцип работы:

  1. Лог парсится по дате и времени и выбираются записи за определённое время в минутах указанное при запуске скрипта.
  2. Из лога выбираются только ip, сортируются, считаются и самое большое количество запросов с одного IP записывается в файл /etc/ipban.sh/reqests-count.txt в формате " "
  3. Из этого файла забирается количество и проверяется превышает ли оно порог
  4. Если превышает и IP не забанен ранее - IP Блокируется через iptables, если нет - проверяется нужно ли разбанить кого-то из ранее заблокированных
  5. Заблокированный IP вместе с датой и параметрами отбора заносится в файл лога, /etc/ipban.sh/state.log

Установка и использование скрипта:

  1. Склонить репозиторий или просто скопировать скрипт
  2. Создать директорию /etc/ipban.sh
  3. Создать в ней файл /etc/ipban.sh/ignore_ip.list и внести в него IP которые никак нельзя банить
  4. Добавить в crontab запись вида /path/to/script , например /etc/ipban.sh/ipban.sh 60 120 , что значит блокировать IP у которых за 60 минут больше чем 120 запросов
  5. Есть возможность запуска в dry_run режиме. Для этого нужно добавить третьим аргументом 1, например /etc/ipban.sh/ipban.sh 60 120 1
  6. Добавить в /etc/logrotate.d/ файл logrotate_ipban переименовав его в любое другое произвольное имя

To do:

  1. Возможность фильтрации по UserAgent
  2. Возможность изменять уровень логгирования - debug - info

About

Блокировка IP по количеству запросов из логов Nginx

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages