Настройка fail2ban ubuntu 20

Обновлено: 06.07.2024

Iptables – это утилита для настройки правил системного Firewall.

Fail2ban – это утилита для предотвращения атак, методом подбора паролей.

Отключение утилиты UFW в Debian 10

  • В Ubuntu server 20.04, для настройки системного брандмауэра предустановлена утилита UFW. Если она работает, то нужно её отключить.
  • Для этого, нужно выполнить соответствующую команду:
  • После отключения UFW, нужно произвести очистку деятельности этой утилиты.
  • Для этих целей, можно использовать уже установленную утилиту Iptables.
  • Если она у Вас не установлена, то производим установку.
  • Нам потребуется две команды Iptables.
  • Первой командой, мы сохраним имеющиеся на данный момент правила, в отдельный файл:
  • Утилита Iptables работает. Но к сожалению, все изменения будут действовать только до перезагрузки системы. После перезагрузки, все настройки изменятся на первоначальные.
  • Чтобы изменения сохранялись, нужно установить дополнительный пакет для Iptables.

Установка iptables-persistent в Ubuntu server 20.04

  • Производим установку пакета iptables-persistent.
  1. Добавление правила через консоль, и его сохранение в файле /etc/iptables/rules.v4, с помощью команды iptables-save.
  2. Добавление правила прямо в файл /etc/iptables/rules.v4, с последующей перезаписью имеющихся на данный момент правил, на правила из файла /etc/iptables/rules.v4, с помощью команды iptables-restore.

Первый способ:

  • Выполняем команду на открытие 80 порта:
  • Сохраняем имеющиеся правила в файле /etc/iptables/rules.v4.

Второй способ:

  • Открываем файл /etc/iptables/rules.v4, и вносим в него правила на открытие портов 443, 80, 22:
  • Перезаписываем имеющиеся правила, на правила из файла /etc/iptables/rules.v4:
  • Более подробную информацию о настройке брандмауэра с помощью утилиты iptables, можно найти в статье на сайте, на примере операционной системы CentOS 7.

Установка Fail2ban в Ubuntu server 20.04

  • Утилита будет установлена, запущена, и добавлена в автозагрузку.
  • Для управления утилитой, можно использовать обычные команды:
  • Конфигурационный файл Fail2ban перезаписывается после обновления, поэтому производить настройку нужно в другом файле, который следует скопировать с оригинального.
  • Вновь созданный файл, будет считаться утилитой приоритетнее оригинального. Именно в нём, и нужно производить все необходимые настройки.
  • Сразу после установки, утилита берёт под контроль ssh-подключения. Это можно увидеть, проверив статус активных джейлов.
  • Более подробную информацию о настройке утилиты Fail2ban, можно найти в статье на сайте, на примере операционной системы CentOS 7.

Сегодня мы рассмотрели тему: "Iptables и Fail2ban в Ubuntu 20.04". Поработали с утилитами Iptables и Fail2ban, в операционной системе Ubuntu server 20.04. Смотрите так же, видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

Видео на тему "Iptables и Fail2ban в Ubuntu 20.04":

Понравилась статья?
Напиши Комментарий, и Поделись с Друзьями!

wm-logo


WMZ-кошелёк = Z667041230317
WMR-кошелёк = R571680308266 ✔ Для вас важна анонимность и безопасность в сети Internet?
✔ Вы боитесь доверять сторонним VPN сервисам из-за утечки информации?
✔ Вам нужен VPN, где гарантированно не ведутся логи?
✔ Хотите иметь возможность делиться VPN со своими близкими и друзьями?
✅ Лучшим решением будет - Персональный VPN-Cервер , работающий только для Вас.

* В зависимости от хостинг-провайдера и параметров самого сервера, ежемесячная оплата сервера, может быть дешевле, чем покупка многих платных vpn-клиентов (от 100 руб в месяц).

* При покупке платных vpn-клиентов, Вам предоставляют возможность одновременного использования максимум 5 устройств-клиентов, иногда даже с ограниченным трафиком. В случае с Персональным VPN-сервером, количество устройств-клиентов зависит от Вашего желания, и ограничивается только ресурсами самого сервера.

* Так как многие Vpn-сервисы в какой-либо форме производят сбор данных о своих пользователях, Персональный Vpn-сервер – это ещё и защита от утечек информации.

- Если у Вас уже есть работающий VDS или выделенный сервер (отвечающий необходимым параметрам), то стоимость настройки составит - всего 500 руб.

Favorite

Добавить в избранное

Главное меню » Linux » Как установить и настроить Fail2ban в Ubuntu 20.04

(2 оценок, среднее: 5,00 из 5)

Установка Fail2ban на CentOS

Л юбая служба, подключенная к Интернету, подвержена риску атак вредоносного ПО. Например, если вы запускаете службу в общедоступной сети, злоумышленники могут использовать попытки грубой силы для входа в вашу учетную запись.

В этой статье описывается, как установить и настроить Fail2ban в Ubuntu 20.04.

Установка Fail2ban на Ubuntu

Пакет Fail2ban включен в репозитории Ubuntu 20.04 по умолчанию. Чтобы установить его, введите следующую команду от имени пользователя root или пользователя с привилегиями sudo :

После завершения установки служба Fail2ban запустится автоматически. В этом можно убедиться, проверив статус услуги:

Результат будет выглядеть так:

Вот и все. На этом этапе у вас есть Fail2Ban, работающий на вашем сервере Ubuntu.

Конфигурация Fail2ban

Стандартная установка Fail2ban включает два файла конфигурации /etc/fail2ban/jail.conf и /etc/fail2ban/jail.d/defaults-debian.conf. Не рекомендуется изменять эти файлы, так как они могут быть перезаписаны при обновлении пакета.

Fail2ban читает файлы конфигурации в следующем порядке. Каждый файл .local отменяет настройки из файла .conf:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Для большинства пользователей, самый простой способ настроить Fail2ban это скопировать jail.conf в jail.local и изменить файл .local. Более опытные пользователи могут создать .localфайл конфигурации с нуля. Файл .local не должен включать в себя все параметры из соответствующего файла .conf, только те, которые вы хотите заменить.

Читать Что такое обнаружение сервисов в Kubernetes?

Создайте файл конфигурации .local из файла по умолчанию jail.conf:

Чтобы начать настройку сервера Fail2ban, откройте файл jail.local в своем любимом текстовом редакторе :

Файл включает комментарии, описывающие, что делает каждый параметр конфигурации. В этом примере мы изменим основные настройки.

Добавить IP-адреса в белый список

В директиву ignoreip можно добавить IP-адреса, диапазоны IP-адресов или хосты, которые вы хотите исключить из запрета. Здесь вы должны добавить IP-адрес вашего локального ПК и всех других машин, которые вы хотите добавить в белый список.

Раскомментируйте строку, начинающуюся с ignoreip и добавьте свои IP-адреса через пробел:

Настройки бана

Варианты значения bantime, findtime и maxretry определения времени запрета и условия запрета.

Чтобы навсегда забанить IP, используйте отрицательное число.

findtime- это промежуток времени между количеством сбоев до установки запрета. Например, если Fail2ban настроен на запрет IP-адреса после пяти сбоев (см. ниже maxretry), эти сбои должны произойти в течение указанного периода findtime.

maxretry- количество отказов до блокировки IP-адреса. По умолчанию установлено значение пять, что должно подойти большинству пользователей.

Уведомления по электронной почте

Fail2ban может отправлять уведомления по электронной почте, когда IP-адрес заблокирован. Чтобы получать электронные письма, вам необходимо установить SMTP на вашем сервере и изменить действие по умолчанию, которое запрещает только IP %(action_mw)s, как показано ниже:

