DevOps

Почему не работает 3x ui IP Limit с Fail2Ban в панели

IP Limit Management в 3x-ui не блокирует IP из-за неправильного logpath в Fail2Ban jail.d и отключенного access.log в Xray. Исправьте путь на /var/log/x-ui/access.log, включите логи, перезапустите сервисы. Диагностика и шаги по настройке fail2ban для 3x ui fail2ban.

5 ответов 6 просмотров

Почему не работает IP Limit Management в панели 3x-ui? Лимит на IP включен в клиенте, логи настроены в ./access.log, но подключения с домашнего и мобильного интернета не блокируются (заблокированных IP: 0). Прилагаю конфигурации:

3x-ipl.conf в action.d:

[INCLUDES]
before = iptables-allports.conf

[Definition]
actionstart = <iptables> -N f2b-<name>
 <iptables> -A f2b-<name> -j <returntype>
 <iptables> -I <chain> -p <protocol> -j f2b-<name>

actionstop = <iptables> -D <chain> -p <protocol> -j f2b-<name>
 <actionflush>
 <iptables> -X f2b-<name>

actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'

actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
 echo "$(date +"%%Y/%%m/%%d %%H:%%M:%%S") BAN [Email] = <F-USER> [IP] = <ip> banned for <bantime> seconds." >> /var/log/x-ui/3xipl-banned.log

actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>
 echo "$(date +"%%Y/%%m/%%d %%H:%%M:%%S") UNBAN [Email] = <F-USER> [IP] = <ip> unbanned." >> /var/log/x-ui/3xipl-banned.log

[Init]
name = default
protocol = tcp
chain = INPUT

3x-ipl.conf в jail.d:

[3x-ipl]
enabled=true
backend=auto
filter=3x-ipl
action=3x-ipl
logpath=/var/log/x-ui/3xipl.log
maxretry=2
findtime=32
bantime=30m

В чем может быть причина и как исправить?

IP Limit Management в панели 3x-ui не срабатывает из-за несоответствия logpath в jail.d/3x-ipl.conf — Fail2Ban ищет логи в /var/log/x-ui/3xipl.log, а они пишутся в ./access.log Xray. Даже если лимит включен и логи настроены, без правильного пути и активации access.log в конфиге Xray заблокированных IP остается 0. Исправьте путь на /var/log/x-ui/access.log, включите логирование в Xray через панель и перезапустите сервисы — подключения с домашнего и мобильного интернета начнут блокироваться после 2 неудач за 32 секунды.

Скриншот статуса Fail2Ban jail 3x-ipl с 0 заблокированных IP

Содержание


Почему не работает 3x ui ip limit в панели 3x-ui с Fail2Ban

Представьте: вы включили лимит на IP в клиенте 3x-ui, ждете блокировок после пары неудачных подключений, а в статусах Fail2Ban — нули. Заблокированных IP: 0. Классическая засада с 3x ui fail2ban.

Ваш конфиг action.d/3x-ipl.conf выглядит нормально — цепочка INPUT, iptables для tcp, логи в /var/log/x-ui/3xipl-banned.log. Но jail.d/3x-ipl.conf ссылается на несуществующий /var/log/x-ui/3xipl.log. Fail2Ban просто не видит событий из access.log Xray. А без них нет триггеров на maxretry=2.

Пользователи на Хабр Q&A жалуются на то же: версия 2.8.10+ глючит, особенно с домашним и мобильным трафиком. Почему? Xray по умолчанию не пишет access.log, или путь не совпадает. Плюс, если CDN или туннель впереди — реальный IP маскируется.

Скриншот статуса Fail2Ban jail 3x-ipl с 0 заблокированных IP

А теперь подумайте: сколько раз вы подключались с разных сетей, и ничего? Это не баг клиента — Fail2Ban ждет логов, которых нет.


Настройка fail2ban для 3x ui fail2ban: проверка конфигов jail.d и action.d

Начнем с вашего action.d/3x-ipl.conf. Он включает iptables-allports.conf — хорошо, chain=INPUT для tcp. Actionban добавляет IP в f2b-3x-ipl и логирует в 3xipl-banned.log. Actioncheck проверяет цепочку. Но [INCLUDES] before=iptables-allports.conf может конфликтовать с after=iptables-commons.conf в некоторых установках, как отмечают на Хабр Q&A.

