Защита серверов через Fail2Ban и DenyHosts

БЕСПЛАТНЫЙ МАСТЕР-КЛАСС!

ДЕНЬ 1 - Какие основные навыки сисадмина?

ДЕНЬ 2 - Настройка домена Windows Server 2016

ДЕНЬ 3 - Администрирование 1С:Предприятие

 

Регистрируйтесь!

Старт уже завтра!

или запишись через ВК



Fail2Ban или DenyHosts: Выбираем стражу для вашего сервера

В мире информационной безопасности сервер, подключенный к интернету, — это как крепость, постоянно подвергающаяся осаде. Одной из самых распространенных и навязчивых угроз являются атаки методом грубой силы (Brute-Force). Злоумышленники с помощью автоматизированных скриптов пытаются подобрать логины и пароли к вашим службам, будь то SSH, FTP, веб-формы или панели управления.

Для отражения этих атак были созданы специализированные инструменты. Два самых известных и проверенных временем — это Fail2Ban и DenyHosts. Оба они решают одну задачу, но делают это по-разному. Давайте разберемся, в чем их отличия, сильные и слабые стороны, и какой инструмент выбрать в 2024 году.


Fail2Ban: Универсальный и гибкий защитник

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

Как работает Fail2Ban?

  1. Чтение логов: Fail2Ban в реальном времени отслеживает логи указанных служб (например, /var/log/auth.log для SSH).
  2. Фильтры и регулярные выражения: Она использует "фильтры" — файлы с регулярными выражениями, которые ищут в логах шаблоны, сигнализирующие о неудачной попытке (например, "Failed password", "Invalid user").
  3. Срабатывание действий: Когда количество неудачных попыток с одного IP-адреса за определенное время превышает заданный лимит, Fail2Ban выполняет "действие".
  4. Бан нарушителя: Стандартное действие — добавить IP-адрес нарушителя в локальный файрвол (чаще всего iptables или firewalld) на заданный срок (например, на 10 минут, час или день). Все последующие соединения с этого IP будут блокироваться.

Ключевые особенности Fail2Ban:

  • Мультисервисность: Может защищать SSH, Apache, Nginx, ProFTPD, WordPress, Roundcube и десятки других служб. Сообществом созданы сотни готовых фильтров.
  • Гибкость настройки: Вы можете тонко настроить время бана, количество попыток, окно времени и создавать собственные цепочки действий.
  • Разные действия: Бан — не единственный вариант. Можно настроить отправку email-уведомлений, добавление IP в черный список, отправку запроса через API в облачный файрвол (например, CloudFlare) и многое другое.
  • Работа с любым файрволом: Поддерживает iptables, firewalld, nftables, а также файрволы на BSD-системах.
  • Ведение журналов: Ведет собственные логи о заблокированных IP-адресах.

Преимущества Fail2Ban:

  • Универсальность: Один инструмент для защиты всей системы.
  • Мощное сообщество: Огромная база готовых конфигураций и фильтров.
  • Высокая кастомизируемость: Можно адаптировать под любые требования.

Недостатки Fail2Ban:

  • Сложность настройки: Для новичка конфигурация может показаться запутанной.
  • Большая нагрузка: При неправильной настройке или очень высокой нагрузке может потреблять значительные ресурсы, постоянно анализируя логи.
  • Зависимость от файрвола: Если файрвол отключен или настроен некорректно, Fail2Ban не сможет выполнять свою основную функцию.

DenyHosts: Специализированный снайпер для SSH

DenyHosts — это более старый и узкоспециализированный инструмент, написанный на Python. Его единственная и главная цель — защита службы SSH. Он был создан в то время, когда SSH-атаки были основным вектором угроз.

Как работает DenyHosts?

