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

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

Что такое Fail2Ban?

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

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

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

Он может:

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

Установка Fail2Ban

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

sudo install fail2ban

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

sudo systemctl enable fail2ban

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

sudo systemctl status fail2ban

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

Настройка Fail2Ban

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

Однако, хорошей практикой является создание локального файла «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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ls /etc/fail2ban/filter.d

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

sudo nano /etc/fail2ban/jail.local

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

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

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

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

sudo systemctl restart fail2ban

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

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

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

Проверка действий 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 запрещает 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-сервер с помощью других инструментов от таких атак.

Зарубин Иван Эксперт по Linux и Windows

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

Вдохновлен www.maketecheasier.com

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

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