Как защитить свой сервер с помощью Fail2Ban в Linux

Защита сервера является главным приоритетом для любого предприятия или организации. Одним из самых важных инструментов в наборе инструментов сисадмина является Fail2Ban. Это руководство объясняет, что такое Fail2Ban и как его использовать для защиты вашего Linux сервера от атак.

Что такое Fail2Ban?

Fail2Ban – это инструмент предотвращения вторжений, который отслеживает файлы журналов и запрещает IP-адреса с признаками вредоносной активности. Для этого создаются «фильтры», которые соответствуют определенным шаблонам в лог-файлах и выполняют действия, например, запрещают IP-адрес нарушителя.

Зачем использовать Fail2Ban?

Есть несколько причин использовать fail2ban.

Он может:

  • сэкономить ваше время, автоматически запрещая вредоносные IP-адреса.
  • помочь защитить ваш сервер, снизив вероятность успешной атаки.
  • дать вам душевное спокойствие, зная, что ваш сервер контролируется и защищен.

Установка Fail2Ban

По умолчанию Fail2Ban доступен в репозиториях Ubuntu. Установите его с помощью apt.

sudo install fail2ban

Как защитить свой сервер с помощью Fail2Ban в Linux

Fail2Ban будет запускать свою службу в фоновом режиме, но systemd отключит ее по умолчанию. Вы можете запустить и включить его с помощью следующих команд:

sudo systemctl enable fail2ban

Убедитесь, что Fail2Ban запущен с помощью следующей команды:

sudo systemctl status fail2ban

Вы увидите результат, похожий на изображение ниже.

Как защитить свой сервер с помощью Fail2Ban в Linux

Настройка Fail2Ban

Каталог «/etc/fail2ban» содержит файлы конфигурации для Fail2Ban. По умолчанию Fail2Ban поставляется с файлом «jail.conf», который содержит настройки, применяемые ко всем службам.

Как защитить свой сервер с помощью Fail2Ban в Linux

Однако, хорошей практикой является создание локального файла «jail.local» и переопределение настроек в «jail.conf», поскольку вы потеряете все изменения, внесенные в «jail.conf», при каждом обновлении программы.

Вы можете создать файл «jail.local» с помощью следующих команд:

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

Откройте файл jail.local для его редактирования:

sudo nano /etc/fail2ban/jail.local

Как защитить свой сервер с помощью Fail2Ban в Linux

Изучение файла jail.local

Вы увидите результат, аналогичный приведенному ниже, и можете быть ошеломлены количеством доступных опций. Но не волнуйтесь, так как мы проведем вас через самые важные.

Как защитить свой сервер с помощью Fail2Ban в Linux

Вы увидите символ # в начале строки, указывающий на то, что это комментарий. Fail2Ban использует их, чтобы объяснить, что делает та или иная настройка. Вы можете включить некоторые параметры, удалив этот символ.

Секция [DEFAULT] содержит параметры, применяемые ко всем секциям. Это глобальная конфигурация для Fail2Ban. На следующем скриншоте показан пример этого.

Как защитить свой сервер с помощью Fail2Ban в Linux

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

Например, есть секция для фильтрования sshd. Этот раздел содержит опции, специфичные для службы sshd.

Как защитить свой сервер с помощью Fail2Ban в Linux

Включение функции автобана

Перейдите к параметру bantime = 1h и уберите символ # в начале строки, чтобы включить его. Эта строка задает продолжительность отключения IP-адреса программой Fail2Ban. По умолчанию единицей измерения является один час. Вы также можете использовать другие единицы, например, минуты (m), дни (d) или даже недели (w).

Как защитить свой сервер с помощью Fail2Ban в Linux

Вы можете увеличить или уменьшить это значение по своему усмотрению. Например, вы можете изменить это значение на 30m, чтобы уменьшить длительность запрета до 30 минут.

Как защитить свой сервер с помощью Fail2Ban в Linux

Количество попыток и временной интервал

Следующие параметры – maxretry и findtime. Они определяют, сколько попыток входа может сделать злоумышленник, прежде чем Fail2Ban запретит его IP.

По умолчанию значения maxretry и findtime равны 5 и 10m. Если IP-адресу не удается пройти аутентификацию пять раз за десять минут, Fail2Ban запретит его на срок, указанный параметром bantime.

Как защитить свой сервер с помощью Fail2Ban в Linux

Вы можете изменить эти значения по своему усмотрению. Например, вы можете установить maxretry на 3, а findtime на 5m: Fail2Ban отключит IP, если он не сможет пройти аутентификацию три раза за пять минут.

Как защитить свой сервер с помощью Fail2Ban в Linux

Включение функции уведомлений Fail2Ban

Следующие настройки – destemail, sendername и mta. Эти параметры Fail2Ban будет использовать для настройки уведомлений по электронной почте.

  • Параметр destemail – это адрес электронной почты, на который программа будет отправлять свои уведомления.
  • Параметр sendername – это имя, которое будет отображаться в поле «От» в письме-уведомлении.
  • mta – это агент передачи почты, который Fail2Ban будет использовать для отправки писем. По умолчанию mta – sendmail, но вы можете изменить его на что-нибудь другое, например, mail.

