Настройка LDAP авторизации#

Термины и определения#

ГОСТ Р 58833-2020 НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ. Защита информации. ИДЕНТИФИКАЦИЯ И АУТЕНТИФИКАЦИЯ.

  • Идентификация - действия по присвоению субъектам и объектам доступа идентификаторов и/или по сравнению предъявляемого идентификатора с перечнем присвоенных идентификаторов.

  • Аутентификация - действия по проверке подлинности субъекта доступа и/или объекта доступа, а также по проверке принадлежности субъекту доступа и/или объекту доступа предъявленного идентификатора доступа и аутентификационной информации.

  • Авторизация (санкционирование доступа) - Предоставление субъекту доступа прав доступа, а также предоставление доступа в соответствии с установленными правилами управления доступом.

Настройка#

Для настройки авторизации через LDAP в Apache2 с использованием модуля mod_authnz_ldap, выполните следующие шаги:

Установка необходимых модулей#

  • установите модули libapache2-mod-authnz-ldap и libapache2-mod-ldap:

sudo apt install libapache2-mod-authnz-ldap libapache2-mod-ldap

Предоставление доступа пользователю#

Предоставление доступа пользователю состоит из двух этапов.

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

Вторая этап - авторизация, на которой mod_authnz_ldap определяется, разрешен ли аутентифицированному пользователю доступ к рассматриваемому ресурсу. Этот этап также известен как фаза сравнения.

  • отредактируйте конфигурационный файл Apache2 или создайте новый конфигурационный файл для вашего сайта.

Пример конфигурации, для авторизации через LDAP FreeIPA:

<VirtualHost *:80>

    ServerName websrv.astra.bbb
    DocumentRoot /var/www/html

    # Директория, для которой требуется аутентификация и авторизация
    <Directory /var/www/html>
        AllowOverride None

        # GSSAPI аутентификация
        AuthType GSSAPI
        AuthName "GSSAPI"
        GssapiBasicAuth on
        GssapiAllowedMech krb5
        GssapiCredStore keytab:/etc/apache2/http.keytab
        GssapiLocalName On
        GssapiDelegCcacheDir /tmp
        GssapiDelegCcacheUnique On

        # LDAP авторизация
        # Включаем модуль авторизации LDAP
        AuthBasicProvider ldap

        # Указываем URL LDAP-сервера
        AuthLDAPURL "ldap://dc-01.astra.bbb:389/?krbPrincipalName:caseIgnoreMatch:?sub?(objectClass=person)"

        # Указываем DN и пароль для подключения к LDAP (если требуется)
        AuthLDAPBindDN "uid=service-01,cn=users,cn=accounts,dc=astra,dc=bbb"
        AuthLDAPBindPassword "12345678"
        AuthLDAPGroupAttributeIsDN on

        # Разрешаем доступ только пользователям прошедшим Kerberos аутентификацию и LDAP авторизацию
        <RequireAll>
            Require valid-user
            Require ldap-attribute memberOf="cn=org-01,cn=groups,cn=accounts,dc=astra,dc=bbb"
        </RequireAll>
    </Directory>

    Alias /error/ /var/www/error/
    ErrorDocument 401 /error/401.html

    LogLevel debug
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    AddDefaultCharset utf-8

</VirtualHost>
  • перезапустить службу apache2:

sudo systemctl restart apache2

Примечание

  • просмотр логов ошибок apache2:

sudo tail -f /var/log/apache2/error.log
  • просмотр логов доступа apache2:

sudo tail -f /var/log/apache2/access.log