Fail2Ban - это широко используемое программное обеспечение для предотвращения вторжений с открытым исходным кодом, которое помогает защитить серверы от попыток несанкционированного доступа и атак грубой силы. Она работает путем анализа файлов журналов и запрета IP-адресов, которые демонстрируют вредоносное поведение, например, слишком большое количество неудачных попыток входа в систему. Fail2Ban хорошо настраивается и может быть интегрирован с различными службами, такими как SSH, FTP, почтовые серверы и веб-приложения.
Ключевые особенности Fail2Ban
- Мониторинг журналов в режиме реального времени: Fail2Ban постоянно отслеживает файлы журналов и обнаруживает шаблоны подозрительной активности.
- Динамическое запрещение IP-адресов: После обнаружения вредоносного поведения Fail2Ban запрещает IP-адрес нарушителя, предотвращая дальнейшие попытки доступа.
- Гибкая продолжительность запрета: Вы можете установить продолжительность запрета в соответствии с вашими предпочтениями или политикой безопасности.
- Настраиваемые правила фильтрации: Fail2Ban предоставляет предварительно созданные правила фильтрации для многих распространенных служб, но вы также можете создать свои собственные для удовлетворения конкретных потребностей.
- Поддержка нескольких служб: Fail2Ban можно использовать с широким спектром сервисов, таких как SSH, FTP, SMTP, IMAP, Apache и др.
- Уведомления по электронной почте: Получайте уведомления по электронной почте, когда IP-адрес запрещен, что позволит вам оставаться в курсе событий безопасности.
- Белые списки: Определите доверенные IP-адреса, которые никогда не должны быть запрещены, обеспечивая бесперебойный доступ для авторизованных пользователей.
Fail2Ban является популярным выбором среди администраторов серверов благодаря своей простоте, эффективности и тому, что для его работы требуется минимум ресурсов. Его высокая настраиваемость позволяет адаптировать его к уникальным требованиям каждой серверной среды.
Следующее руководство продемонстрирует, как установить Fail2Ban на Ubuntu 22.04 Jammy Jellyfish или Ubuntu 20.04 Focal Fossa с помощью менеджера пакетов APT и терминала командной строки, а также даст несколько дополнительных советов по настройке первых шагов по защите вашего сервера.
Шаг 1: Обновление Ubuntu
Перед началом процесса установки необходимо обновить систему, чтобы обеспечить плавную установку и избежать возможных конфликтов. Для этого выполните следующую команду в терминале:
1 | sudo apt update && sudo apt upgrade |
Шаг 2: Установите Fail2ban
Fail2Ban доступен в репозитории Ubuntu по умолчанию, что делает процесс установки простым и понятным. Выполните следующую команду, чтобы начать установку:
1 | sudo apt install fail2ban |
Шаг 3: Включить и активировать Fail2ban
По умолчанию Fail2Ban не включен и не активирован после установки. Чтобы запустить службу и включить ее при загрузке системы, выполните следующую команду:
1 | sudo systemctl enable fail2ban --now |
Шаг 4: Проверка состояния службы Fail2Ban
После успешной установки Fail2Ban важно проверить состояние его службы. Служба Fail2Ban должна быть включена и запущена по умолчанию после установки. Выполните следующую команду для проверки статуса:
1 | systemctl status fail2ban |
Шаг 5: Настройки резервного копирования Fail2ban
После установки Fail2Ban важно установить и настроить его в соответствии с условиями вашего сервера. Fail2Ban поставляется с двумя конфигурационными файлами по умолчанию, расположенными по адресам /etc/fail2ban/jail.conf и /etc/fail2ban/jail.d/defaults-debian.conf.
Не изменяйте эти файлы напрямую. Они служат в качестве исходных файлов и будут заменены во время любых будущих обновлений Fail2Ban.
Чтобы сохранить пользовательские настройки, создайте копии конфигурационных файлов с расширением .local. Fail2Ban будет отдавать предпочтение чтению файлов .local, а не .conf. Создавая файлы .local, вы гарантируете, что ваши настройки не будут потеряны во время обновлений, и у вас всегда будет свежая копия для возврата в случае неправильной конфигурации.
Выполните следующую команду, чтобы создать копию файла jail.conf:
1 | sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local |
Теперь у вас есть резервная копия исходного файла конфигурации, и вы можете безопасно настраивать параметры Fail2Ban, редактируя файл jail.local, не беспокоясь о потере изменений во время будущих обновлений.
Шаг 6: Настройка Fail2ban
После создания резервной копии исходного конфигурационного файла, пришло время изменить настройки в файле jail.local, чтобы удовлетворить специфические требования безопасности вашего сервера.
Редактирование файла конфигурации
Чтобы отредактировать файл jail.local с помощью редактора nano, выполните следующую команду:
1 | sudo nano /etc/fail2ban/jail.local |
Инкремент времени запрета
Включите параметр Ban Time Increment, чтобы увеличить продолжительность бана для повторных нарушителей. Например, если время запрета по умолчанию составляет один час, вы можете увеличить его до пяти часов после пяти повторных запретов. Для этого необходимо задать множитель для логики увеличения времени бана.
Пример:
1 2 3 4 | # Множители времени бана bantime.increment = true bantime.factor = 2 bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor |
Белые списки IP-адресов в Fail2ban
Чтобы внести в белый список определенные IP-адреса, откомментируйте строку ignoreip и добавьте нужные IP-адреса, разделив их пробелами или запятыми. В белый список также могут быть внесены диапазоны IP-адресов.
Пример:
1 | ignoreip = 127.0.0.1/8 ::1 123.45.67.89 (пример IP-адреса) |
Настройка времени бана по умолчанию
По умолчанию Fail2Ban банит злоумышленника на 10 минут после пяти неудачных попыток в течение 10-минутного окна. Вы можете настроить эти параметры по умолчанию, но рекомендуется установить пользовательское время бана и лимиты повторных попыток для разных тюрем.
Пример:
1 2 3 4 5 6 7 8 9 | [DEFAULT] # "bantime" - это количество секунд, в течение которых хост находится под запретом. bantime = 10m # Хост забанен, если он сгенерировал "maxretry" в течение последних секунд "findtime". findtime = 10m # "maxretry" - это количество отказов, прежде чем хост будет забанен. maxretry = 5 |
Оповещения/сообщения по электронной почте
Настройте Fail2Ban на отправку уведомлений по электронной почте с отчетами whois на указанный адрес электронной почты. Вы также можете настроить различные варианты отчетов, например, отправку писем провайдерам черных списков или провайдеру злоумышленника.
Пример:
1 2 | destemail = admin@example.com sender = fail2ban@example.com |
Тюрьмы Fail2ban
Jails содержат заранее определенные фильтры и действия для различных серверных приложений. Вы можете включать, отключать или настраивать джейлы в зависимости от потребностей вашего сервера.
Чтобы включить jail, добавьте enabled = true в соответствующем разделе jail.
Пример:
1 2 3 4 5 6 | [apache-badbots] enabled = true port = http,https logpath = %(apache_access_log)s bantime = 48h maxretry = 1 |
Вы также можете добавить пользовательские действия или использовать действия из каталога action.d, обновив строку banaction в разделе jail.
Пример:
1 2 3 4 5 6 7 8 | [apache-botsearch] enabled = true port = http,https logpath = %(apache_error_log)s banaction = action_mw cloudflare bantime = 72h maxretry = 1 |
После завершения настройки Fail2Ban перезапустите службу, чтобы применить изменения:
1 | sudo systemctl restart fail2ban |
Шаг 7: Как запретить/разрешить запрет с помощью команд Fail2Ban
После настройки Fail2Ban вы можете управлять IP-запретами с помощью команды fail2ban-client. Вам могут понадобиться привилегии sudo, в зависимости от вашей конфигурации.
Запретить IP-адрес:
Чтобы запретить IP-адрес вручную для определенного джейла (например, apache-botsearch), используйте следующую команду:
1 | sudo fail2ban-client set apache-botsearch banip [ip адрес] |
Разблокировать IP-адрес:
Чтобы отменить запрет IP-адреса для определенного джейла (например, apache-botsearch), используйте следующую команду:
1 | sudo fail2ban-client set apache-botsearch unbanip [ip адрес] |
Доступ к справке:
Чтобы получить доступ к меню справки и просмотреть дополнительные настройки или команды, используйте следующую команду:
1 | sudo fail2ban-client -h |
Другие примеры:
Проверка состояния определенного джейла:
1 | sudo fail2ban-client status apache-botsearch |
Перезагрузите конфигурацию без перезапуска службы Fail2Ban:
1 | sudo fail2ban-client reload |
Проверьте список запрещенных IP-адресов для конкретной тюрьмы:
1 | sudo fail2ban-client get apache-botsearch banned |
Установите пользовательское время запрета для определенного IP-адреса в тюрьме:
1 | sudo fail2ban-client set apache-botsearch bantime [время_в_секундах] --banip [ip адресс] |
Эти команды предоставляют вам необходимые инструменты для эффективного управления IP-запретами с помощью Fail2Ban. Не забудьте заменить [ip адресс] на фактический IP-адрес, который вы хотите запретить или разбанить, и замените apache-botsearch на соответствующее имя тюрьмы в зависимости от вашей конфигурации.
Шаг 8: Как проверять/контролировать журналы Fail2Ban
Очень важно контролировать и просматривать журналы Fail2Ban, чтобы убедиться, что ваши тюрьмы работают правильно. По умолчанию журналы Fail2Ban можно найти в /var/log/fail2ban.log.
Мониторинг журналов в реальном времени
Чтобы просмотреть журналы в реальном времени и заметить любые проблемы во время работы на сервере, используйте команду tail -f:
1 | tail -f /var/log/fail2ban.log |
Эта команда позволяет отслеживать изменения в журналах в режиме реального времени.
Поиск конкретной информации в журналах
Вы также можете использовать команду grep для поиска определенной информации в журналах, например, IP-адресов, агентов-пользователей или ошибок.
Пример пользователя-агента:
1 | grep "Bing" /var/log/fail2ban.log |
Пример ошибки:
1 | grep "error" /var/log/fail2ban.log |
Пример IP-адреса:
1 | grep "123.123.123.123" /var/log/fail2ban.log |
Эти примеры демонстрируют различные способы фильтрации и поиска журналов с помощью команд терминала. Регулярный просмотр журналов Fail2Ban поможет вам поддерживать безопасность вашего сервера и убедиться, что ваши тюрьмы работают как положено.
Шаг 9: Как удалить (деинсталлировать) Fail2Ban
Если вы решили удалить Fail2Ban из своей системы, вы можете легко удалить его, выполнив следующие шаги:
Деактивируйте службу Fail2Ban
Если служба Fail2Ban все еще активна, вам нужно сначала отключить ее:
1 | sudo systemctl disable fail2ban --now |
Эта команда отключит службу Fail2Ban и остановит ее работу.
Удаление Fail2Ban из вашей системы
После отключения службы вы можете удалить Fail2Ban с помощью следующей команды:
1 | sudo apt remove fail2ban |
Эта команда удалит Fail2Ban вместе с его системными зависимостями и связанными данными.
Заключение
В целом, установка Fail2Ban на Ubuntu - это простой процесс, который значительно повышает безопасность вашего сервера. Выполняя описанные шаги, вы сможете эффективно защитить свой сервер от атак методом перебора и других вредоносных действий. Настройка Fail2Ban в соответствии с вашими специфическими требованиями, мониторинг журналов и обновление Fail2Ban гарантируют, что ваш сервер будет оставаться безопасным в течение долгого времени.