fail2ban: Failed during configuration и отсутствующий файл журнала
Если в правиле fail2ban указан файл журнала, которого нет на машине, служба не запускается целиком. Частая ситуация: правило для apache на сервере с nginx или правило для почтовой службы, которая не установлена.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Файла журнала из правила нет
fail2ban проверяет доступность всех источников при запуске и отказывается работать при отсутствии любого.
-
Служба пишет в журнал systemd, а не в файл
На современных системах многие службы не ведут собственных файлов. Правило с указанием пути к файлу для них не работает.
-
Файл существует, но недоступен для чтения
fail2ban работает от root и обычно читает всё, но при жёсткой изоляции в unit-файле путь может быть закрыт.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Проверка всех правил: называет правило и проблемный файл.
sudo fail2ban-client -tСообщения службы при отказе запуска.
journalctl -u fail2ban -n 40 --no-pager | grep -iE "error|not found|failed"Список активных правил при работающей службе.
sudo fail2ban-client statusРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- fail2ban проверяет доступность всех источников при запуске и отказывается работать при отсутствии любого.
- Как проверить
-
Запустите проверку настроек: она называет файл и правило.
sudo fail2ban-client -t
- Как исправить
-
Отключите ненужное правило или укажите существующий файл. Правила по умолчанию удобно отключать в jail.local.
# /etc/fail2ban/jail.local # [apache-auth] # enabled = false
- Почему происходит
- На современных системах многие службы не ведут собственных файлов. Правило с указанием пути к файлу для них не работает.
- Как проверить
-
Посмотрите, куда пишет служба.
systemctl show sshd -p StandardOutput 2>/dev/null; ls -l /var/log/auth.log 2>/dev/null
- Как исправить
-
Переведите правило на чтение журнала systemd: параметр
backend = systemdвместо пути к файлу.# [sshd] # backend = systemd
- Почему происходит
- fail2ban работает от root и обычно читает всё, но при жёсткой изоляции в unit-файле путь может быть закрыт.
- Как проверить
-
Проверьте доступ и параметры изоляции.
sudo head -1 /var/log/auth.log systemctl show fail2ban | grep -E "Protect|ReadOnly"
- Как исправить
-
Разрешите путь через
ReadWritePaths=или ослабьте изоляцию для нужного каталога.
Пример вывода
Правило ссылается на журнал apache, которого нет. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× fail2ban.service - Fail2Ban Service
Active: failed (Result: exit-code) since Mon 2026-09-15 16:02:10 MSK; 2s ago
fail2ban-server[4400]: ERROR Failed during configuration: Have not found any log file for apache-auth jail
fail2ban-server[4400]: ERROR Async configuration of server failed
systemd[1]: fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION
Связанные ошибки
- No such file or directory в журнале службы Служба не находит файл или каталог. Разбор: путь, момент запуска, изоляция unit-файла, символические ссылки, приватный /tmp.
- status=255/EXCEPTION в systemd Код 255/EXCEPTION: программа завершилась с кодом 255 либо код используется для передачи аварийного завершения. Как различить случаи.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Docker: unable to configure the Docker daemon with file daemon.json Демон Docker не запускается из-за ошибки в /etc/docker/daemon.json: неверный JSON или неизвестный ключ.
- Docker: unable to configure the Docker daemon — конфликт -H и hosts Адрес прослушивания задан дважды: ключом -H в unit-файле и параметром hosts в daemon.json. Демон отказывается стартовать.
Где встречается чаще всего
Источники
- Документация fail2ban: правила и источники журналов
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено правилом apache-auth на сервере без apache.