Принцип работы очень похож на Fail2Ban, но с важными отличиями в фокусе и механике.

  1. Чтение логов SSH: DenyHosts мониторит логи аутентификации SSH (/var/log/secure, /var/log/auth.log).
  2. Обнаружение попыток: Находит неудачные попытки входа по паролю.
  3. Бан через /etc/hosts.deny: Вместо использования файрвола, DenyHosts добавляет IP-адрес злоумышленника в файл /etc/hosts.deny, который используется демоном tcpwrappers для контроля доступа. Запись выглядит так: sshd: 192.168.1.100.
  4. Синхронизация черных списков (ключевая фигура): DenyHosts умеет отправлять IP-адреса атакующих на центральные серверы и, в свою очередь, получать от них списки "плохих" IP, заблокированных другими пользователями. Это создает коллективный иммунитет.

Ключевые особенности DenyHosts:

  • Узкая специализация: Только для SSH.
  • Использование tcpwrappers: Блокировка через /etc/hosts.deny — более простой и универсальный механизм, не зависящий от конкретного файрвола.
  • Сетевой интеллект: Возможность синхронизировать черные списки между серверами.
  • Простота: Конфигурационные файлы проще и понятнее, чем у Fail2Ban.

Преимущества DenyHosts:

  • Простота установки и настройки: Идеален для новичков, которым нужна базовая защита SSH.
  • Эффективность против распространенных атак: Отлично справляется с массовыми сканированиями и атаками на SSH.
  • Коллективная защита: Общие черные списки повышают безопасность всех участников сети.

Недостатки DenyHosts:

  • Только SSH: Не защитит ваш веб-сервер, FTP или почту.
  • Устаревший механизм блокировки: tcpwrappers считается устаревшей технологией и не поддерживается некоторыми современными дистрибутивами и службами.
  • Меньшая гибкость: Нельзя тонко настроить временные интервалы или создать сложные сценарии действий.
  • Зависимость от центральных серверов: Если серверы синхронизации отключены, вы лишаетесь части функционала. Также есть теоретический риск попадания в белый список ложноположительных срабатываний.

Сравнительная таблица: Fail2Ban vs DenyHosts

КритерийFail2BanDenyHosts
Основное назначение Защита множества служб (SSH, HTTP, FTP и т.д.) Защита исключительно SSH
Механизм блокировки Через файрвол (iptables, firewalld) Через /etc/hosts.deny (tcpwrappers)
Язык программирования Python Python
Гибкость и настройка Очень высокая Ограниченная
Сложность освоения Средняя/Высокая Низкая
Совместное использование списков Нет (требует сторонних скриптов) Да, встроенная функция
Актуальность и поддержка Активно развивается Развитие практически остановилось
Идеальный случай использования Сервер с множеством публичных служб Простой сервер, где важен только SSH, и нужна "защита из коробки"

Так что же выбрать?

Однозначный ответ для подавляющего большинства случаев: Fail2Ban.

Вот почему:

  1. Универсальность — это необходимость. Современный сервер редко ограничивается только SSH. На нем почти всегда работает веб-сервер, база данных, почтовый сервер или другие службы. Fail2Ban защищает их все, а DenyHosts — нет.
  2. Актуальность технологий. Механизм tcpwrappers, на котором полагается DenyHosts, считается legacy. Многие современные приложения и дистрибутивы отказываются от его поддержки. Блокировка на уровне файрвола (как у Fail2Ban) — это современный, надежный и стандартный подход.
  3. Активное развитие. Fail2Ban активно развивается, получает обновления, исправления уязвимостей и новые функции. Развитие DenyHosts замерло много лет назад, что делает его потенциально небезопасным в долгосрочной перспективе.
  4. Сообщество и документация. Из-за своей популярности Fail2Ban имеет огромное сообщество, тонны руководств и готовых решений для любой проблемы.

Когда DenyHosts еще может быть оправдан?

  • На очень старых системах, где нельзя обновить софт.
  • Если вам нужна максимально простая и быстрая установка защиты именно для SSH, и вы понимаете все ее ограничения.

Вывод

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

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

```

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