Apache 2.4 с авторизацией Kerberos и авторизацией LDAP

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

Я пытаюсь настроить репозиторий Apache SVN с аутентификацией Kerberos и авторизацией по членству в группе LDAP, так чтобы только пользователи, принадлежащие к определенной группе, могли получить к нему доступ. Аутентификация Kerberos сама по себе работает нормально, как и LDAP. Но я хотел бы объединить их таким образом, чтобы в конфигурации Apache не было учетных данных в открытом виде для привязки к директории LDAP. Моя текущая конфигурация (которая не работает) следующая:

LDAPVerifyServerCert Off

<Location /svn01>
        DAV     svn
        SVNParentPath   /var/www/svn01
        AuthType Kerberos
        Authname        "Test Repo"
        KrbMethodK5Passwd       On
        KrbAuthRealms           KOUKOU.LOCAL
        KrbSaveCredentials      On
        KrbServiceName          HTTP
        Krb5KeyTab              /etc/httpd/conf.d/svnusr.http.keytab
        AuthLDAPUrl ldaps://ad01.koukou.local:636/dc=koukou,dc=local?krbPrincipalName
        Require ldap-group CN=admins,CN=Users,DC=koukou,DC=local
</Location>

Я видел такую конфигурацию в интернете, но у меня она не работает. В браузере я получаю “Unauthorized”, а в журнале ошибок Apache я вижу:

[Thu Mar 02 09:55:21.817559 2017] [authnz_ldap:debug] [pid 10314] mod_authnz_ldap.c(838): [client 172.21.11.13:57737] AH01711: auth_ldap authorise: User DN not found, User not found

и

[Thu Mar 02 09:55:21.817605 2017] [authz_core:error] [pid 10314] [client XXX.XXX.XXX.XXX:57737] AH01631: user [email protected]: authorization failure for "/svn01/repo":

Что-то не так? Даже если я добавляю сегмент для привязки с учетными данными в конфигурации, я по-прежнему получаю вышеуказанные ошибки.

Версия Apache 2.4.6, CentOS 7.2 и Windows AD 2012R2 с функциональным уровнем 2008.

Спасибо заранее,
Ник

Для этой конкретной проблемы у меня это работает:

KrbLocalUserMapping On

Вам необходима как минимум эта версия: mod_auth_kerb-5.4
Больше об этом:
https://bugzilla.redhat.com/show_bug.cgi?id=970678
Кроме того, я использую и это:

Require valid-user

Больше об этом:
https://cwiki.apache.org/confluence/display/HTTPD/PasswordBasicAuth

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

Настройка Apache 2.4 с аутентификацией Kerberos и авторизацией LDAP — это сложная, но осуществимая задача. Давайте проанализируем вашу текущую конфигурацию и предложим некоторое решение, чтобы обеспечить безопасность вашего репозитория SVN, используя Kerberos для аутентификации и LDAP для управления доступом на основе групп.

Шаг 1: Подготовка окружения

Перед началом настройки убедитесь, что у вас установлены все необходимые модули Apache, в частности:

  • mod_auth_kerb (или mod_auth_gssapi, который является более новым)
  • mod_authnz_ldap
  • mod_ssl (если вы используете LDAPS)

Убедитесь, что Apache настроен для работы с Kerberos и что у вас есть правильный ключевой табулятор (keytab), чтобы избежать ввода паролей в plaintext.

Шаг 2: Обновленная конфигурация Apache

Давайте рассмотрим вашу первоначальную конфигурацию и внесем необходимые изменения:

LDAPVerifyServerCert Off

<Location /svn01>
    DAV svn
    SVNParentPath /var/www/svn01

    AuthType Kerberos
    AuthName "Test Repo"
    KrbMethodK5Passwd On
    KrbAuthRealms KOUKOU.LOCAL
    KrbSaveCredentials On
    KrbServiceName HTTP
    Krb5KeyTab /etc/httpd/conf.d/svnusr.http.keytab

    # Используйте правильный LDAP URL и атрибут
    AuthLDAPUrl "ldaps://ad01.koukou.local:636/dc=koukou,dc=local?samaccountname?sub?(objectClass=user)"

    # Проверка членства в группе
    Require ldap-group CN=admins,CN=Users,DC=koukou,DC=local
    Require valid-user
</Location>

Шаг 3: Разъяснение изменений

  1. AuthLDAPUrl: Убедитесь, что ваш URL LDAP правильно формируется. Я рекомендую использовать samaccountname, так как это распространённый атрибут для имен пользователей в Active Directory. Также проверьте, что фильтр суб-объекта (sub) корректен для вашей структуры LDAP.

  2. KrbLocalUserMapping: Добавьте KrbLocalUserMapping On в вашу конфигурацию Apache для сопоставления имен пользователей Kerberos с локальными именами пользователей Apache.

  3. Require valid-user: Эта директива позволяет любому аутентифицированному пользователю получить доступ к ресурсу, если он соответствует требованиям в Require ldap-group.

Шаг 4: Логирование и отладка

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

LogLevel debug mod_authnz_ldap:debug mod_auth_kerb:debug

Сотрудничайте с журналами ошибок Apache, чтобы найти дополнительные подсказки о том, что именно может вызывать проблемы. Ошибки, связанные с «User DN not found» могут указывать на проблемы с конфигурацией LDAP или с самим фильтром.

Заключение

Данная конфигурация предоставляет вам рабочий пример настройки аутентификации и авторизации для Apache с использованием Kerberos и LDAP. Всегда тестируйте ваши изменения в тестовой среде перед развертыванием в продуктиве. Не забывайте, что возмещение кода и конфигурации — это нормальная часть процесса, так как каждая установка может иметь свои уникальные аспекты.

Если вам нужна дополнительная помощь, не стесняйтесь задавать вопросы!

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

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