ГлавнаяОперационные системыLinuxКак защитить свой сервер с помощью Fail2Ban в Linux

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

Настройка Fail2Ban

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

Совет. Помимо Fail2Ban, попробуйте эти инструменты с открытым исходным кодом для защиты вашего сервера .

Что такое Fail2Ban?

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

Зачем

Что такое Fail2Ban?

Есть несколько причин использовать Fail2ban. Он может:

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

Установка Fail2Ban

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

sudo add-apt-repository universe
sudo apt update && sudo apt install fail2ban -y
Окно терминала, показывающее процесс установки Fail2ban.

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

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

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

sudo systemctl status fail2ban

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

Окно терминала, показывающее работающую службу <h2><span id=Установка Fail2Banойка Fail2Ban

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

Окно терминала, показывающее содержимое каталога Fail2ban.

Однако рекомендуется создать локальный файл «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.

Полезно знать : узнайте, как создайте SSH-приманку для поимки хакеров на вашем сервере .

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

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

Часть терминала, показывающая комментарии к файлу Jail.local.

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

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

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

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

Например, есть раздел для тюрьмы «sshd». В этом разделе содержатся параметры, специфичные для службы sshd.

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

Совет. вы также можете узнать больше об усилении защиты сервера к защита вашего SSH-сервера .

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

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

Раздел терминала<h3><span id=Изучение файла Jail.localу по умолчанию.">

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

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

Изменение длины окна входа по умолчанию

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

Значения по умолчанию для «maxretry» и «findtime» — 5 и 10 м. Если IP-адрес не сможет аутентифицироваться пять раз за десять минут, Fail2Ban заблокирует его на срок, указанный в настройке времени блокировки.

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

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

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

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

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

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

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

Включение функции автобананала, в котором показаны настроенные настройки почты.">

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

Окно терминала, в котором отображается почтовое уведомление от Fail2ban.

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

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

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

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

Доступно множество других действий, но охватить их все в это

Изменение длины окна входа по умолчанию

tps://www.fail2ban.org/wiki/index.php/MANUAL_0_8" target="_blank" rel="noopener" title="прочитать обо всех доступных действиях">прочитать обо всех доступных действиях в документации Fail2ban.

Раздел терминала, в котором показаны действия по умолчанию для Fail2ban.

Включение настройки для конкретной службы

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

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

Окно терминала, показывающее образец файла фильтра.

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

ls /etc/fail2ban/filter.d
Окно терминала, показывающее файлы фильтров, доступные для Fail2ban.

Как только вы определитесь с

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

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

sudo nano /etc/fail2ban/jail.local

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

Часть терминала, показывающая новое пространство для настройки Fail2ban.

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

# Comments: use '#' for comment lines and ';' (following a space) for inline comments
 
[sshd]
enabled = true
 
[nginx-bad-request]
enabled = true
 
[bitwarden]
enabled = true
 
[INCLUDES]
Раздел терминала, в котором показаны все включенные службы фильтрации.

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

sudo systemctl restart fail2ban

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

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

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

На машине для утилизации попробуйте подключиться по SSH к вашему серверу Fail2ban, используя имя пользователя «admin». Замените «your_server_ip_address» фактическим IP-адресом вашего сервера Fail2ban.

ssh admin@your_server_ip_address

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

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

Окно терминала, показывающее Fail2ban в действии.

Помимо использования ssh, вы также можете протестировать другие файлы фильтров в Fail2ban, активировав их «состояние сбоя». В моем случае я использую фильтр «nginx-bad-request», который определяет, есть ли хост, который переполняет сервер недействительными запросами.

Окно терминала, показывающее фильтр неверных запросов.

Зная это, вы можете протестировать эту функцию, намеренно отправляя пустые запросы на ваш веб-сервер с помощью Curl:

curl -H "User-Agent:" -H "Host:" https://yourwebsite.com -v
Окно терминала, показывающее простой неверный запрос.<

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

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

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

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

sudo iptables -S | grep f2b

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

Включение настройки для конкретной службы-address-fail2ban.png" alt="Окно терминала, показывающее отклоненный IP-адрес в iptables.">

Совет : вам также следует используйте SELinux для защиты вашего сервера 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-сервер, используя другие инструменты для защиты от подобных форм атак.

Автор изображения: Unsplash . Все изменения и скриншоты Рамсеса Реда.

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

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

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

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

Как разблокировать IP-адрес?

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

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

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

ПОХОЖИЕ СТАТЬИ

Популярные записи