%(action_mw)s заблокирует оскорбительный IP-адрес и отправит электронное письмо с отчетом Whois. Если вы хотите включить соответствующие журналы в электронное письмо, установите для действия значение %(action_mwl)s.

Вы также можете настроить адреса электронной почты для отправки и получения:

Тюрьмы Fail2ban

Fail2ban использует концепцию тюрем. Тюрьма описывает службу и включает фильтры и действия. Записи журнала, соответствующие шаблону поиска, подсчитываются, и при выполнении заранее определенного условия выполняются соответствующие действия.

Fail2ban поставляется с несколькими тюрьмами для различных сервисов. Вы также можете создавать свои собственные конфигурации тюрьмы.

По умолчанию включен только ssh jail. Для включения jail вам нужно добавить enabled = true после заголовка jail. В следующем примере показано, как включить jail в proftpd:

Параметры, которые мы обсуждали в предыдущем разделе, могут быть установлены для каждой тюрьмы. Вот пример:

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

Каждый раз, когда вы редактируете файл конфигурации, вам необходимо перезапускать сервис Fail2ban, чтобы изменения вступили в силу:

Клиент Fail2ban

Fail2ban поставляется с инструментом командной строки с именем fail2ban-client, который вы можете использовать для взаимодействия со службой Fail2ban.

Для просмотра всех доступных опций вызовите команду с опцией -h:

Этот инструмент можно использовать для блокировки/разблокировки IP-адресов, изменения настроек, перезапуска службы и многого другого. Вот несколько примеров:

  • Проверьте статус тюрьмы:
  • Разбанить IP:
  • Запретить IP:

Вывод

Мы показали вам, как установить и настроить Fail2ban в Ubuntu 20.04.

Для получения дополнительной информации по этой теме посетите документацию Fail2ban .

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Описывая Fail2ban в двух словах, можно сказать, что он позволяет на основе анализа логов блокировать тех, кто злоупотребляет доступностью сервера по сети. Например, защитить почтовые ящики от взлома путем перебора паролей или многократного запроса какого-либо ресурса.

Читая некоторые статьи в интернете, может сложиться неправильное мнение, что Fail2ban нужен только для защиты от брут-форс атак (перебор паролей). На самом деле, данный программный продукт — система реагирования на подозрительные действия.

Установка и запуск

Для систем на базе пакетов Debian или Red Hat команды будут немного отличаться.

CentOS / Red Hat:

yum install fail2ban

Ubuntu / Debian:

apt-get install fail2ban

CentOS 6:

yum install fail2ban

Для запуска службы вводим следующие команды:

systemctl enable fail2ban

systemctl start fail2ban

* Для старых систем без systemd это будут команды chkconfig fail2ban on / update-rc.d fail2ban defaults и service fail2ban start.

Базовая настройка

Процесс настройки fail2ban не зависит от дистрибутива Linux. Основной конфигурационный файл находится по пути /etc/fail2ban/jail.conf. Однако, его не рекомендуется менять и для настройки используют подключаемые файлы из каталога /etc/fail2ban/jail.d.

Для начала создаем первый файл, в котором будут храниться настройки по умолчанию:

Приведем его к виду. Настройка будет немного отличаться в зависимости от операционной системы.

а) для CentOS / Red Hat:

[DEFAULT]
maxretry = 4
findtime = 480
bantime = 720
action = firewallcmd-ipset
ignoreip = 127.0.0.1/8

б) для Ubuntu / Debian:

[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, например:

[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.

Чтобы изменения вступили в силу, перезапускаем сервис:

systemctl restart fail2ban

* в старых версиях service fail2ban restart.

Исключения

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

Для того, чтобы задать общую настроку, откроем наш файл default:

[DEFAULT]
.
ignoreip = 192.168.0.0/24 95.95.95.95

* в данном примере под фильтры не будут попадать адреса с 192.168.0.1 по 192.168.0.255 и адрес 95.95.95.95.

Для конкретного правили настройки будут, примерно, следующие:

[ssh]
.
ignoreip = 192.168.1.22

* в данном примере мы добавили в белый список один адрес 192.168.1.22, который не будет блокироваться.

Обязательно перезагружаемся, чтобы настройки применились:

systemctl restart fail2ban

* добавление адреса в белый список не удаляет его из блокировки. Поэтому, если IP попал в блок, нужно будет его удалить вручную.

Действия и фильтры

Действия

Файлы с настройкой действий находятся в каталоге /etc/fail2ban/action.d. Чтобы блокировать адрес, Fail2ban создает правило в брандмауэре netfilter. Для этого, чаще всего, используются утилиты iptables или firewall-cmd. Последняя применяется в последних версиях CentOS / Red Hat / Fedora. iptables более универсальная и может использоваться, почти, во всех системах Linux.

Остановимся на описании самых используемых действий:

  • iptables — создание простого правила в netfilter с помощью одноименной утилиты;
  • iptables-multiport — использование модуля multiports, позволяющий добавлять диапазоны портов для блокировки;
  • iptables-ipset — использование ipset для придания более лаконичного вида правилам;
  • iptables-allports — блокирует для адреса все порты;
  • firewallcmd-new — создание простого правила в netfilter с помощью firewall-cmd;
  • firewallcmd-ipset — добавляет правила с помощью утилиты firewall-cmd, используя ipset;
  • firewallcmd-rich-rules — создает rich-rules при помощи firewall-cmd.

Подробнее, как создаются правила в netfilter при помощи iptables и firewalld.

Фильтры

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

Для создания и настройки своих фильтров, можно использовать имеющиеся файлы в качестве шпаргалки.

Примеры правил

В данных примерах блокировка IP-адреса будет происходить на 12 минут после 4-х попыток ввода пароля в течение 8 минут. Эти параметры берутся из настроек [DEFAULT]. Если их нужно переопределить, просто добавляем их при описании правила.

CentOS

[ssh]
enabled = true
port = ssh
filter = sshd
action = firewallcmd-new[name=sshd]
logpath = /var/log/secure

Ubuntu

[ssh]
enabled = true
port = ssh
filter = sshd
action = iptables[name=sshd]
logpath = /var/log/auth.log

Asterisk

[asterisk]
enabled = true
filter = asterisk
action = iptables-allports[name=asterisk, protocol=all]
logpath = /var/log/asterisk/messages

NGINX

NGINX DDoS (req limit)

Данное правило поможет защитить веб-сервер nginx от DDoS-атак. В некоторых сборках, для данного правило может не оказаться готового фильтра, поэтому в данном примере, мы его создадим вручную.

Для начала, необходимо настроить NGINX:

* данная настройка создает зону с интенсивностью запросов в 1 запрос в секунду.

После настраиваем лимит для конкретного виртуального домена в разделе server - location:

server .
location / .
limit_req zone=one burst=5 nodelay;
.

Проверяем конфигурационный файл nginx и перезапускаем сервис:

systemctl reload nginx

В лог-файле (по умолчанию /var/log/nginx/error.log) при превышении лимита подключения мы должны увидеть запись на подобие:

* обратите внимание, что в вашем случае путь до лога может быть другой. Он определяется в конфигурационном файле NGINX.

Теперь можно приступать к настройке fail2ban. Создаем фильтр:

* данный файл может быть уже создан и настроен при установке fail2ban. Если это так, то ничего не меняем и идем дальше.

Создаем правило в fail2ban:

* еще раз обращаю внимание на путь logpath — в вашем случае он может быть другим.

После настройки не забываем перезапустить fail2ban:

systemctl restart fail2ban

Работа со списком заблокированных адресов

Просмотр

Получить статистику заблокированных адресов можно следующей командой:

fail2ban-client status <имя правила>

Получить список правил можно командой:

При наличие заблокированных IP-адресов мы увидим, примерно, следующее:

`- action
|- Currently banned: 2
| `- IP list: 31.207.47.55 10.212.245.29

С помощью iptables:

iptables -L -n --line

С помощью firewall-cmd:

firewall-cmd --direct --get-all-rules

Удаление

Средствами fail2ban:

Для удаление адреса из списка вводим:

fail2ban-client set <имя правила> unbanip <IP-адрес>

fail2ban-client set ssh unbanip 31.207.47.55

С помощью iptables:

iptables -D <цепочка правил> -s IP-адрес

iptables -D fail2ban-ssh -s 10.212.245.29

С помощью firewall-cmd:

firewall-cmd --direct --permanent --remove-rule <правило>

firewall-cmd --direct --permanent --remove-rule ipv4 filter f2b-sshd 0 -s 188.134.7.221

Сегодня рассмотрим установку и настройку Fail2Ban на Ubuntu Server 16.04-20.04. Также рассмотрим защиту SSH-сервера от атак типа Brute Force. И так начнем.

Установка Fail2Ban

Устанавливать Fail2Ban будем на операционную систему Ubuntu Server. Перед установкой программы сперва выполним обновление системы:

Пакет Fail2Ban присутствует в официальном репозитории, поэтому его можно установить одной командой:

Настройка Fail2Ban для SSH

Все правки конфигурации мы будем производить в файле /etc/fail2ban/jail.local , этот файл будет подключен автоматически и его настройки имеют наивысший приоритет.

Откройте файл /etc/fail2ban/jail.local :

Ubuntu Server 14.04/16.04

Подготовим наш файл конфигурации к мониторингу SSH. Добавим секцию [sshd] :

  • enabled — состояние (true/false) фильтра, показывающее, включен он или выключен.
  • filter — какой фильтр применяется (со списком фильтров можно ознакомиться в /etc/fail2ban/filter.d/).
  • action — действия, выполняемые при бане IP-адреса.
  • logpath — файл с логами, которые будет отслеживать fail2ban.
  • ignoreip — указание, какие IP-адреса не должны блокироваться. Вы можете задать через пробел несколько адресов, которые fail2ban не будет учитывать в своих проверках. Например, если у вас постоянный IP-адрес, то вы можете указать его, и тогда при ошибочном вводе пароля ваш IP не будет заблокирован. Также можете указать сразу и подсеть IP-адресов
  • bantime — время в секундах, в течение которого подозрительный IP-адрес будет заблокирован.
  • findtime — интервал времени в секундах, в течение которого программой будет определяться подозрительная активность.
  • maxretry — число неудавшихся попыток авторизации в течение findtime секунд до попадания IP-адреса в бан.

Ubuntu Server 18.04/20.04

В более новых версиях Ubuntu применяется иной подход к написанию секции [sshd].

Разберем что же мы указали в нашем jail.local. Бан для IP на 12 часов, если с него в течение 10 минут было произведено 3 неудачных попытки авторизации

К слову, fail2ban ведёт лог, поэтому если не удаётся перезапустить программу из-за некорректной конфигурации, то стоит заглянуть в лог:

Параметр -n указывает, сколько последних строк из лога вывести на экран.

Для выполнения проверки достаточно несколько раз ввести неправильный пароль при авторизации и убедиться, что дальнейшие запросы от вас не обрабатываются. Следует обратить внимание на следующее:

  • желательно проверку производить не с того же IP, с которого осуществляете настройку (чтобы иметь возможность разбанить себя и отредактировать конфиг).
  • для проверки время бана лучше выставить поменьше.
  • необходимо убедиться, что IP, с которого производится проверка, не был указан в ignoreip .

Заключение

Мы рассмотрели использование fail2ban для защиты SSH от брутфорса. Аналогичным образом можно защитить FTP, apache, postfix, dovecot и многие другие сервисы. Вот например статьи для защиты WordPress, защита OpenVPN или защита phpmyadmin .Это убережёт вас от проникновения злоумышленников на сервер путём подбора пароля.

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Читайте также: