Безопасность

Почему не работает IP Limit Management в 3x-ui

Решение проблем с блокировкой IP в панели 3x-ui. Настройка fail2ban, исправление путей логов и проверка iptables.

2 ответа 10 просмотров

Почему не работает 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 не работает из-за несоответствия пути лог-файла в конфигурации fail2ban и реального расположения логов. Ключевые причины: неверный путь в logpath (указан /var/log/x-ui/3xipl.log, а логи пишутся в ./access.log), отсутствие корректного фильтра для парсинга событий и возможные ошибки в цепочке правил iptables. Для исправления требуется синхронизировать пути и проверить статус сервиса fail2ban.


Содержание


Основные причины неисправности

Проблема возникает из-за трёх критических несоответствий в текущей настройке. Во-первых, в файле jail.d/3x-ipl.conf указан путь /var/log/x-ui/3xipl.log, но логи панели 3x-ui пишутся в ./access.log — это приводит к тому, что fail2ban не видит событий для анализа. Во-вторых, отсутствует корректный фильтр 3x-ipl.conf, который должен парсить шаблоны ошибок аутентификации. В-третьих, в цепочке INPUT iptables не добавлены правила для обработки трафика панели, из-за чего блокировка не применяется.

Ещё один скрытый нюанс: параметр maxretry=2 требует двух неудачных попыток за 32 секунды, но если логи не попадают в мониторинг, триггер срабатывает. Проверьте, не переполнена ли директория /var/log/x-ui — отсутствие прав на запись в 3xipl-banned.log может маскировать ошибки.


Проверка конфигурации лог-файлов

Шаг 1: Сопоставьте пути логов

Откройте конфигурацию 3x-ui и убедитесь, куда пишутся логи аутентификации. Для панели 3x-ui стандартный путь — ./x-ui/access.log (относительно рабочей директории). В вашем случае указан ./access.log, что может означать путь в корневой директории панели. Сравните с настройками в jail.d/3x-ipl.conf:

diff
- logpath = /var/log/x-ui/3xipl.log
+ logpath = /путь/к/x-ui/access.log

Шаг 2: Проверьте права доступа

Выполните:

bash
ls -la /путь/к/x-ui/access.log

Если владелец файла — root, а fail2ban работает от пользователя fail2ban, добавьте группу fail2ban в права:

bash
chown root:fail2ban /путь/к/x-ui/access.log
chmod 640 /путь/к/x-ui/access.log

Шаг 3: Убедитесь, что логи содержат ошибки

Проверьте, есть ли в логе записи об ошибках аутентификации:

bash
grep "failed" /путь/к/x-ui/access.log

Если вывод пуст, включите детальное логирование в настройках 3x-ui или проверьте работу фильтра.


Диагностика работы fail2ban

Статус джейла

Выполните:

bash
fail2ban-client status 3x-ipl

Если джейл не активен, вы увидите:

Status for the jail: 3x-ipl
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/x-ui/3xipl.log
`- Actions
 |- Currently banned: 0
 `- Total banned: 0

Это подтверждает, что fail2ban не видит событий из-за неверного пути лога.

Тестовый запуск

Проверьте, как fail2ban парсит логи:

bash
fail2ban-regex /путь/к/x-ui/access.log /etc/fail2ban/filter.d/3x-ipl.conf

Если в выводе много строк Ignored, значит фильтр 3x-ipl.conf не соответствует формату логов. Пример корректного шаблона для 3x-ui:

ini
[Definition]
failregex = ^.*"login" failed for.*IP <HOST>.*

Исправление конфигурации

1. Обновите путь лога в jail.d/3x-ipl.conf

ini
[3x-ipl]
enabled = true
logpath = /путь/к/x-ui/access.log # Укажите реальный путь
maxretry = 3
findtime = 60
bantime = 1h

2. Добавьте фильтр 3x-ipl.conf в filter.d

Создайте файл /etc/fail2ban/filter.d/3x-ipl.conf:

ini
[Definition]
failregex = ^.*"login" failed for.*IP <HOST>.*
ignoreregex =

3. Проверьте цепочку iptables

Убедитесь, что правило добавлено в правильную цепочку. Для 3x-ui обычно используется порт 54321:

bash
iptables -L INPUT -n | grep 54321

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

bash
iptables -A INPUT -p tcp --dport 54321 -j f2b-3x-ipl

Тестирование решения

Этап 1: Перезапустите сервис

bash
systemctl restart fail2ban

Этап 2: Симулируйте ошибку

Попробуйте войти в панель с неправильным паролем 3 раза за 60 секунд. Проверьте логи:

bash
tail -f /var/log/fail2ban.log

Должны появиться строки:

Ban <IP> for 3600 seconds

Этап 3: Проверьте блокировку

Выполните:

bash
iptables -L f2b-3x-ipl -n

Если IP в списке, проверьте доступ к панели с этого адреса — соединение должно обрываться.


Источники

  1. Fail2ban Official Documentation — Детальная настройка фильтров и джейлов: https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Jails
  2. 3x-ui GitHub Repository — Официальные рекомендации по логированию: https://github.com/vaxilu/x-ui
  3. Iptables Manual — Правила работы с цепочками и блокировками: https://linux.die.net/man/8/iptables

Заключение

Проблема с IP Limit Management в 3x-ui решается синхронизацией путей лог-файлов, настройкой корректного фильтра и проверкой цепочек iptables. Ключевые шаги: обновите logpath до реального расположения access.log, добавьте фильтр для парсинга ошибок аутентификации и убедитесь, что fail2ban активен через fail2ban-client status. Проверьте блокировку через iptables — если IP появляется в списке, система работает. Не забудьте тестировать с нескольких устройств, так как мобильные провайдеры часто используют динамические IP, что может маскировать эффект блокировки.

U

Пользователь столкнулся с проблемой в 3x-ui, где IP Limit Management не блокирует подключения, несмотря на включенный лимит. Конфигурации:

  • 3x-ipl.conf в action.d содержит настройки для управления IP-лимитами
  • 3x-ipl.conf в jail.d имеет параметры: maxretry=2, findtime=32, bantime=30m

Проблема: Подключения с домашнего и мобильного интернета не блокируются, количество заблокированных IP равно 0.

Логи: Настроены в ./access.log, но в логах нет информации о блокировках.

Пользователь просит помочь определить причину и предложить решение.

Авторы
U
Системный администратор
Проверено модерацией
НейроОтветы
Модерация
Почему не работает IP Limit Management в 3x-ui