Настройка Fail2ban Centos 7

Обновлено: 21.11.2024

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

Установка Fail2ban

Он работает, отслеживая файлы журналов на наличие записей определенного типа и выполняя заранее определенные действия на основе своих результатов. Поскольку Fail2ban недоступен непосредственно из CentOS, вам необходимо сначала установить EPEL, прежде чем вы сможете установить Fail2ban. EPEL содержит дополнительные пакеты для Enterprise Linux, включая CentOS.

После установки скопируйте файл jail.conf по умолчанию, чтобы выполнить локальную настройку с помощью этой команды

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

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

Во-первых, это основные значения по умолчанию для ignoreip, которые позволяют исключить определенные IP-адреса из запрета, например, если ваш компьютер имеет фиксированный IP-адрес, вы можете ввести его здесь. Затем установите bantime, которое определяет, как долго нарушитель будет оставаться заблокированным до автоматического разблокирования. Наконец, проверьте счетчики findtime и maxretry, из которых время поиска устанавливает временное окно для максимального количества повторных попыток, прежде чем IP-адрес узла, пытающийся подключиться, будет заблокирован.

Если на вашем облачном сервере настроена служба отправки почты, вы можете включить уведомления по электронной почте от Fail2ban, введя свой адрес электронной почты в параметр destemail и изменив action = %(action_ )s на action = %(action_mw)s.

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

Настройки тюрьмы SSH, которые вы можете найти в верхней части списка тюрем, по умолчанию отключены. Вы должны включить их, добавив enabled = true в разделе тюрьмы SSH.

Вы можете включить любые другие модули тюрьмы таким же образом, добавив ту же строку чуть ниже любого заголовка тюрьмы, например [sshd] в приведенном выше примере.

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

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

Все заблокированные IP-адреса будут отображаться в определенных цепочках, в которых произошли неудачные попытки входа в систему. Вы также можете вручную блокировать и разблокировать IP-адреса для служб, для которых вы определили тюрьмы, с помощью следующих команд.

Fail2ban — это удобное дополнение к контролю доступа к брандмауэру в целом, не стесняйтесь экспериментировать с конфигурацией и не беспокойтесь, если ваш IP-адрес будет заблокирован, вы всегда можете войти в систему через веб-консоль на панели управления UpCloud. чтобы потом разбанить себя.

Главный редактор и технический писатель в UpCloud с 2015 года. Энтузиаст облачных вычислений, пишущий о серверных технологиях и программном обеспечении.

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

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

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

В этом руководстве мы расскажем, как установить и использовать Fail2ban на сервере CentOS 7.

Установите Fail2ban на CentOS 7

Хотя Fail2ban недоступен в официальном репозитории пакетов CentOS, он упакован для проекта EPEL. EPEL (расшифровывается как Extra Packages for Enterprise Linux) может быть установлен вместе с пакетом выпуска, который доступен в CentOS:

Вам будет предложено продолжить — нажмите y, а затем Enter:

Теперь мы сможем установить пакет fail2ban:

Снова нажмите y и Enter, когда будет предложено продолжить.

После завершения установки используйте systemctl, чтобы включить службу fail2ban:

Настроить локальные настройки

Служба Fail2ban хранит файлы конфигурации в каталоге /etc/fail2ban. Там вы можете найти файл со значениями по умолчанию, который называется jail.conf. Поскольку этот файл может быть перезаписан обновлениями пакета, мы не должны редактировать его на месте.Вместо этого мы напишем новый файл с именем jail.local. Любые значения, определенные в файле jail.local, переопределяют значения в файле jail.conf .