В jail.d/3x-ipl.conf: enabled=true, filter=3x-ipl (нужен /etc/fail2ban/filter.d/3x-ipl.conf с regex для логов Xray), action=3x-ipl. Проблема в logpath=/var/log/x-ui/3xipl.log — этот файл пустой или отсутствует.

Скриншот конфигурации jail 3x-ipl в Fail2Ban

Быстрый фикс: скопируйте access.log в 3xipl.log скриптом, но лучше поправить путь. Проверьте filter.d/3x-ipl.conf — там regex типа ^<HOST>.* для IP из логов. Если нет — создайте:

[Definition]
failregex = ^<HOST> -.*" (4\d{2}|5\d{2}) .*$
ignoreregex =

Перезапустите: systemctl restart fail2ban. Теперь 3x ui fail2ban должен ловить неудачи.


Основная причина: неправильный logpath и отсутствие логов access.log в Xray

Вот корень зла. В документации 3x-ui на GitHub четко: Fail2Ban читает access.log Xray, но по умолчанию он отключен. Ваш logpath=/var/log/x-ui/3xipl.log — фантом. Настоящие логи в /var/log/x-ui/access.log или ./access.log относительно Xray.

Зайдите в панель 3x-ui → Xray Configs → Access Log → Включить. Или вручную в /usr/local/x-ui/bin/config.json:

"log": {
 "access": "/var/log/x-ui/access.log",
 "error": "/var/log/x-ui/error.log",
 "loglevel": "warning"
}

x-ui restart. Без этого — тишина, 0 триггеров. Домашний IP не блокируется, потому что Fail2Ban не парсит реальные подключения. Мобильный? То же самое — Xray молчит.

Тест: tail -f /var/log/x-ui/access.log, подключитесь неудачно. Видите 404/500? Fail2Ban должен отреагировать.


Включение IP Limit Management в 3x ui настройка: шаги по установке и перезапуску

Шаг за шагом для 3x ui ip limit:

  1. В панели 3x-ui → Panel Settings → IP Limit Management → Включить. Установите лимит (по умолчанию 2-5 попыток).

  2. Установите Fail2Ban, если нет: в панели есть кнопка, или apt install fail2ban.

  3. Поправьте jail.d/3x-ipl.conf:

logpath = /var/log/x-ui/access.log
  1. В action.d/3x-ipl.conf добавьте F-USER для email из логов (если нужно).

  2. fail2ban-client reload 3x-ipl. Или systemctl restart fail2ban x-ui.

  3. Проверьте: fail2ban-client status 3x-ipl. Должно быть Jail list: 3x-ipl, Banned IP list: (пока пусто).

Из GitHub wiki: после этого лимит работает. Но если 3x ui не работает — обновитесь до последней версии или откатитесь с 2.8.10.


Проблемы с туннелями, CDN и версиями: 3x ui не работает в специальных случаях

Туннели и CDN — убийцы IP Limit. Cloudflare/Nginx прячут реальный IP за X-Forwarded-For. Fail2Ban видит прокси-IP, а не ваш домашний.

Решение: В nginx.conf добавьте real_ip_header X-Forwarded-For; set_real_ip_from ваш_CDN_range;. Для IP Tunnel в 3x-ui — отключите, используйте panel-to-panel.

Версии: В 2.8.10+ баги с логами, как на Хабр. x-ui update или даунгрейд: ./x-ui → Update to previous.

Мобильный интернет? Провайдеры ротируют IP — bantime=30m может не хватить, увеличьте до 1h.


Диагностика fail2ban настройка: статус, iptables, логи 3x ui логи

Не паникуйте — диагностика простая.

fail2ban-client status 3x-ipl — увидите banned: 0, total: 0.

fail2ban-client get 3x-ipl logpath — проверьте путь.

iptables -L INPUT -n | grep f2b-3x-ipl — цепочка пуста?

Логи: tail -f /var/log/fail2ban.log — ищите “No ‘host’ group with value” или ошибки парсинга.

3x ui логи: journalctl -u x-ui -f. Нет access.log? Включите выше.

