Настройка fail2ban в связке с pf

Fail2ban – это простенький сервис который поможет отслеживать и блокировать атаки анализируя лог файлы службы. При обнаружении атаки fail2ban может занести ip источника в таблица фаервола, уведомить по электронный почте итд. Сервис очень гибок в настройке, написан на python

Будем защищать ssh сервис в связке с pf.

Обновляем порты

    portsnap fetch update

Устанавливаем

    cd /usr/ports/security/py-fail2ban
make install clean

После установки переходим в каталог /usr/local/etc/fail2ban и преступаем к конфигурированию.
В папке находятся 2 подпапки.

action.d – Хранятся конфиг файлы, в которых описываются команды при срабатывании правил.
filter.d – Хранятся так называемые шаблоны,  в которых описываются с помощью регулярных выражений, на что же будет срабатывать fail2ban.

Нам же нужен файл jail.conf и редактируем.
Для начала пробежимся по глобальной секции.

  [DEFAULT]   ignoreip = 127.0.0.1 #Fil2ban будет игнорировать указанные адреса, подсети, имена.
Можно указать список через пробел.
   bantime = 7200 #Тут я думаю понятно. Время в секундах на протяжении которого хост
                            будет блокирован.
   maxretry = 5 #Кол-во попыток, после которого хост будет блокирован.

 

Далее добавляем секцию [ssh-pf]
  [ssh-pf]
enabled = true
filter = sshd
    action = pf[table=ssh-brut] # Указываем профиль pf и передаем переменную table в
которой указываем название таблицы
sendmail[name=SSH on Gateway,dest=root@mydomain.com,sender
     =fail2ban@mydomain.com]
                      #Отсылать на мыло предуприждение о срабатывании.
    logpath = /var/log/auth.log #Путь до лог файла
    ignoreip = 192.168.1.0/24 #На всякий случай, а то мало ли.

Далее создаем профиль для управления pf.

  vi action.d/pf.conf

  [Definition]
       actionban = /sbin/pfctl -t <table> -T add  <ip>
actionunban = /sbin/pfctl -t <table> -T delete <ip>

 

Правим файл правил pf и добавляем блокировку по по ssh порту всех кто в таблице ssh-brut

   block in log quick on $EXT_IF proto tcp from <shh-brut> to $EXT_IF port ssh

Добавляем в rc.conf

    echo ‘fail2ban_enable=”YES”‘ >> /etc/rc.conf

И запускаем

  /usr/local/etc/rc.d/fail2ban start 

Собственно все. Ждем мыло когда кто нибудь попадется.
Fail2ban очень гибок. в jail.conf есть примеры конфигурация для различных сервисов.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!