jail.conf содержит раздел [ПО УМОЛЧАНИЮ], за которым следуют разделы для отдельных служб. jail.local может переопределить любое из этих значений. Кроме того, файлы в /etc/fail2ban/jail.d/ можно использовать для переопределения настроек в обоих этих файлах. Файлы применяются в следующем порядке:

  1. /etc/fail2ban/jail.conf
  2. /etc/fail2ban/jail.d/*.conf , по алфавиту
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local по алфавиту

Любой файл может содержать раздел [DEFAULT], выполняемый первым, а также может содержать разделы для отдельных джейлов. Последнее значение vavalue, установленное для данного параметра, имеет приоритет.

Давайте начнем с написания очень простой версии файла jail.local. Откройте новый файл с помощью nano (или любого другого редактора):

Вставьте следующее:

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

Выйдите и сохраните новый файл (в nano нажмите Ctrl-X, чтобы выйти, y, чтобы сохранить, и Enter, чтобы подтвердить имя файла). Теперь мы можем перезапустить службу fail2ban с помощью systemctl :

Команда systemctl должна завершиться без каких-либо результатов. Чтобы проверить, что служба работает, мы можем использовать fail2ban-client:

Вы также можете получить более подробную информацию о конкретной тюрьме:

Изучите доступные настройки

Версия jail.local, которую мы определили выше, является хорошим началом, но вы можете настроить ряд других параметров. Откройте jail.conf, и мы рассмотрим некоторые настройки по умолчанию. Если вы решите изменить какие-либо из этих значений, помните, что их следует скопировать в соответствующий раздел файла jail.local и изменить там, а не изменять на месте.

Настройки по умолчанию для всех тюрем

Сначала прокрутите раздел [ПО УМОЛЧАНИЮ].

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

Параметр bantime задает период времени, в течение которого клиент будет заблокирован, если ему не удалось правильно пройти аутентификацию. Это измеряется в секундах. По умолчанию установлено значение 600 секунд или 10 минут.

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

Переменная maxretry задает количество попыток аутентификации клиента в течение временного окна, определенного findtime , прежде чем он будет заблокирован. С настройками по умолчанию Fail2ban заблокирует клиента, который безуспешно пытается войти в систему 3 раза в течение 10-минутного окна.

Если вы хотите настроить оповещения по электронной почте, вам может потребоваться переопределить настройки destemail , sendername и mta . Параметр destemail задает адрес электронной почты, на который должны приходить сообщения о бане. Имя отправителя устанавливает значение поля «От» в электронном письме. Параметр mta определяет, какая почтовая служба будет использоваться для отправки почты.

Этот параметр настраивает действие, которое Fail2ban предпринимает, когда хочет установить бан. Значение action_ определено в файле незадолго до этого параметра. Действие по умолчанию — просто настроить брандмауэр так, чтобы он отклонял трафик от хоста-нарушителя, пока не истечет время блокировки.

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

Настройки для отдельных джейлов

После [DEFAULT] мы столкнемся с разделами, настраивающими отдельные тюрьмы для разных служб. Обычно они включают в себя порт, который нужно запретить, и путь к журналу для отслеживания попыток злонамеренного доступа. Например, тюрьма SSH, которую мы уже включили в jail.local, имеет следующие настройки:

В этом случае ssh является предопределенной переменной для стандартного порта SSH, а %(sshd_log)s использует значение, определенное в другом месте стандартной конфигурации Fail2ban (это помогает обеспечить переносимость файла jail.conf между различными операционными системами).< /p>

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

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

Однако вы можете увидеть, какие типы фильтров доступны, заглянув в этот каталог:

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

И перезапустите службу fail2ban:

Отслеживание журналов Fail2ban и конфигурации брандмауэра

Важно знать, что такая служба, как Fail2ban, работает по назначению. Начните с проверки состояния службы с помощью systemctl:

Если вам кажется, что здесь что-то не так, вы можете устранить неполадки, проверив журналы модуля fail2ban с момента последней загрузки:

Затем используйте fail2ban-client для запроса общего состояния fail2ban-server или любой отдельной тюрьмы:

Следите за журналом Fail2ban, чтобы узнать о последних действиях (нажмите Ctrl-C, чтобы выйти):

Список текущих правил, настроенных для iptables:

Показать правила iptables в формате, отражающем команды, необходимые для включения каждого правила:

Заключение

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

Если вы хотите узнать больше о том, как работает Fail2ban, ознакомьтесь с нашим руководством о том, как работают правила и файлы fail2ban.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

Fail2ban — это программное обеспечение с открытым исходным кодом, которое активно сканирует файлы журналов серверов в режиме реального времени на наличие попыток грубой силы входа в систему и, в случае обнаружения, блокирует атаку с помощью программного обеспечения брандмауэра сервера (firewalld или iptables). Fail2Ban работает как фоновый процесс и постоянно сканирует файлы журналов на наличие необычных шаблонов входа и попыток нарушения безопасности.

Установка

Чтобы установить Fail2Ban на CentOS 7, нам сначала нужно включить репозиторий EPEL (дополнительные пакеты для Enterprise Linux). Следующие команды будут выполняться от имени пользователя root.

Мы также можем установить Fail2ban, скопировав программное обеспечение с GitHub.

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

После установки fail2ban нам необходимо настроить и настроить программное обеспечение с помощью обновленного файла конфигурации jail.local. В качестве примечания: программное обеспечение fail2ban хранит свои файлы конфигурации в папке /etc/fail2ban. Файл jail.local заменяет файл jail.conf и обычно используется для проверки безопасности ваших пользовательских обновлений.

Сначала мы сделаем копию файла «jail.conf» и пересохраним его под именем «jail.local»:

Далее нам нужно будет отредактировать файл jail.local в Vim с помощью следующей команды.

Добавьте свой локальный IP-адрес в строку ignoreip.

Добавить джейл-файл для защиты доступа по SSH

Далее нам нужно создать и отредактировать в Vim новый файл с именем sshd.local.

После этого мы добавляем следующие строки кода.

Убедитесь, что для параметра «включено» установлено значение «истина». Чтобы включить защиту, установите значение True, Чтобы отключить защиту, установите значение False. Параметр фильтра в строке 167 файла jail.conf

сравнивает файл конфигурации sshd с этим параметром, расположенным по пути /etc/fail2ban/filter.d/sshd.conf.

Действие этого параметра используется для определения IP-адреса, который необходимо заблокировать с помощью фильтра, доступного в файле /etc/fail2ban/action.d/firewallcmd-ipset.conf.

Кроме того, параметр порта SSH может быть изменен на новое значение, соответствующее вашим настройкам SSH. Если вы используете порт 22, нет необходимости изменять этот параметр. Другие параметры включают:

  • Путь к журналу. Путь к журналу определяет путь, по которому будет храниться файл журнала. Этот файл журнала сканируется Fail2Ban.
  • Maxretry: Maxetry используется для определения максимального количества неудачных входов в систему.
  • Bantime: параметр bantime используется для определения количества секунд, в течение которых хост будет заблокирован.

Службы Fail2Ban

Если вы не используете брандмауэр CentOS (firewalld), включите его:

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

Статус Fal2Ban

Чтобы проверить состояние джейлов Fail2Ban, выполните следующую команду:

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

Разблокировка IP-адреса

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

Это удалит IP-адрес.

Ограниченная доступность!
Действовать сейчас!

Заботитесь ли вы о безопасности своего сервера?
Сталкивались ли вы с многочисленными попытками входа в систему при входе на сервер? В Liquid Web есть несколько современных пакетов безопасности для обеспечения защиты ваших данных.

Несмотря на то, что подключение к вашему серверу через SSH может быть очень безопасным, сам демон SSH является службой, которая должна быть доступна в Интернете для правильной работы. Это сопряжено с некоторыми неотъемлемыми рисками. Таким образом, любая служба, доступная в сети, является потенциальной целью. Если вы обратите внимание на журналы приложений для этих служб, вы часто увидите повторяющиеся систематические попытки входа в систему, которые представляют собой атаки методом перебора со стороны пользователей и ботов.

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

В этом руководстве мы расскажем, как установить и использовать fail2ban на сервере CentOS 7.

1. Установите Fail2Ban

Поскольку Fail2Ban недоступен в CentOS, нам придется сначала установить репозиторий EPEL.

Следующие команды должны быть выполнены после переключения на пользователя root.

Установите Fail2Ban:

2. Запуск службы Fail2Ban

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

  • systemctl включает fail2ban
  • systemctl запускает fail2ban
3. Скопируйте файл конфигурации

Файл конфигурации Fail2Ban по умолчанию находится в /etc/fail2ban/jail.conf. Не следует выполнять настройку в этом файле, так как он может быть изменен при обновлении пакета, а лучше скопировать его, чтобы мы могли безопасно вносить изменения.

Нам нужно скопировать это в файл с именем jail.local, чтобы Fail2Ban мог его найти.

После того, как файл скопирован, вы можете внести все изменения в новый файл jail.local. Многие возможные службы, которые могут нуждаться в защите, уже находятся в файле. Каждый находится в своем разделе, настроен и выключен.

4. Настройте значения по умолчанию в jail.local

Откройте новый файл конфигурации Fail2Ban:

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

Вы можете увидеть раздел по умолчанию ниже:

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

Добавьте параметр banaction, чтобы убедиться, что мы используем iptables для настройки брандмауэра.

Следующим шагом является определение времени бана, количества секунд, на которое хост будет заблокирован от сервера, если будет обнаружено, что он нарушает какое-либо из правил. Это особенно полезно в случае ботов, которые после блокировки просто переходят к следующей цели. По умолчанию установлено значение 10 минут. При желании вы можете увеличить его до часа (или больше).

Maxretry – это количество неправильных попыток входа, которые может совершить хост, прежде чем он будет заблокирован на время блокировки.

Время поиска — это время, в течение которого хост должен войти в систему. По умолчанию установлено значение 10 минут; это означает, что если хост попытается и не сможет войти в систему больше, чем максимальное количество попыток в течение назначенных 10 минут, он будет заблокирован.

5. Добавьте джейл-файл для защиты SSH

Хотя вы можете добавить эти параметры в глобальный файл jail.local, рекомендуется создавать отдельные файлы тюрьмы для каждой из служб, которые мы хотим защитить с помощью Fail2Ban.

Давайте создадим новый джейл для SSH с помощью редактора vi.

В указанный выше файл добавьте следующие строки кода:

Включено просто означает, что защита SSH включена. Вы можете отключить его с помощью слова «false».

Параметр port определяет, за каким портом должен следить Fail2Ban. Если используется порт 22 по умолчанию, то нет необходимости изменять этот параметр. В противном случае введите порт, который вы используете для доступа по SSH.

Действие описывает шаги, которые Fail2Ban предпримет для блокировки соответствующего IP-адреса. Каждое действие относится к файлу в каталоге action.d. Действие блокировки по умолчанию «iptables-multiport» можно найти в /etc/fail2ban/action.d/iptables-multiport.conf.

путь к журналу — это путь к журналу, который будет отслеживать Fail2Ban.

Строки max retry и bantime в разделе SSH имеют те же определения, что и файл конфигурации по умолчанию. Однако, если вы включили несколько служб и хотите иметь определенные значения для каждой из них, вы можете установить новое максимальное количество повторных попыток и время блокировки для SSH здесь.

6. Перезапустите Fail2Ban

После внесения любых изменений в конфигурацию Fail2Ban обязательно перезапустите Fail2Ban.

Вы можете увидеть правила, которые применяет fail2ban, в таблице IP-адресов:

Проверить статус Fail2Ban

Используйте команду fail2ban-client для запроса общего состояния тюрем Fail2Ban.

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

Вручную разблокировать IP-адрес, заблокированный Fail2Ban

Если по какой-то причине вы хотите предоставить доступ к заблокированному IP-адресу, используйте следующее выражение, чтобы вручную разблокировать IP-адрес, заблокированный fail2ban:

например. Разблокировать IP 192.168.1.101, забаненный согласно [sshd] jail:

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

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