Настройка Apache2 для работы Duplicati за прокси

Вопрос или проблема

Duplicati по любой причине не будет работать, если вы попытаетесь проксировать корневую папку, поэтому домен на главный IP, как было обсуждено здесь:
https://github.com/duplicati/duplicati/issues/1932

Единственное решение — это проксировать каждую подпапку и отключить страницу входа, которая находится в корневой папке. Теперь, когда я отключил вход и использую токен навсегда, мне понадобится второй метод аутентификации, чтобы защитить мою панель управления Duplicati.

Итак, у меня есть несколько папок, связанных с Duplicati, и они находятся за прокси. Теперь я хочу вторую аутентификацию от Apache с использованием .htpasswd.

Это моя текущая конфигурация:

ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes On
# Добавить заголовок Authorization
<IfModule mod_headers.c>
    RequestHeader set Authorization "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV"
</IfModule>
ProxyPass "/api" "http://localhost:8200/api"
ProxyPass "/customized" "http://localhost:8200/customized"
ProxyPass "/img" "http://localhost:8200/img"
ProxyPass "/ngax" "http://localhost:8200/ngax"
ProxyPass "/oem" "http://localhost:8200/oem"
ProxyPass "/package" "http://localhost:8200/package"
ProxyPassReverse "/api" "http://localhost:8200/api"
ProxyPassReverse "/ngax" "http://localhost:8200/ngax"
ProxyPass "/notifications" "ws://localhost:8200/notifications"
ProxyPassReverseCookieDomain localhost:8200 example.domain.com
ProxyPassReverseCookiePath / /

# Включить mod_rewrite
RewriteEngine On
# Совпадение с POST запросами к /api/v1/auth/refresh и перехват
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^/api/v1/auth/refresh$
RewriteRule ^ - [L,R=200]

# Обслуживание статического JSON ответа только для /api/v1/auth/refresh
<Location "/api/v1/auth/refresh">
    Header always set Content-Type "application/json"
    SetEnvIf Request_URI "^/api/v1/auth/refresh$" STATIC_RESPONSE
    ErrorDocument 200 "{\"AccessToken\":\"eyJhbGciOiJIUzI1\"}"

</Location>

если я добавлю защищенное правило для этой корневой папки, это даст мне петлю аутентификаций при попытке подключиться к домену.

<Location "/">
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /var/.htpasswd
    Require valid-user
</Location>

если я попробую любую из подпапок, которые находятся за прокси, он никогда не покажет диалог и папка останется без защиты:

<Location "/ngax/">
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /var/.htpasswd
    Require valid-user
</Location>

Ответ или решение

Конфигурация Apache2 для использования Duplicati за прокси-сервером требует внимания к деталям ввиду некоторых ограничений, присущих этому программному обеспечению. Как указывалось в обсуждениях, например, в теме на GitHub, Duplicati имеет проблемы с проксированием корневой директории напрямую, что может вызвать многочисленные ошибки при попытке работы напрямую через IP-адрес. Ваша задача состоит в том, чтобы обеспечить безопасное подключение к панели управления Duplicati посредством второго метода аутентификации через Apache с использованием файла .htpasswd.

Теория:

При работе за прокси-сервером, приложению может потребоваться дополнительная защита и механизмы аутентификации для защиты доступа. В данном случае, часть пользователей обходят проблему с корневой директорией, проксируя каждую поддиректорию отдельно и отключая первоначальную страницу входа в систему. Однако, такой подход требует введения второго метода аутентификации для защиты данных. Это можно сделать через базовую аутентификацию Apache, используя файл .htpasswd, чтобы обеспечить дополнительный уровень безопасности.

Пример:

На текущий момент, ваш конфигурационный файл содержит несколько ProxyPass и ProxyPassReverse директив, позволяющих проксировать поддиректории, такие как "/api", "/ngax" и другие к локальному серверу Duplicati. Также вы добавляете заголовок Authorization, который помогает с аутентификацией в некоторых случаях. Однако, когда вы пытаетесь применить правила аутентификации Apache к корневой директории (или даже к поддиректории), вы сталкиваетесь либо с бесконечным циклом запросов на аутентификацию, либо Apache просто не предлагает окно для ввода пароля.

Применение:

Для настройки аутентификации с использованием .htpasswd за прокси вы можете предпринять следующие шаги:

  1. Разделение маршрута прокси и аутентификации:

    • Убедитесь, что заголовки и аутентификация настроены правильно. Пока ваш сервер Duplicati использует авторизацию через токены, наличие двух механизмов авторизации может вызывать конфликты. Вам следует удостовериться, что заголовок ‘Authorization’ верен и применим только там, где это необходимо.
  2. Настройка .htpasswd для поддиректорий:

    Если конфигурация для поддиректорий не работает, убедитесь, что mod_auth_basic и mod_authn_file загружены модулем Apache. Это можно проверить с помощью команд apache2ctl -M. В случае их неактивности загрузите их с помощью a2enmod.

    В вашем конфигурационном файле условия для поддиректорий, таких как "/ngax", могут быть заданы таким образом:

    <Location "/ngax">
       AuthType Basic
       AuthName "Restricted Area"
       AuthUserFile /var/www/.htpasswd
       Require valid-user
    </Location>

    Убедитесь, что файл .htpasswd находится в указанном месте и имеет правильные разрешения. Этот файл должен быть создан с помощью команды htpasswd и содержать правильные пары имен пользователей и паролей.

  3. Обработка проблемы циклической аутентификации:

    Проблема с бесконечным циклом аутентификации может возникать из-за неправильного определения областей, защищаемых от аутентификации. Постарайтесь не указывать <Location "/"> для базовой аутентификации, так как это может привести к конфликту с уже настроенными правилами проксии и заголовков.

  4. Индивидуальная конфигурация для REST API:

    Для вашего REST API "/api/v1/auth/refresh", который предоставляет токены аутентификации, может быть особый случай, требующий отдельного специального конфигурации или исключения из аутентификации.

Заключение:

Эти действия следует применять осторожно, чтобы не нарушить основной функционал Duplicati. Важно чтобы ваша конфигурация файла Apache была рассчитана на предотвращение конфликтов с веб-прокси и той безопасностью, которую вы пытаетесь реализовать. Дублирование механизмов безопасности иногда требует общей оптимизации для избежания накладок и конфликтов в работе различных модулей и приложений. Если затрудняетесь с реализацией, обратитесь к документации Apache и ресурсам поддержки Duplicati для уточнения, например, как именно можно конфигурировать исключения и дополнительные условия для лучшей совместимости.

Оцените материал
Добавить комментарий

Капча загружается...