Если вы хотите получать уведомления по электронной почте, вам нужно откомментировать эти строки и ввести соответствующие значения, как показано.

Как защитить свой сервер с помощью Fail2Ban в Linux

Когда происходит запрет, вы получите уведомление по электронной почте с подробностями о запрете, как показано.

Как защитить свой сервер с помощью Fail2Ban в Linux

Создание пользовательских команд бана

Следующий параметр – action_ =. Она определяет действие, которое Fail2ban предпринимает при запрете IP-адреса. По умолчанию используется iptables для блокировки IP-адреса до истечения «bantime».

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

  • action_mw: отправляет уведомление по электронной почте, когда IP забанен, прилагая соответствующую информацию WHOIS.
  • action_mwl: отправляет уведомление по электронной почте, когда IP забанен, прилагая соответствующую информацию WHOIS и записи лог-файла, которые вызвали запрет.
  • action_xarf: отправляет уведомление по электронной почте в формате X-ARF, когда IP забанен, с записями лог-файла, которые вызвали бан.

Много других действий доступны, но невозможно охватить их все в этом руководстве. Вы можете прочитать обо всех доступных действиях в документации Fail2ban.

Как защитить свой сервер с помощью Fail2Ban в Linux

Включение конфигурации, специфичной для конкретного сервиса

Помимо настройки поведения Fail2ban по умолчанию, можно также использовать готовые «файлы фильтров» для некоторых распространенных интернет-сервисов. Например, файл «apache-shellshock.conf» содержит все необходимые настройки, позволяющие Fail2ban проверять любые вредоносные попытки создания ошибки shellshock.

Как защитить свой сервер с помощью Fail2Ban в Linux

Вы можете найти все доступные файлы фильтров для вашей системы, просмотрев каталог «/etc/fail2ban/filter.d»:

ls /etc/fail2ban/filter.d

Как защитить свой сервер с помощью Fail2Ban в Linux

Когда вы знаете фильтры, которые хотите использовать, скажите Fail2ban загрузить их во время запуска, открыв файл «jail.local»:

sudo nano /etc/fail2ban/jail.local

Создайте место в «jail.local», где вы сможете активировать ваши новые фильтры. Я создаю его между заголовком комментария и блоком [INCLUDES].

Как защитить свой сервер с помощью Fail2Ban в Linux

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

[sshd]
enabled = true
[nginx-bad-request]
enabled = true
[bitwarden]
enabled = true
[INCLUDES]

Как защитить свой сервер с помощью Fail2Ban в Linux

После этого сохраните и закройте файл. Перезапустите fail2ban, чтобы применить изменения.

sudo systemctl restart fail2ban

Проверка конфигурации

Теперь, когда вы настроили fail2ban, пришло время проверить его.

Простейший способ проверить конфигурацию – попытаться войти в систему с неправильным паролем несколько раз подряд. Для этого можно использовать SSH-соединение.

Как защитить свой сервер с помощью Fail2Ban в Linux

Проверка действий Fail2ban

Наконец, выполните следующую команду на вашем сервере Fail2ban, чтобы убедиться, что fail2ban добавил необходимые правила в iptables.

Команда grep фильтрует вывод команды iptables. Опция -S указывает iptables печатать правила в формате, который можно легко разобрать.

sudo fail2ban-client set <jail_name> unbanip <ip_address>

Вы увидите вывод, подобный изображенному ниже. Аргумент «-reject-with icmp-port-unreachable» указывает iptables посылать сообщение ICMP port unreachable обратно клиенту, когда он пытается подключиться. Вы также можете увидеть IP-адреса машин, которые сервер запретил.

Как защитить свой сервер с помощью Fail2Ban в Linux

Часто задаваемые вопросы

Почему я получаю пустое уведомление по электронной почте, когда Fail2ban запрещает IP-адрес?

Если вы получаете пустое уведомление по электронной почте, вероятно, вы неправильно настроили свой почтовый сервер. Проверьте конфигурацию почтового сервера и убедитесь, что он способен отправлять электронную почту.

Как снять запрет с IP-адреса?

Сначала найдите секцию-блокировщик, в которой в настоящее время запрещен IP-адрес: sudo fail2ban-client status <jail_name>, затем снимите запрет с IP-адреса, выполнив следующее: sudo fail2ban-client set <jail_name> unbanip <ip_address>.

Как просмотреть файл журнала fail2ban?

Вы можете захотеть просмотреть файл журнала fail2ban, чтобы устранить неполадки или узнать, почему IP был запрещен. Файл «/var/log/fail2ban.log» содержит все журналы, создаваемые fail2ban. Используйте команду cat для просмотра файла журнала fail2ban: cat /var/log/fail2ban.log.

Я включил несколько файлов фильтров. Почему все они не работают?

Эта проблема, скорее всего, вызвана тем, что фильтр перезаписывает другой файл, который был до него. Один из способов исправить это – создать свой собственный файл фильтра, объединив несколько фильтров вместе.

Защитит ли Fail2ban мой сервер от DoS-атаки?

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

Похожие статьи

Комментарии (0)