Этот способ не заблокирует доступ к Immich в текущей конфигурации, но позволяет отслеживать попытки подбора паролей. Чтобы блокировка работала так, как ожидается, необходимо настроить передачу заблокированных IP-адресов на обратный прокси и их блокировку непосредственно на нём — например, как описано здесь: Fail2ban Resolve Proxi VPN, либо использовать полученные IP-адреса для других механизмов защиты.
Чтобы получать логи Immich, необходимо модифицировать Docker Compose‑файл, настроив логирование контейнера с использованием встроенного драйвера Docker под названием syslog.
В compose‑файл добавляем:
logging:
driver: syslogПосле этого перезапускаем контейнер: нажимаем “Stop”, затем “Up”.
- Переходим в раздел “Система”, затем “Плагины”.
- В строке поиска вводим
openmediavault-fail2ban. - Выделяем пакет, нажав на него правой кнопкой мыши.
- Нажимаем на кнопку “Установить“.
- Дождавшись завершения установки, нажимаем “Закрыть”.
- Переходим в “Сервисы” → “Fail2ban” → “Настройки”.
- Ставим флаг “Включить”.
- Нажимаем “Сохранить”.
- Дожидаемся появления окна об отложенном изменении конфигурации и нажимаем в нём на кнопку “Применить”.
-
Подключаемся к серверу по SSH любым удобным способом.
-
Создаём фильтр
immich.confв каталоге/etc/fail2ban/filter.dсо следующим содержимым:[Definition] failregex = ^.Failed login attempt for user . from ip address (?:::ffff:)?<HOST>.*$ ignoreregex =
-
Создаём jail-файл
immich.confв каталоге/etc/fail2ban/jail.dсо следующим содержимым:[immich] enabled = true filter = immich # название файла фильтра без расширения maxretry = 3 # количество неуспешных попыток авторизации findtime = 10m # период анализа логов bantime = 1d # время блокировки backend = systemd port = 2283 # порт, на котором запущен сервис action = # действие для блокировки/разблокировки
Примечание: Если название файла с фильтром из предыдущего пункта была изменено, понадобится отредактировать переменную
filter, указав название файла без расширения. Название jail-файла можно менять. -
Перезапускаем Fail2ban командой
systemctl restart fail2ban. -
Проверяем статус сервиса командой
systemctl status fail2ban. Если видим Active: active (running) — всё работает. -
Проверяем список jail’ов, для этого выполняем команду
fail2ban-client status, получаем примерно следующее:Status |- Number of jail: 1 # количество jail`лов `- Jail list: immich # активные фильры
-
Заходим на Immich и намеренно вводим неверные учётные данные больше 2-х раз.
-
Проверяем статус jail, для
immichкомандойfail2ban-client status immich. Если всё работает, увидим примерно следующее (заблокированным будет IP-адрес клиента, ожидаемо что у каждого он будет отличатся):Status for the jail: immich |- Filter | |- Currently failed: 0 | |- Total failed: 3 | `- Journal matches: `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 192.168.1.33 неуспешных попытки, заблокирован IP-адрес: 192.168.1.3.
Разблокируем его командой
fail2ban-client set immich unbanip <ip-адрес>.
Было настроено обнаружение IP‑адресов злоумышленников. Блокировка в текущей конфигурации работать не будет, но полученные IP‑адреса можно использовать для блокировки на обратном прокси — например, как описано в Fail2ban Resolve Proxi VPN, либо для других механизмов защиты.