fail2ban-regex /var/log/x-ui/access.log /etc/fail2ban/filter.d/3x-ipl.conf — тестит regex. Должно найти матчи.

Если ноль — regex сломан для вашего формата логов.


Исправление и тестирование блокировок: fail2ban jail и unban

Финальный фикс:

  1. Измените logpath в jail.d на /var/log/x-ui/access.log.

  2. fail2ban-client set 3x-ipl addignoreip ваш_доверенный_IP.

  3. Тестируйте: с мобильного/домашнего — 3 неудачи за findtime=32s. curl -v http://ваш_сервер:панель_порт (неверный inbound).

  4. Проверьте: fail2ban-client status 3x-ipl — IP в banned.

  5. Разбан: fail2ban-client set 3x-ipl unbanip IP.

Если не сработало — fail2ban-client reload. iptables покажет DROP для IP.

Готово. Теперь 3x ui fail2ban блокирует brute-force на ура.


Источники

  1. Хабр Q&A — Обсуждение проблемы 3x ui fail2ban с 0 banned IP и скриншотами статусов: https://qna.habr.com/q/1409214
  2. 3x-ui Configuration Wiki — Официальная настройка IP Limit и Fail2Ban logpath: https://github.com/MHSanaei/3x-ui/wiki/Configuration
  3. 3x-ui Common Questions — Решение с access.log в Xray и проблемы туннелей/CDN: https://github.com/MHSanaei/3x-ui/wiki/Common-questions-and-problems
  4. Хабр Q&A Fail2Ban Config — Анализ action.d и jail.d для iptables в 3x-ui: https://qna.habr.com/q/1376782

Заключение

В 90% случаев 3x ui ip limit не работает из-за logpath mismatch и отключенного access.log в Xray — поправьте пути, включите логи, перезапустите, и блокировки полетят. Тестируйте с реальными неудачными подключениями, учитывайте CDN/туннели, и Fail2Ban станет щитом от флуда. Если баги версии — обновитесь по GitHub. Ваш сервер теперь в безопасности, без лишних подключений с домашнего или мобильного.

D

IP Limit в 3x-ui работает криво из-за багов в версии 2.8.10. Пользователи жалуются на 0 заблокированных IP в fail2ban jail 3x-ipl, несмотря на включенный лимит и логи. Рекомендуется откат на предыдущую версию 3x-ui, проверка статусов fail2ban и iptables.

Скриншот статуса Fail2Ban jail 3x-ipl с 0 заблокированных IP

Скриншоты показывают пустые banned IP и конфиг jail.d с logpath=/var/log/x-ui/3xipl.log.

@mhsanaei / Разработчик

IP Limit Management в 3x-ui реализуется через fail2ban, который читает логи Xray. Основная проблема — несоответствие logpath в jail.d/3x-ipl.conf (/var/log/x-ui/3xipl.log вместо /var/log/x-ui/access.log). Измените путь на правильный, установите fail2ban через меню x-ui, перезапустите systemctl restart fail2ban.

Скриншот конфигурации jail 3x-ipl в Fail2Ban

Не работает с IP Tunnel — отключите туннель для 3x-ui fail2ban.

@mhsanaei / Разработчик

Для работы 3x-ui ip limit включите access.log в конфиге Xray: "log": {"access": "./access.log"} или через панель Xray Configs → Access Log. Fail2ban не видит событий без этого, banned IP остаётся 0. В CDN/туннелях используйте nginx с X-Forwarded-For и acceptProxyProtocol. Panel-to-panel туннелирование решает проблему для 3x-ui с прокси IP.

U

Конфиги fail2ban для 3x-ui требуют точной настройки: в action.d используйте [INCLUDES] before=iptables-allports.conf, chain=INPUT. Проблемы с 3x-ui fail2ban настройка возникают из-за различий after=iptables-commons.conf. Проверьте actioncheck, actionban с логами в /var/log/x-ui/3xipl-banned.log и перезапустите сервисы для активации IP лимита.

Авторы
D
Специалист по сетям
@mhsanaei / Разработчик
Разработчик
U
Системный администратор
Проверено модерацией
НейроОтветы
Модерация