Fail2ban следит за журналом входов на сервер. Если с какого-то IP-адреса слишком часто пытаются подобрать пароль, он на время блокирует этот адрес.
Даже если вы уже входите по SSH-ключам, fail2ban полезен. Он отсекает ботов, разгружает журналы и помогает быстрее заметить, если происходит что-то необычное.
1. Установите fail2ban
Команды выполняются на сервере.
# Обновляем список пакетов и ставим fail2ban.
# python3-systemd нужен, чтобы fail2ban умел читать системный
# журнал
sudo apt update
sudo apt install -y fail2ban python3-systemd# fail2ban лежит в дополнительном репозитории EPEL, подключаем
# его
sudo dnf install -y epel-release
# Ставим fail2ban
sudo dnf install -y fail2ban2. Создайте файл настроек
Основной файл настроек fail2ban при обновлениях перезаписывается, поэтому свои настройки кладут в отдельный файл jail.local.
# Создаём свой файл настроек и открываем его в редакторе
sudo nano /etc/fail2ban/jail.localВставьте в него такие настройки.
[sshd]
# Включаем защиту SSH
enabled = true
# Порт SSH. Если вы его меняли, укажите свой номер, например
# 2222
port = ssh
# Читаем журнал входов через systemd. Так fail2ban работает и
# там,
# где нет файла /var/log/auth.log, например в Debian 12
backend = systemd
# Сколько неудачных попыток входа разрешено
maxretry = 5
# За какой промежуток времени считаются попытки
findtime = 10m
# На сколько блокировать IP-адрес нарушителя
bantime = 1hЧтобы сохранить файл, нажмите Ctrl + O и Enter, а чтобы выйти из редактора, Ctrl + X.
3. Запустите fail2ban
# Включаем автозапуск fail2ban и сразу запускаем его
sudo systemctl enable --now fail2ban
# Перезапускаем, чтобы он точно подхватил наш файл настроек
sudo systemctl restart fail2ban
# Смотрим состояние защиты SSH
sudo fail2ban-client status sshdВ ответе вы увидите две главные строки.
Total failed показывает, сколько было неудачных попыток входа.
Banned IP list показывает, какие адреса сейчас заблокированы.
Если сервер уже какое-то время в интернете, в списке почти наверняка появятся первые «гости».
Полезные команды
# Посмотреть заблокированные адреса
sudo fail2ban-client status sshd
# Разблокировать адрес, например если вы сами ошиблись с
# паролем.
# Вместо IP_АДРЕС подставьте нужный адрес
sudo fail2ban-client set sshd unbanip IP_АДРЕС
# Перезапустить fail2ban после изменения настроек
sudo systemctl restart fail2banЕсли заблокировали вас самих
Если fail2ban заблокировал ваш собственный адрес, подключитесь с другого интернета, например с мобильного, или откройте сервер кнопкой Консоль в списке серверов в личном кабинете. Затем разблокируйте свой адрес командой выше. Через час блокировка в любом случае снимется сама.
Для панели 3X-UI
У 3X-UI есть своя встроенная настройка fail2ban, она описана в статье о настройке VLESS + TLS + XHTTP.
Наши ресурсы
Telegram-канал: https://t.me/f3cloud_news
Сайт хостинга: https://f3cloud.com