Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.26)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 и исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Аннотация

Для работы В статье описывается настройка аутентификации Kerberos для web-сервера в составе домена с использованием для аутентификации доменной службы (ALD или FreeIPA):

  • Компьютер должен быть зарегистрирован в домене;
  • apache2 в доменах FreeIPA или ALD. В качестве примера создается одностраничный тестовый web-сайт, требующий для просмотра аутентификации Kerberos. Параметры стенда:

    1. Имя домена: ipadomain0.ru;
    2. Контроллер домена:
      1. Имя сервера контроллера: ipa0.ipadomain0.ru;
    3. Web-сервер:
      1. В качестве web-сервера используется отдельный сервер, введенный в домен;
      2. Имя сервера: web.ipadomain0.ru

    Компьютер с web-сервером зарегистрирован в домене, и далее служба web-сервера разворачивается на этом компьютере. Доступ к содержимому web-сайтов может осуществляться с помощью разных браузеров, требующих отдельных настроек аутентификации. Тестирование работы созданной web-службы выполняется с помощью команды curl, настройка web-браузеров рассматривается в отдельной главе.

    Служба web-сервера должна быть зарегистрирована в домене;

    Установка пакетов

    Служба web-сервера apache2 представлена в Astra Linux пакетом apache2. При установке ОС пакет apache2 по умолчанию не устанавливается, но может быть быть установлен при выборе выбран для установки на этапе выбора программного обеспечения во время установки ОС.

    Информация

    Только для Astra Linux Special Edition:

    Службы, устанавливаемые при установке Astra Linux Special Edition (кроме службы SSH), по умолчанию не запускаются автоматически, так как запуск не настроенных служб может создавать угрозу безопасности.
    Если пакет apache2 устанавливался при установке ОС, то после запуска ОС и выполнения настроек настройки службы следует вручную запустить службу и разрешить автоматический запуск службы после перезагрузки и запустить сллужбу:

    Command
    iconfalse

    systemctl start apache2
    systemctl enable apache2
    systemctl start


    Если пакет apache2 не был установлен ранее, то установить его можно с помощью графического менеджера пакетов или командой:

    Command
    sudo apt install apache2


    Для использования аутентификации Kerberos дополнительно установить пакет для службы apache2 в составе дистрибутивов Astra Linux имеются два пакета:

    • libapache2-mod-auth-gssapi - рекомендуется к использованию;
    • libapache2-mod-auth-kerb
    , содержащий модуль аутентификации auth_kerb
    • - устарел и не рекомендуется к использованию.

    Установка пакетов:

    • Рекомендованный вариант (libapache2-mod-auth-gssapi):

      Command
      sudo apt install libapache2-mod-auth-gssapi


    • Устаревший вариант (libapache2-mod-auth-kerb):

      Command
      sudo apt install libapache2-mod-auth-kerb


    Информация
    При установке контроллера (реплики контроллера) домена FreeIPA служба apache2 будет установлена и настроена автоматически, однако настройка аутентификации Kerberos при этом не производится.


    Настройка конфигурации apache2

    В конфигурационных файлах web-сайтов, доступ к которым предоставляется службой apache2, должны быть заданы параметры авторизации. Например, создадим аутентификации. Пример настройки параметров:

    1. Создать файл /etc/apache2/sites-available/auth-kerberos.conf со следующим содержимым:
      • Рекомендованный вариант. Для пакета libapache2-mod-auth-gssapi:

        Блок кода
        <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
            <Directory /var/www>
                AuthType GSSAPI
                AuthName "test"
                #GssapiBasicAuth On
                GssapiCredStore keytab:<путь_к_таблице_ключей>
                # Включить 3 нижних параметра, если нужно кешировать сессии (настройка web-браузеров для работы с Kerberos в данной статье не рассматривается)
                #GssapiUseSessions On
                #Session On
                #SessionCookieName myapp_web_gssapi_session path=/my_url;httponly;secure;
                Require valid-user
           </Directory>
        </VirtualHost>

        Полное описание параметров настройки web-сайтов доступно в документации apache2;

      • Устаревший вариант. Для пакета libapache2-mod-auth-kerb:

        Блок кода
        <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html/
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
            <Directory /var/www/html/>
                AuthType Kerberos
                # Имя 
    реалма
      • области (realm) Керберос - имя домена ЗАГЛАВНЫМИ буквами
                KrbAuthRealms <РЕАЛМ_КЕРБЕРОС>
                # Имя 
    Полное
      • доменной 
    доменное
      • службы, 
    имя
      • предоставляемой 
    сервера
      • сервером
                KrbServiceName HTTP/<полное_доменное_имя_сервера>
                # Имя файла, в котором сохранены ключи доменной службы
                Krb5Keytab /etc/apache2/keytab
                KrbMethodNegotiate on
                KrbMethodK5Passwd off
                require valid-user
                KrbSaveCredentials on
            </Directory>
        </VirtualHost>

        В этом варианте особо можно выделить параметр KrbMethodK5Passwd: если его значение изменить на on, то при входе на web-сайт будут интерактивно запрашиваться имя и пароль для выполнения аутентификации Kerberos. Использование интерактивного ввода может быть удобно для проверки доступности сайта с помощью web-браузеров;

    1. Запретить использование web-сайта, устанавливаемого по умолчанию при установке apache2:

      Command
      sudo a2dissite 000-default.conf


    2. Разрешить использование созданного конфигурационного файла для предоставления доступа к web-сайту:

      Command
      sudo a2ensite auth-kerberos


    3. Создать каталог /var/www/html/auth-kerberos для документов web-сайта:

      Command
      sudo mkdir /var/www/html/auth-kerberos


    4. Создать в каталоге /var/www/html/auth-kerberos файл /var/www/html/auth-kerberos/index.html со страницей web-сайта:

      Блок кода
      <html>
      <body>
      <div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
      
    Test Page for Kerberos Auth
    1. Тестовая страница для проверки аутентификации Kerberos.
      Если вы видите этот текст, то аутентификация выполнена успешно.
      </div>
      </body>
      </html>

    После изменения конфигурации перезапустить службу apache2:


    1. Для того чтобы кириллица в содержимом web-страниц отображалась корректно добавить в файл /etc/apache2/apache2.conf параметр:

      Блок кода
      AddDefaultCharset UTF-8


    2. Только для Astra Linux Special Edition: В файле /etc/apache2/apache2.conf установить параметр AstraMode в значение off:

      Блок кода
      AstraMode off


    Настройка аутентификации Kerberos в домене FreeIPA

    Command
    1. На контроллере домена:
      1. Получить права администратора домена:

        Command
        kinit admin


      2. Зарегистрировать доменную службу

        Command
        ipa service-add HTTP/<полное_доменное_имя_web-сервера>


    2. На web-сервере:
      1. Получить права администратора домена от имени суперпользователя:

        Command
        sudo kinit admin


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

        Command
        sudo ipa-getkeytab -s ipa0.ipadomain0.ru -k /etc/apache2/keytab -p HTTP/`hostname`


      3. Установить права доступа на файл с таблицей ключей:

        Command
        sudo chown www-data:www-data /etc/apache2/keytab


    3. Перезапустить службу apache2:

      Подсказка
    1. iconfalse

      sudo systemctl restart apache2

    Настройка аутентификации Kerberos в домене FreeIPA

    Настройка аутентификации Kerberos в домене ALD

    Для домена ALD сценарий настройки состоит таких же операций, как сценарий для FreeIPA, и отличается только синтаксисом команд. Сценарий настройки для ALD может выглядеть так:

    tip
    1. На контроллере домена выполнить команды:

      Command
      iconfalse
    keytab="/etc/apache2/keytab"
    a2enmod auth_kerb
    1. ald-admin service-add HTTP/

    `hostname`
    1. <полное_доменное_имя_web-сервера>
      ald-admin sgroup-svc-add HTTP/

    `hostname` После изменения конфигурации перезапустить сервер
    1. <полное_доменное_имя_web-сервера> --sgroup=mac


    2. На web-сервере выполнить команды:

      Command
      iconfalse

      keytab="/etc/apache2/keytab"
      ald-client update-svc-keytab HTTP/`hostname` --ktfile="$keytab"
      chown www-data "$keytab"
      chmod 644 "$keytab"

    systemctl restart apache2

    1. Перезапустить службу apache2:

      Подсказка
      iconfalse

      sudo systemctl restart apache2


    Проверка работы аутентификации

    Созданный на этапе настройки apache2 тестовый сайт должен быть доступен по адресу http://<полное_доменное_имя_web-сервера>. Далее для получения содержимого сайта используется команда curl. Особенностью работы этой команды является то, что для выполнения аутентификации Kerberos она использует имя таблицы билетов Kerberos, хранящейся в переменной окружения KRB5CCNAME. Если тестирование выполняется не от имени доменного пользователя, значение переменной окружения KRB5CCNAME должно быть установлено вручную.

    1. Проверка отказа в доступе:
      1. Попытаться прочитать содержимое web-сайта без выполнения аутентификации:

        Command
        Titlecurl http://`hostname`/auth-kerberos
        <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
        <html><head>
        <title>401 Unauthorized</title>
        </head><body>
        <h1>Unauthorized</h1>
        <p>This server could not verify that you
        are authorized to access the document
        requested.  Either you supplied the wrong
        credentials (e.g., bad password), or your
        browser doesn't understand how to supply
        the credentials required.</p>
        <hr>
        <address>Apache/2.4.46 (Debian) Server at web.ipadomain0.ru Port 80</address>
        </body></html>

        Получен отказ в доступе.

      2. Удалить билеты Kerberos:

        Command
        kdestroy


      3. Попытаться прочитать содержимое сайта использую аутентификацию Kerberos:

        Command
        Titlecurl --negotiate -u : http://`hostname`/auth-kerberos/

        <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
        <html><head>
        <title>401 Unauthorized</title>
        </head><body>
        <h1>Unauthorized</h1>
        <p>This server could not verify that you
        are authorized to access the document
        requested.  Either you supplied the wrong
        credentials (e.g., bad password), or your
        browser doesn't understand how to supply
        the credentials required.</p>
        <hr>
        <address>Apache/2.4.46 (Debian) Server at web.ipadomain0.ru Port 80</address>
        </body></html>

        Получен отказ в доступе.

    2. Проверка предоставления доступа;
      1. Получить билет Kerberos:

        Command
        kinit admin


      2. Убедиться, что переменная окружения KRB5CCNAME содержит верное указание на таблицу ключей, например:

        Command
        Titleecho $KRB5CCNAME
        KEYRING:persistent:67200

        Расположение таблицы ключей зависит от выбранного способа входа (способа получения билетов Kerberos) и от установленного клиента домена. Например, возможный вариант значения, когда таблица ключей хранится в файле:

        Блок кода
        FILE:/tmp/krb5cc_1000

        Проверить корректность значения переменной окружения можно командой klist: выполнить команду klist и использовать указанное в выводе расположение таблицы как значение переменной. Например:

        1. Получить данные:

          Command
          Titleklist

          Ticket cache: KEYRING:persistent:1000:1000
          Default principal: admin@IPADOMAIN0.RU

          Valid starting       Expires              Service principal
          03.11.2021 11:26:24  04.11.2021 11:26:22  krbtgt/IPADOMAIN0.RU@IPADOMAIN0.RU


        2. Задать значение переменной окружения:

          Command

          export KRB5CCNAME=KEYRING:persistent:1000:1000


      3. Прочитать содержимое сайта используя аутентификацию Kerberos:

        Command
        Titlecurl --negotiate -u : http://`hostname`/auth-kerberos/

        <html>
        <body>
        <div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
        Тестовая страница для проверки аутентификации Kerberos.
        Если вы видите этот текст, то аутентификация выполнена успешно.
        </div>
        </body>
        </html>

        Команда должна завершиться успехом.

    Настройка web-браузеров

    Для работы с web-сервером, настроенным в соответствии с настоящей статьей, web-браузер пользователя должен поддерживать аутентификацию negotiate.

    Настройка web-браузера Mozilla Firefox

    Для включения аутентификации в web-браузере Mozilla Firefox в настройках, доступных по адресу about:config, необходимо указать для каких серверов доступна аутентификация negotiate. Для выполнения данной настройки в качестве значений параметра

    Блок кода
    network.negotiate-auth.trusted-uris

    задать маски доменов или, в общем случае, разрешить использовать любые http- и https-соединения, указав, например, значения:

    Блок кода
    http://, https://

    При необходимости обеспечения сквозной аутентификации в браузере Mozilla Firefox в настройках в качестве значений параметра

    Блок кода
    network.negotiate-auth.delegation-uris

    задать маски доменов, которым можно передавать данные для сквозной аутентификации. При этом в запускаемых сценариях должна быть определена переменная окружения KRB5CCNAME. Например, для сценариев  php это будет выглядеть так:

    Блок кода
     putenv("KRB5CCNAME=".$_SERVER[’KRB5CCNAME’]);

    Настройка web-браузера Konqueror

    В современных версиях браузера Konqueror поддержка аутентификации присутствует автоматически.