1 мин на чтение

Открыл сервер наружу: зачем тут fail2ban

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

Например недоступность базы данных, которая встретит тебя таким сообщением в админке :

Mongo Express с запиской о выкупе в базе данных

Зачем

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

В интернет легко уезжают MongoDB, Redis, PostgreSQL, тестовый API, метрики, dev-сервер или админка, которую поднимали “на пять минут”. Эти пять минут потом живут дольше некоторых pet-проектов.

Некоторые сервисы как например Mongo Express не надо ломать, достаточно подобрать дефолтный пароль: admin:pass root:example admin:admin Нашел порт, зашел, увидел данные. Это не всегда личная атака. Чаще сервер просто попал в очередной обход.

Для безопасности нужно сразу переносить дефолтный порт ssh на какой-либо другой, и делать приложения доступными только через ssh -L чтобы из вне к ним нельзя было достучаться. Для остальных систем есть ingress адреса доступные внтури системы при работе с кубером

Где помогает fail2ban

Fail2Ban полезен там, где есть понятная повторяющаяся ошибка. Например, кто-то шесть раз подряд не смог войти по SSH. Fail2ban видит это в логах и временно банит IP через firewall.

Механика простая:

  • читает лог;
  • находит повторяющиеся неудачные попытки;
  • добавляет правило блокировки;
  • через заданное время снимает бан.

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

Но это не волшебная кнопка “сделать безопасно”. Если Mongo Express открыт без нормальной защиты, fail2ban может вообще не увидеть проблемы. Нет ошибки входа, нет фильтра, нет события для бана. Человек или бот просто зашел в открытую дверь.

Firewall закрывает лишние двери. Fail2ban бьет по рукам тех, кто слишком настойчиво дергает ручку там, где вход вообще разрешен.

Минимальный порядок действий я бы держал таким:

  1. Закрыть все входящие порты по умолчанию.
  2. Открыть наружу только то, что точно нужно пользователям.
  3. SSH перевести на ключи и ограничить доступ.
  4. Базы и админки убрать во внутреннюю сеть.
  5. Включить fail2ban хотя бы для SSH.
  6. Иногда смотреть ss -tulpn и вспоминать, зачем вообще открыт каждый порт.

Метки:

Дата изменения: