LINUX.ORG.RU
решено ФорумAdmin

Настройка Apache+Kerberos+WSGI+ALD Ошибки аутентификации и чтения скрипта

 , , ,


0

1

На Astra Linux 1.6 пытаюсь настроить вывод мандатных меток в браузер. При выключенном Astra Mode выдает дефолтную страницу Apache «it`s works!», при включенном index.html. Тоесть WSGI ни в какую работать не хочет, пробовала с разными скриптами.

Логи: Apache

    astra_mode - ap_invoke_handler: user name is not set, referer: http://aldserver.name.ru/
    Authentication not configured

Kerberos:

    NEEDED_PREAUTH: user@NAME.RU for krbtgt/NAME.RU@NAME.RU, Additional pre-authentication required	

Конфиг Apache:

    <VirtualHost *:80>
            # имя web-сервера
            ServerName aldserver.name.ru 
     
            ServerAdmin webmaster@localhost
            # директория, в котором лежат скрипты приложения
            DocumentRoot /var/www/name.ru
     
            # указываем, какой скрипт запускать при обращении к aldserver.name.ru/
            WSGIScriptAlias / /var/www/name.ru/app.wsgi 
     
            # настройки для корректной авторизации через Kerberos
            <Directory /var/www/name.ru>
                    AuthType Kerberos
                    KrbAuthRealms REALM
                    KrbServiceName HTTP/aldserver.name.ru
                    Krb5Keytab /etc/apache2/keytab
                    KrbMethodNegotiate on
                    KrbMethodK5Passwd off
                    KrbSaveCredentials on
                    require valid-user
            </Directory>
             
            # для откладки
            LogLevel debug
     
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
     
    </VirtualHost>

App.wsgi:

    import sys
    import subprocess
    from os import getuid
    sys.path.insert(0, 'var/www/name.ru')
     
    def application(env, start_response):
            status = '200 OK'
            id = subprocess.check_output(['pdp-id'])
      
            output = "UID: " + str(getuid()) + "<br/><br/>" + id # возвращаем uid пользователя, заупустившего процесс и его мандатные атрибуты
            response_headers = [('Content-type', 'text/html'), ('Encoding', 'utf-8'), ('Content-Length', str(len(output)))]  # заголовки ответа
     
            start_response(status, response_headers)
     
            return [output]

В чем косяк? Пользователь введен в ALD, захожу на клиентскую машину с него. В браузере параметры negotiate прописаны.

Судя по сообщению «user name is not set», апач не может аутентифицировать пользователя. Т.е. проблема с аутентификацией.

А чего за огрызки вместо логов? Уверен, кроме «Additional pre-authentication required», там еще что-то должно быть.

И почему index.html показывает? Что, обработчик 500 ошибки настроен на index.html?

bigbit ★★★★★ ()
Последнее исправление: bigbit (всего исправлений: 1)
Ответ на: комментарий от bigbit

Еще логи в файле kdc.log

AS_REQ (3 etypes {32 18 23}) 192.168.75.20:ISSUE:authtime 1601973029, etypes {rep=32 tkt=32 ses=32},aldd/aldserver.name.ru@NAME.RU for krbtgt/NAME.RU@NAME.RU

TGS_REQ (3 etypes {32 18 23}) 192.168.75.20:ISSUE:authtime 1601973029, etypes {rep=32 tkt=32 ses=32},aldd/aldserver.name.ru@NAME.RU for ldap/aldserver.name.ru@NAME.RU

В файле kadmin_server.log

Request: kadm5_init, aldd/aldserver.name.ru@NAME.RU, addr=192.168.75.20, vers=3,flavour=6
Request: kadm5_init, aldd/aldserver.name.ru@NAME.RU, addr=192.168.75.21, vers=3,flavour=6
Request: kadm5_get_principal, user@NAME.RU, success, client=aldd/aldserver.name.ru@NAME.RU, service=kadmin/aldserver.name.ru@NAME.RU , addr=192.168.75.21

Обрабтчик 500 ошибки не настраивала. Машинка новая, там только как раз ald настроен и вот попытка теперь поднять apache с аунтефикацией и запуском скрипта. Куда копать, если проблема с аунтефикацией? понятно, что керберос, но вроде все по мануалам сделано (доки+наверное все что в сети есть), не очень понятно, что еще надо проверить

Irbis88 ()
Ответ на: комментарий от bigbit

Получилось! Для этого потребовалось:

  1. Отвязать дефолтный конфиг апача в /etc/apache2/sites-enabled
sudo a2dissite 000-default.conf

Привязать свой через a2ensite, если не был привязан.

  1. В конфинге керберос явно указать файл keytab

/ect/krb5.conf

[libdefaults] default_keytab_name = FILE:/etc/apache2/keytab
  1. Убрать все комментарии в скрипте wsgi.

Profit!)

Irbis88 ()
Ответ на: комментарий от Irbis88

Хорошо, что получилось, но расположение файла keytab лучше указывать в конфиге апача опцией Krb5KeyTab.

А то у тебя получилось, что апачевский keytab стал системным. Ломают апач - получают доступ к системному кейтабу.

bigbit ★★★★★ ()
Ответ на: комментарий от bigbit

Так ведь в Krb5KeyTab указывается апачевский keytab. Мне казалось Kerberos оттуда его берет и сам (или ald) генерирует в конфиг свой. Или он как-то из апачевского свой, другой keytab делает?

К слову, сейчас в krb5.conf нет моей строки, видимо ald пересоздало файл. Но все работает. Значит магия))

Irbis88 ()
Ответ на: комментарий от Irbis88

Так ведь в Krb5KeyTab указывается апачевский keytab.

Именно так. У тебя же апач аутентифицирует пользоваталей, значит, тебе нужен апачевский кейтаб. Если на этой машине Kerberos использует только апач, то пофиг, можешь делать как хочешь. А вот если в кейтабе лежат ключи хоста, которые используются, например, для аутентификации AD-шных пользователей по SSH - то не дело давать к ним доступ апачу.

Мне казалось Kerberos оттуда его берет и сам (или ald) генерирует в конфиг свой. Или он как-то из апачевского свой, другой keytab делает?

Долго думал, что ты имеешь ввиду, но не понял.
Kerberos - это просто набор библиотек (krb5-libs). До тех пор, пока кто-то их не загрузит и не станет использовать (apache, sshd, sssd), Kerberos сам по себе ничего делать не будет.

К слову, сейчас в krb5.conf нет моей строки, видимо ald пересоздало файл. Но все работает. Значит магия))

Лишнее подтверждение того, что там ей не место. И после перезапуска апача тоже все работает?

bigbit ★★★★★ ()
Последнее исправление: bigbit (всего исправлений: 1)
Ответ на: комментарий от bigbit

Так, теперь опять не работает. Причем добавление этой строчки не помогает. Логи апача:

astra_mode - set process caps, unshare
astra_mode - disable without auth
kerb_authenticate_user entered with user (NULL) and auth_type Kerberos, referer http://aldserver.name.ru/

У кербероса такие же, как в первом сообщении. Как думаете, в чем проблема?

Irbis88 ()