Fail2Ban + iptables: защита VPS от брутфорса и взломов по SSH

ГлавнаяFail2Ban + iptables: защита VPS от брутфорса и взломов по SSH

Содержание

Если ваш VPS работает в интернете и доступен по SSH, он обязательно попадёт под прицел автоматических сканеров и взломщиков. Один из самых простых и надёжных способов защититься — использовать Fail2Ban. Эта система следит за логами и временно блокирует IP-адреса, с которых происходят подозрительные попытки входа. В этом руководстве вы узнаете, как установить и настроить Fail2Ban на Ubuntu или Debian, чтобы эффективно отражать brute-force атаки.


Что делает Fail2Ban и как он помогает

Fail2Ban сканирует логи (например, SSH) и автоматически блокирует IP, с которых поступает слишком много ошибочных попыток входа. Он работает в паре с iptables, создавая временные правила фильтрации. Это значительно снижает риск подбора паролей, особенно при открытом порту 22.

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

  • Автоматическая блокировка нарушителей;
  • Простая интеграция с системами на Linux;
  • Гибкая настройка: исключения, длительность блокировки, лимиты попыток;
  • Подходит как для Ubuntu 22.04, так и для Debian.

Установка Fail2Ban

На Ubuntu/Debian установка занимает пару минут:

sudo apt update sudo apt install fail2ban -y

Проверьте, что служба работает:

sudo systemctl status fail2ban

Первая настройка: jail.local

Все изменения лучше вносить в отдельный файл

jail.local
. Это защитит вашу конфигурацию при обновлениях.

Скопируйте шаблон:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Откройте

jail.local
:

sudo nano /etc/fail2ban/jail.local

Найдите блок

[sshd]
и отредактируйте его:

[sshd] enabled = true port = ssh logpath = %(sshd_log)s maxretry = 4 bantime = 900 findtime = 600

Что это значит:

  • enabled = true
    — включаем фильтр для SSH;
  • maxretry = 4
    — IP блокируется после 4 неудачных входов;
  • bantime = 900
    — блокировка на 15 минут;
  • findtime = 600
    — учитываются попытки за последние 10 минут.

Исключения и белый список (whitelist)

Fail2Ban позволяет указать адреса, которые не должны блокироваться:

ignoreip = 127.0.0.1 ::1 ваш_IP_или_подсеть

Это особенно полезно, если вы подключаетесь к серверу из одного и того же офиса или через VPN.


Как посмотреть и разблокировать IP

Узнать текущие баны:

sudo fail2ban-client status sshd

Удалить IP из блокировки:

sudo fail2ban-client set sshd unbanip 123.123.123.123

Защита веб-интерфейсов: расширенная настройка

Помимо SSH, Fail2Ban можно применить и к другим сервисам. Например, для защиты WordPress-админки (

/wp-login.php
):

Создайте фильтр:

sudo nano /etc/fail2ban/filter.d/wp-login.conf

Добавьте:

[Definition] failregex = <HOST> .* "POST /wp-login.php ignoreregex =

Подключите в конфигурации:

[wp-login] enabled = true port = http,https filter = wp-login logpath = /var/log/apache2/access.log maxretry = 5 bantime = 1800

Мониторинг логов Fail2Ban

Fail2Ban пишет всё в отдельный лог:

tail -n 50 /var/log/fail2ban.log

Можно следить в реальном времени:

tail -f /var/log/fail2ban.log

Автозапуск и управление службой

Чтобы перезапустить Fail2Ban после изменений:

sudo systemctl restart fail2ban

Добавьте автозапуск при загрузке:

sudo systemctl enable fail2ban

Полезные советы

  • Не ставьте слишком низкий
    maxretry
    , чтобы случайно не забанить себя.
  • Регулярно просматривайте логи Fail2Ban и IP-таблицы.
  • Добавляйте IP в
    ignoreip
    , если вы подключаетесь с одного и того же места.
  • Используйте Fail2Ban вместе с UFW для усиленной фильтрации трафика.
  • Следите, чтобы логи (
    fail2ban.log
    ) не переполняли диск — настраивайте logrotate.

Fail2Ban — простой и мощный инструмент, который позволяет существенно повысить безопасность VPS за счёт автоматической блокировки попыток подбора пароля. Установив и настроив его один раз, вы обеспечите защиту своему серверу на годы вперёд.

👉 Разворачивая VPS на CloudVPS.by, вы получаете надёжную платформу с полной поддержкой Ubuntu, Debian и отличную техподдержку. Не забудьте добавить Fail2Ban в свой чеклист по безопасности!