Главная страница » Настройка сервера » Fail2Ban: разбан IP и проверка статуса — практическое руководство
Опрос
Вы занимаетесь разработкой сайтов?
Выделенные и виртуальные серверы в Европе

Fail2Ban: разбан IP и проверка статуса — практическое руководство

Автор: administrator Дата: Сегодня, 21:04 Категория: Настройка сервера

Введение: зачем нужен Fail2Ban и что пошло не так

Fail2Ban мониторит логи (sshd, exim, nginx), банит IP через iptables при неудачных попытках входа. Но иногда банит "своих": тестовый IP, CDN, мониторинг.

Типичный сценарий из логов:

text
fail2ban-client status exim Status for the jail: exim |- Filter | |- Currently failed: 1 | |- Total failed: 150 | `- File list: /var/log/exim4/mainlog `- Actions |- Currently banned: 5 |- Total banned: 42 `- Banned IP list: 185.189.14.130 94.26.115.245 ...

IP 185.189.14.130 забанен exim-jail'ом. Команды из вашего примера решают проблему, но вручную чистить iptables — риск сломать цепочку. Разберём по шагам.

Команда 1: Проверка общего статуса Fail2Ban

bash
fail2ban-client status

Вывод:

text
Status |- Number of jail: 3 `- Jail list: sshd, exim, nginx-http-auth

Зачем: Видите все активные jail'ы. Если exim нет — проверьте /etc/fail2ban/jail.local.

Команда 2: Статус конкретного jail'а (exim)

bash
fail2ban-client status exim

Полный разбор вывода:

  • Currently failed: 1 — активных срабатываний фильтра сейчас

  • Total failed: 150 — всего попыток за время работы

  • File list — логи, которые мониторит (/var/log/exim4/mainlog)

  • Currently banned: 5 — забаненных IP в данный момент

  • Banned IP list — список IP для разбана

Совет: grep "185.189.14.130" /var/log/exim4/mainlog — почему забанили.

Команда 3: Разбан IP через Fail2Ban (основной метод)

bash
fail2ban-client set exim unbanip 185.189.14.130

Что происходит:

  1. Fail2Ban удаляет IP из внутренней базы banned

  2. Автоматически чистит iptables-правило

  3. Логирует в /var/log/fail2ban.log

Проверка: Повторите status exim — IP исчезнет из списка.

Для всех jail'ов сразу:

bash
fail2ban-client set ALL unbanip 185.189.14.130

Ручная чистка iptables (когда Fail2Ban глючит)

Если unbanip не сработал, удалите правила вручную:

bash
# Найти цепочку Fail2Ban iptables -L | grep f2b # Удалить правило для IP (2 варианта из примера) iptables -D f2b-exim -s 185.189.14.130 -j DROP iptables -D fail2ban-exim -s 185.189.14.130 -j DROP # Перезагрузить Fail2Ban (сохранит состояние) fail2ban-client reload

Осторожно: -D удаляет первое совпадение. Сначала iptables -L f2b-exim -n --line-numbers — посмотрите номера строк.

Настройка exim-jail для предотвращения

Создайте /etc/fail2ban/jail.d/exim.conf:

text
[exim] enabled = true port = smtp,ssmtp,submission filter = exim logpath = /var/log/exim4/mainlog maxretry = 5 bantime = 3600 findtime = 600 ignoreip = 127.0.0.1/8 185.189.14.130 # ваши IP

Перезапуск: systemctl restart fail2ban

Полный workflow разбана (скрипт)

Сохраните как unban-ip.sh:

bash
#!/bin/bash IP=$1 if [ -z "$IP" ]; then echo "Usage: $0 <IP>" exit 1 fi echo "=== Проверка статуса ===" fail2ban-client status echo "=== Разбан $IP во всех jail'ах ===" fail2ban-client set ALL unbanip $IP echo "=== Проверка iptables ===" iptables -L | grep $IP && echo "Остатки удалите вручную" echo "=== Готово. Проверьте: fail2ban-client status ==="

Использование: chmod +x unban-ip.sh && ./unban-ip.sh 185.189.14.130

Сравнение методов разбана

Метод Автоматическая чистка iptables Работает при сбое F2B Скорость Риск сломать цепочку
set exim unbanip ✅ Да ❌ Нет 0.1с ❌ Нет
iptables -D ❌ Нет ✅ Да 0.01с ⚠️ Риск
Скрипт ✅ Да ✅ Да 0.5с ✅ Минимальный
fail2ban-client reload ✅ Да ✅ Да ⚠️ Все jail'ы

Типичные ошибки и решения

  • "jail exim not found": fail2ban-client status — включите в jail.local

  • IP не разбанивается: systemctl status fail2ban — сервис упал?

  • Правила iptables остаются: iptables -t filter -L f2b-exim -n -v

  • Exim продолжает банить: Добавьте IP в ignoreip jail'а

Мониторинг: watch -n 5 'fail2ban-client status' — каждые 5 сек.

Заключение

Fail2Ban спасает от брутфорса, но требует ухода. Команды status, set unbanip и ручной iptables -D — ваш арсенал. Автоматизируйте скриптом, настройте ignoreip для "своих", мониторьте логи. Exim-jail с maxretry=5 и bantime=1h оптимален для почты.

Сохраните скрипт, добавьте в PATH — проблема решена за 5 сек. Тестируйте на staging, делитесь в комментах своими jail'ами!

  • Не нравится
  • 0
  • Нравится
Просмотров: 3 Напечатать Жалоба
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Написать комментарий
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: