Как использовать Fail2ban для защиты вашего Linux-сервера

Улучшение безопасности вашего сервера должно быть одним из ваших главных приоритетов, когда дело доходит до управления Linux сервером. Просмотрев журналы вашего сервера, вы часто можете найти различные попытки для входа в систему с использованием брутфорса, веб-флудинга, поиска эксплойтов и многого другого.  Если у вас еще нет сервера, то можно его арендовать по этой ссылке.

С помощью программного обеспечения для предотвращения вторжений, такого как fail2ban, вы можете проверить журналы своего сервера и добавить дополнительные правила iptables для блокировки проблемных IP-адресов.

В этом уроке вы узнаете, как установить fail2ban и настроить базовую конфигурацию для защиты вашей Linux-системы от брутфорс атак.

Требования

Fail2ban написан на Python, и единственным требованием является установка Python:

  • Версии Fail2ban 0.9.x требуют Python> = 2.6 или Python> = 3.2
  • Версии Fail2ban 0.8.x требуют Python> = 2.4
  • Корневой доступ к вашей системе
  • Опционально, iptables или showewall и sendmail

Как установить Fail2Ban в Linux-системах

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

Установка Fail2Ban в CentOS/RHEL 7

Во-первых, обновите свои пакеты, включите Epel репозиторий и установите fail2ban, как показано ниже.

# yum update
# yum install epel-release
# yum install fail2ban

Установка Fail2Ban в Debian/Ubuntu

Сначала обновите свои пакеты и установите fail2ban, как показано.

# apt-get update && apt-get upgrade -y
# apt-get install fail2ban

При желании, если вы хотите включить поддержку почты (для почтовых уведомлений), вы можете установить sendmail.

# yum install sendmail [Для CentOS/RHEL]
# apt-get install sendmail-bin sendmail [Для Debian/Ubuntu]

Чтобы включить fail2ban и sendmail, используйте следующие команды:

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl start sendmail
# systemctl enable sendmail

Как настроить Fail2ban в системах Linux

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

Таким образом, файл .local не должен включать все настройки из файла .conf, а будет включать только те, которые вы хотите переопределить. Изменения должны быть сделаны в файлах .local, не входящих в .conf. Это предотвратит переписывание изменений при обновлении пакета fail2ban.

Для этого урока мы будем копировать существующий файл fail2ban.conf в fail2ban.local.

# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

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

loglevel — это уровень детализации для записи. Возможные варианты:

  • CRITICAL
  • ERROR
  • WARNING
  • NOTICE
  • INFO
  • DEBUG

logtarget — регистрировать действия в определенном файле. Значение по умолчанию — /var/log/fail2ban.log . Однако вы можете изменить это:

  • STDOUT — вывод любых данных
  • STDERR — вывод любых ошибок
  • SYSLOG — запись на основе сообщений
  • File — вывод в файл
  • socket — каталог, в который будет помещен файл сокета.
  • pidfile — расположение файла pidfile.

Настройка Fail2ban jail.local

Одним из наиболее важных файлов в fail2ban является jail.conf, который содержит настройки защиты конкретных сервисов. Здесь вы определяете службы, для которых fail2ban должен быть включен.

Как мы уже упоминали ранее, файлы .conf могут быть изменены во время обновлений, поэтому вы должны создать файл jail.local, в котором вы можете применить свои модификации.

Другой способ сделать это — просто скопировать файл .conf с помощью:

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Если вы используете CentOS или Fedora, вам нужно будет изменить бэкэнд в jail.local с «auto» на «systemd».

Включить Backend в Fail2ban
Включение Backend в Fail2ban

Если вы используете Ubuntu/Debian, нет необходимости вносить эту модификацию, даже если они также используют systemd .

Файл jail включит SSH по умолчанию для Debian и Ubuntu, но не для CentOS. Если вы хотите включить его, просто измените следующую строку в /etc/fail2ban/jail.local :

[sshd]
enabled = true

Время запрета и повтора

Вы можете настроить обстоятельство, после которого IP-адрес будет заблокирован. Для этой цели fail2ban использует bantime, findtime и maxretry.

  • bantime — это количество секунд, в течение которого IP-адрес будет оставаться заблокированным (по умолчанию 10 минут).
  • findtime — количество времени между попытками входа в систему до того, как хост заблокирован. (по умолчанию 10 мин). Другими словами, если fail2ban настроен на блокировку IP-адреса после 3 неудачных попыток входа в систему, эти 3 попытки должны выполняться в течение периода поиска (10 минут).
  • maxretry — сколько попыток должно быть сделано до применения запрета. (по умолчанию 3).

Белые списки IP-адресов

Разумеется, вы захотите присвоить белый список определенным IP-адресам. Чтобы настроить такие IP-адреса, откройте файл /etc/fail2ban/jail.local с помощью вашего любимого текстового редактора и раскомментируйте следующую строку:

ignoreip = 127.0.0.1/8  ::1

Затем вы можете туда поместить IP-адреса, которые вы хотите игнорировать. IP-адреса должны быть разделены пробелом или запятой.

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

Если вы хотите получать оповещения по электронной почте по событию, вам необходимо настроить следующие параметры в файле /etc/fail2ban/jail.local :

  • destemail — адрес электронной почты, где вы получите уведомление.
  • Sendername — отправитель, которого вы увидите при получении сообщения.
  • sender — адрес электронной почты, с которого fail2ban отправит электронные письма.

По умолчанию mta (агент передачи писем) установлен в sendmail.

Чтобы получить уведомление по почте, вам также необходимо изменить настройку «action» :

Action = %(action_)s

К одному из них:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s — заблокирует хост и отправит письмо с помощью отчета whois.
  • %(action_mwl)s — заблокирует хост, предоставит информацию whois и всю соответствующую информацию из файла журнала.

Дополнительная конфигурация Fail2ban Jail

До сих пор мы рассматривали основные параметры конфигурации. Если вы хотите настроить секции, вам необходимо включить его в файл jail.local . Синтаксис довольно прост:

[jail_to_enable]
. . .
enabled = true

Где вы должны заменить jail_to_enable актуальной секцией, например «sshd». В файле jail.local следующие значения будут предопределены для службы ssh:

[sshd]

port = ssh
logpath = %(sshd_log)s

Вы можете включить фильтр, который поможет определить, является ли строка в журнале неудачной. Значение фильтра — это ссылка на файл с именем службы, за которым следует .conf. Например: /etc/fail2ban/filter.d/sshd.conf.

Синтаксис:

filter = service

Например:

filter = sshd

Вы можете просмотреть существующие фильтры в следующем каталоге: /etc/fail2ban/filter.d/.

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

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

# man fail2ban-client

Здесь вы увидите некоторые из основных команд, которые вы можете использовать. Чтобы просмотреть текущий статус fail2ban или конкретной тюрьмы, вы можете использовать:

# fail2ban-client status

Результат будет выглядеть примерно так:

Проверить статус Fail2ban
Проверка статуса Fail2ban

Для отдельной секции вы можете запускать:

# fail2ban-client status sshd

На скриншоте ниже вы увидите, что я намеренно ошибся в нескольких входах, поэтому fail2ban может заблокировать IP-адрес, с которого я пытался подключиться:

Проверить статус Fail2ban SSH
Проверка SSH статуса Fail2ban

Заключение

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

admin

Оставить отклик

Ваш адрес эл.почты не будет опубликован.