Начнем с метафоры. Представьте себе крепость: высокие стены и крепкие ворота отгораживают ее от нежелательных гостей, но всегда найдутся те, кто попытается преодолеть стены или выбить ворота.
Точно так же и наша цифровая крепость, особенно серверы, сталкивается с постоянными угрозами. Одними из таких ворот являются Secure Shell (SSH) – протокол, обеспечивающий безопасный удаленный доступ Поэтому, как ворота требуют охраны и систем мониторинга, так и SSH нуждается в мерах защиты от потенциальных злоумышленников.
Представляем вам Fail2Ban – бдительного часового для ваших серверов. Это один из самых эффективных щитов против попыток несанкционированного доступа, особенно грубой силы.
Что такое Fail2Ban?
Fail2Ban – это программное обеспечение с открытым исходным кодом, защищающее от автоматизированных вредоносных действий, таких как атаки «грубой силой» на серверы.
Одна из наиболее ценных особенностей Fail2Ban заключается в том, что он действует на опережение. Другими словами, вместо того чтобы ждать атаки, Fail2Ban предлагает свой подход, выявляя и блокируя потенциальные угрозы в режиме реального времени.
Прелесть Fail2Ban заключается в его простоте и адаптивности. Хотя он часто используется для защиты SSH его функциональность не ограничивается этим протоколом. Fail2Ban может быть настроен на мониторинг лог-файлов любого сервиса, обеспечивая универсальное решение для таких сервисов, как FTP SMTP, веб-серверы и т.д. Кроме того, он не требует больших ресурсов, поэтому не нагружает производительность вашего сервера, что очень важно для серверов, обрабатывающих большие объемы транзакций или взаимодействий.
Принцип работы Fail2Ban
Прежде всего, давайте вкратце объясним, что такое брутфорсинг. Это тип кибератаки, при котором злоумышленник пытается получить несанкционированный доступ к системе или сервису, систематически перебирая все возможные комбинации паролей или ключей шифрования до тех пор, пока не будет найдена правильная.
В связи с этим Fail2Ban отслеживает журналы сервера на предмет выявления определенных закономерностей, свидетельствующих об атаках, например, повторных неудачных попыток входа в систему в течение короткого промежутка времени.
На основе предопределенных или пользовательских правил, называемых «фильтрами», Fail2Ban выявляет закономерности, свидетельствующие об атаке, и автоматически запускает определенное действие. Наиболее распространенным из них является временный запрет IP-адреса злоумышленника, применение правил межсетевого экрана и предотвращение дальнейших попыток атаки.
Ключевой особенностью Fail2Ban является концепция «тюрьмы» – специальных политик мониторинга для серверных служб, сочетающих в себе фильтр и действия. Вы можете иметь различные jails для разных сервисов (например, один для SSH другой для FTP и т.д.).
Каждый jail определяет, какой файл журнала отслеживать, какие шаблоны искать, и какие действия предпринимать при обнаружении этих шаблонов.
После блокировки на определенный срок IP-адрес автоматически разблокируется, что позволяет легальным пользователям, которые могли быть временно заблокированы, например, из-за забытого пароля, повторить попытку.
Установка Fail2Ban
Давайте теперь установим Fail2Ban, что, как вы видите, довольно просто. Пожалуйста, используйте команду, соответствующую используемому вами дистрибутиву Linux.
Debian / Ubuntu
sudo apt install fail2ban
Данные действия не требуются, так как служба активируется автоматически после установки.
RHEL / Rocky Linux / Alma Linux / Fedora
Поскольку Fail2Ban находится в репозитории EPEL, сначала необходимо добавить его в систему, если вы этого еще не сделали:
sudo dnf install epel-release
Затем установить Fail2Ban и включить запуск службы при загрузке:
sudo dnf install fail2ban sudo systemctl enable fail2ban
openSUSE
sudo zypper in fail2ban
Настройка Fail2Ban для SSH
После установки основным конфигурационным файлом является «/etc/fail2ban/jail.conf». Однако лучшие практики не рекомендуют изменять его напрямую. Вместо этого мы скопируем его, создав новый с расширением «.local». Почему? Все просто – это позволит избежать проблем со слиянием при обновлении. Итак, давайте сделаем это.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
При перезапуске службы Fail2Ban сначала считывается файл «jail.conf», затем «jail.local», причем более поздние настройки имеют приоритет над более ранними.
Теперь перейдем к самому интересному – настройке Fail2Ban. Откройте файл «jail.local» в терминальном текстовом редакторе.
sudo nano /etc/fail2ban/jail.local
Прокрутите вниз, пока не найдете часть «[sshd]», которая выглядит так, как показано ниже.
Замените существующее содержимое части «[sshd]» на следующее:
[sshd] enabled = true port = ssh backend = systemd maxretry = 3 findtime = 300 bantime = 3600 ignoreip = 127.0.0.1
Окончательная версия должна выглядеть так, как показано ниже. Вам нужно знать, что означают эти опции? Не бойтесь – мы подробно объясним каждую из них далее.
- enabled – Определяет, активна ли тюрьма или нет.
- port – Указывает порт(ы), который(ые) необходимо контролировать. Принимается любой номер порта или имя сервиса, например, «ssh», «22», «2200» и т.д.
- backend – Указывается бэкенд, используемый для получения информации о модификации файлов. Поскольку все современные Linux-системы используют службу протоколирования systemd мы указываем ее в качестве бэкенда.
- maxretry – Количество неудачных попыток с IP до того, как он будет забанен.
- findtime – Время (в секундах), в течение которого «maxretry» неудачных логинов приведет к бану. Мы задали 300 секунд, т.е. 5 минут.
- bantime – Время (в секундах), в течение которого IP должен оставаться забаненным. В нашем случае мы задали 3600 секунд, что означает, что в течение следующего часа все последующие запросы (не только к порту SSH) с этого IP-адреса будут блокироваться.
- ignoreip – Позволяет составить белый список IP-адресов, которые должны игнорироваться. Это гарантирует, что заданные IP-адреса, даже если они превысят количество неудачных попыток, указанное в параметре «maxretry», не будут заблокированы.
Вот и все. Сохраните файл и выйдите, затем перезапустите службу Fail2Ban.
sudo systemctl restart fail2ban
После этого убедитесь, что со службой все в порядке.
sudo systemctl status fail2ban
Тестирование и Мониторинг
Попробуйте несколько раз войти по SSH с другого компьютера на сервер, на котором вы только что установили и настроили Fail2Ban. После третьей неудачной попытки доступ должен быть заблокирован.
Вы, вероятно, уже задаетесь вопросом, как контролировать происходящее внутри. Хорошая новость заключается в том, что Fail2Ban имеет отличные встроенные средства для этой цели. Чтобы увидеть IP-адреса, которые в данный момент заблокированы, выполните следующую команду:
sudo fail2ban-client status sshd
Если пойти еще дальше и просмотреть правила iptables, то можно обнаружить, что Fail2Ban создал цепочку («f2b-sshd «), в которую вставил рассматриваемые IP-адреса. Они будут автоматически удалены оттуда по истечении таймаута, указанного в опции «bantime».
sudo iptables -L -n
Чтобы вручную снять запрет со всех IP-адресов во всех тюрьмах, выполните следующее:
sudo fail2ban-client unban --all
Для отдельного адреса команда должна быть такой:
sudo fail2ban-client unban <ip-address>
Разумеется, команда fail2ban-client
имеет множество других опций, предоставляющих большие возможности и гибкость. Если вам интересно ознакомиться с ними подробнее, посмотрите здесь.
Важно иметь в виду
Несмотря на то, что Fail2Ban – отличная программа, она не так полезна, если ваш SSH-сервер настроен только на аутентификацию с открытым ключом, поскольку войти в систему с паролем невозможно. Подробнее об этом здесь.
Далее следует помнить, что Fail2Ban не заменяет собой VPN, обеспечивающую безопасность доступа к серверу. Поэтому, если нет крайней необходимости, не открывайте доступ к своим службам через Интернет.
Заключение
Защита сервера всегда должна быть главным приоритетом. Учитывая, что SSH является распространенной точкой входа для многих злоумышленников, она требует особого внимания.
В этом руководстве мы рассмотрели простые шаги по установке и настройке Fail2Ban для мониторинга и защиты SSH от повторяющихся попыток входа в систему.
Настроив этот инструмент, вы добавляете важный уровень безопасности, который может предотвратить потенциальные вторжения. Поэтому оставайтесь в безопасности, обновляйте информацию и всегда будьте активны в стратегии защиты вашего сервера.
Спасибо за внимание! В заключение мы рекомендуем обратиться к разделу Fail2Ban GitHub page для получения дополнительной помощи или ценной информации.
Комментарии (0)