Использование fail2ban в Linux

Fail2ban — это программное обеспечение, которое защищает сервер Linux от атак

    fail2ban

    /etc/fail2ban/fail2ban.conf - основной конфигурационный файл
    Менять его не рекомендуется и для настройки лучше использовать файлы из каталога /etc/fail2ban/jail.d

    #Установка apk add fail2ban #Автозапуск rc-update add fail2ban #Запуск /etc/init.d/fail2ban start #После изменений правил в конфигурации /etc/init.d/fail2ban restart
    Пример настройки по умолчанию

    Параметры берутся из настроек [DEFAULT]. Если их нужно переопределить, просто добавляем их при описании правила
    Далее пример настройки по умолчанию в файле /etc/fail2ban/jail.d/default.conf

    [DEFAULT] maxretry = 4 findtime = 480 bantime = 720 action = iptables ignoreip = 127.0.0.1/8

    maxretry — количество действий, которые разрешено совершить до бана
    findtime — время в секундах, в течение которого учитывается maxretry
    bantime — время, на которое будет блокироваться IP-адрес
    action — действия, которое будет выполняться, если Fail2ban обнаружит активность, соответствующую критериям поиска
    ignoreip — игнорировать защиту, если запросы приходят с перечисленных адресов
    В данном примере, если в течение 8 минут (480) будет найдено 5 строк (maxretry = 4), содержащих критерий фильтра, Fail2ban заблокирует IP-адрес, с которого идет подключение на 12 минут (720);
    В секции [DEFAULT] хранятся общие настройки для всех правил. Каждую из настроек можно переопределить при конфигурировании самого правила

    Настройка правила

    /etc/fail2ban/jail.d/service.conf

    [ssh] enabled = true port = ssh filter = sshd action = iptables[name=sshd, port=ssh, protocol=tcp] logpath = /var/log/auth.log maxretry = 10 findtime = 600

    ssh — название для правила;
    enabled позволяет быстро включать (true) или отключать (false) правило;
    port — порт целевого сервиса. Принимается буквенное или цифирное обозначение;
    filter — фильтр (критерий поиска), который будет использоваться для поиска подозрительных действий. По сути, это имя файла из каталога /etc/fail2ban/filter.d без .conf на конце;
    action — действие, совершаемое в случае срабатывания правила. В квадратных скобках указаны название для правила, сетевой порт и протокол для блокирования;
    logpath — расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев.
    В данной конфигурации переопределили параметры по умолчанию maxretry, findtime и action

    Исключения

    Для гарантии, что fail2ban не заблокирут компьютер администратора или другой важный узел, предусмотрена настройка исключений с помощью опции ignoreip. Опция может быть применена как на глобальном уровне (default), так и для конкретного правила
    Для того, чтобы задать общую настроку, откроем наш файл default:
    /etc/fail2ban/jail.d/default.conf

    #Добавим ip администратора в исключение ignoreip = 127.0.0.1/8 192.168.0.0/24 95.95.95.95

    Исключения для конкретного правила ( сервиса )

    [ssh] ... ignoreip = 192.168.1.22
    Действия

    Файлы с настройкой действий находятся в каталоге /etc/fail2ban/action.d. Чтобы блокировать адрес, Fail2ban создает правило в брандмауэре netfilter. Для этого, чаще всего, используются утилиты iptables или firewall-cmd
    iptables — создание простого правила в netfilter с помощью одноименной утилиты;
    iptables-multiport — использование модуля multiports, позволяющий добавлять диапазоны портов для блокировки;
    iptables-ipset — использование ipset для придания более лаконичного вида правилам;
    iptables-allports — блокирует для адреса все порты;


    Фильтры

    Фильтры, в основном, представляют набор регулярных выражений для поиска ключевых слов в log-файлах. Они находятся в каталоге /etc/fail2ban/filter.d.
    Для создания и настройки своих фильтров, можно использовать имеющиеся файлы в качестве шпаргалки.

    Заблокированные адреса

    #Получить список правил sudo fail2ban-client status #Заблокировать ip вручную fail2ban-client set jail_name banip xx.xx.xx.xx #Например fail2ban-client set sshd banip 223.178.96.155 #Статистика заблокированных адресов для конкретного правила fail2ban-client status <имя правила> #Чтобы получить весь список заблокированных адресов fail2ban-client banned #Список заблокированных адресов через iptables iptables -L -n --line #Удаление адреса из списка fail2ban-client set <имя правила> unbanip #Удаление адреса из списка через iptables iptables -D <цепочка правил> -s IP-адрес
    Примеры фильтров и правил

    ssh

    failregex = Failed [-/\w]+ for .* from port \d* ssh2 sshd\[.*\]: Invalid user .* from port \d* sshd\[.*\]: banner exchange: Connection from port \d* sshd\[.*\]: ssh_dispatch_run_fatal: Connection from port \d* sshd\[.*\]: Failed password for invalid user .* port \d* sshd\[.*\]: Connection closed by port \d* sshd\[.*\]: Connection reset by port \d* sshd\[.*\]: Received disconnect from port \d*:[0-9]+: \[preauth\] sshd\[.*\]: Disconnected from invalid user .* port \d* \[preauth\] #Правило [sshd] enabled = true filter = alpine-sshd port = ssh logpath = /var/log/messages maxretry = 5 bantime = 1w findtime = 1w ignoreip = 127.0.0.1/8 184.217.198.21 196.91.20.167 80.87.198.14 [sshd-ddos] enabled = true filter = alpine-sshd-ddos port = ssh logpath = /var/log/messages maxretry = 5 bantime = 1w findtime = 1w ignoreip = 127.0.0.1/8 184.217.198.21 196.91.20.167 80.87.198.14 [recidive] enabled = true ignoreip = 127.0.0.1/8 184.217.198.21 196.91.20.167 80.87.198.14
    Источники
    Последнее изменение: 07.10.2024 18:37


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