Только для продукта ПОЛИНОМ:MDM

AD-аутентификация для веб-сервера на Linux

Если в ПОЛИНОМ:MDM есть пользователи из Active Directory, необходимо выполнить дополнительные настройки.

Если вы не используете учетные записи Windows в ПОЛИНОМ:MDM, выполнять инструкции из раздела не нужно.

Важно

Веб-сервер ПОЛИНОМ:MDM должен быть присоединен к домену

Обозначения:

  • example.com - домен

  • dc.example.com - контроллер домена

  • polynom-server.example.com, polynom-serve - веб-сервер ПОЛИНОМ:MDM

  • PolynomDomainUser - пользователь домена, через которого будет осуществляться авторизация

  • PolynomDomainUserPassword - пароль пользователя PolynomDomainUser

  • polynom - пользователь от которого запущен веб-сервер

Примечание

Для каждого Linux-сервера, который присоединен к домену, нужен отдельный доменный пользователь. Ограничение файла keytab.

Создание файла keytab

На контроллере домена в командной строке, запущенной от имени администратора, выполните следующие команды

  1. Получите информацию о контроллере домена

    nltest /dsgetdc:EXAMPLE.COM
    

    замените EXAMPLE.COM на ваш домен

    В выводе будет содержаться следующая информация

    Контроллер домена: \\dc.EXAMPLE.COM
    Адрес: \\10.10.10.10
    ...
    Команда выполнена успешно.
    
  2. Скопируйте имя и адрес контроллера домена в текстовый файл — они понадобятся для дальнейшей настройки веб-сервера ПОЛИНОМ:MDM

  3. Проверьте наличие записей о веб-сервере в Active Directory

    setspn -L polynom-server
    

    замените polynom-server на имя сервера, на котором установлен веб-сервер ПОЛИНОМ:MDM

    Если записей нет, добавьте их командами

    setspn -S HTTP/polynom-server.example.com PolynomDomainUser
    

    замените polynom-server на имя сервера, на котором установлен веб-сервер ПОЛИНОМ:MDM, а example.com - на ваш домен

    setspn -S HTTP/polynom-server.example.com@EXAMPLE.COM PolynomDomainUser
    

    замените polynom-server на имя сервера, на котором установлен веб-сервер ПОЛИНОМ:MDM, а EXAMPLE.COM - на ваш домен в верхнем регистре

  4. Проверьте наличие разрешений на работу с шифрованием AES128 и AES256 у пользователя домена, через которого будет осуществляться авторизация

    1. Перейдите в Server Manager -> Tools -> Active Directory Users and Computers

    2. Выберите домен

    3. Перейдите в Users

    4. Выберите пользователя (в нашем примере это PolynomDomainUser)

    5. Откройте контекстное меню и выберите Properties

    6. В открывшемся окне на вкладке Account в разделе Account Options должны быть включены опции:

      • This account supports Kerberos AES 128 bit encryption

      • This account supports Kerberos AES 256 bit encryption

  5. Создайте файл keytab с помощью утилиты ktpass

    На контроллере домена в командной строке, запущенной от имени администратора, перейдите в папку C:\Windows\system32 и выполните команду

    ktpass -princ HTTP/polynom-server.example.com@EXAMPLE.COM -mapuser PolynomDomainUser -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass PolynomDomainUserPassword -target dc.example.com -out C:\polynom-server_HTTP.keytab
    

    Важно

    В свойствах учетной записи в Active Directory на вкладке Учетная запись должно поменяться имя входа на HTTP/polynom-server.example.com

  6. Скопируйте файл на веб-сервер ПОЛИНОМ:MDM в папку /etc/ascon/polynom/

  7. Перейдите на веб-сервер и выполните настройку веб-сервера

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

  1. Настройте права доступа к файлу keytab.

    В целях безопасности доступ к файлу должен иметь только его владелец

    sudo chown polynom /etc/ascon/polynom/polynom-server_HTTP.keytab
    

    Команда сделает пользователя polynom владельцем файла

    sudo chmod 400 /etc/ascon/polynom/polynom-server_HTTP.keytab
    

    Команда ограничит доступ к файлу всем пользователям кроме polynom

  2. Установите пакеты, необходимые для работы системной авторизации

    sudo apt-get install realmd krb5-user software-properties-common python3-software-properties packagekit
    
    sudo yum install realmd krb5-workstation
    
    sudo apt-get install realmd krb5-kinit packagekit
    
  3. Отредактируйте конфигурацию сетевого интерфейса

    Вам потребуется IP-адрес и имя контроллера домена, которые вы получили на шаге 1 при создании файла keytab

    1. Добавьте DNS-сервер и домен поиска в файле /etc/network/interfaces

          <...>
          # The primary network interface
          auto eth0
          iface eth0 inet dhcp
          dns-nameservers 10.10.10.10
          dns-search dc.EXAMPLE.COM
      

      замените 10.10.10.10 на IP-адрес вашего контроллера домена

      замените dc.EXAMPLE.COM на имя вашего контроллера домена

    2. Перезапустите сетевую службу

      sudo ifdown eth0 && sudo ifup eth0
      

      Имя сетевого интерфейса (eth0) может отличаться для разных компьютеров. Список сетевых интерфейсов можно получить командой ifconfig

    1. Отредактируйте dns в файле /etc/sysconfig/network-scripts/ifcfg-eth0

      Имя файла может отличаться в зависимости от вашей конфигурации

           <...>
           PEERDNS=no
           DNS1=10.10.10.10
      

      замените 10.10.10.10 на IP-адрес вашего контроллера домена

    2. Перезапустите сетевую службу

      sudo systemctl restart network
      
    1. Добавьте DNS-сервер и домен поиска в ЦУС или в файле /etc/net/ifaces/<имя сетевого интерфейса>/resolv.conf

          nameserver 10.10.10.10
          search dc.EXAMPLE.COM
      

      замените 10.10.10.10 на IP-адрес вашего контроллера домена

      замените dc.EXAMPLE.COM на имя вашего контроллера домена

    2. Перезапустите сетевую службу

      sudo ifdown eth0 && sudo ifup eth0
      

      Имя сетевого интерфейса (eth0) может отличаться для разных компьютеров. Список сетевых интерфейсов можно получить командой ifconfig

  4. Убедитесь, что файл /etc/resolv.conf содержит строку

    nameserver 10.10.10.10
    

    вместо 10.10.10.10 должен быть указан IP-адрес вашего контроллера домена

  5. Настройте файл krb5.conf

    nano /etc/krb5.conf
    
    [libdefaults]
    default_realm = EXAMPLE.COM
    rdns = no
    dns_lookup_kdc = true
    dns_lookup_realm = true
    
    [realms]
    EXAMPLE.COM = {
            kdc = dc.example.com
            admin_server = dc.example.com
    }
    
  6. Запустите оболочку от имени пользователя polynom

    sudo su polynom
    
  7. Создайте файл /etc/ascon/polynom/domain.ini со следующим содержимым

    Domain=example.com;User=PolynomDomainUser;Password=PolynomDomainUserPassword;AuthType=1;
    

    замените:

    • example.com на ваш домен

    • PolynomDomainUser на имя пользователя, через которого будет осуществляться авторизация

    • PolynomDomainUserPassword на пароль пользователя PolynomDomainUser

    Файл domain.ini используется сервером приложений ПОЛИНОМ для авторизации пользователя.

  8. Проверьте доступные билеты

    klist -k -t /etc/ascon/polynom/polynom-server_HTTP.keytab
    

    В выводе должна содержаться следующая информация

    Keytab name: FILE:/etc/ascon/polynom/polynom-server_HTTP.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------------------
      13 01.01.1970 03:00:00 HTTP/polynom-server.example.com@EXAMPLE.COM (DEPRECATED:des-cbc-crc)
      13 01.01.1970 03:00:00 HTTP/polynom-server.example.com@EXAMPLE.COM (DEPRECATED:des-cbc-md5)
      13 01.01.1970 03:00:00 HTTP/polynom-server.example.com@EXAMPLE.COM (DEPRECATED:arcfour-hmac)
      13 01.01.1970 03:00:00 HTTP/polynom-server.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
      13 01.01.1970 03:00:00 HTTP/polynom-server.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
    

    Примечание

    Значения KVNO и Principal должны быть идентичными тем, что выдала команда ktpass при создании файла keytab.

  9. Проверьте получение билета

    kinit -k -t /etc/ascon/polynom/polynom-server_HTTP.keytab HTTP/polynom-server.example.com@EXAMPLE.COM -v -V
    

    Вывод:

    keytab specified, forcing -k
    Using default cache: /tmp/krb5cc_1001
    Using principal: HTTP/polynom-server.example.com@EXAMPLE.COM
    Using keytab: /etc/ascon/polynom/polynom-server_HTTP.keytab
    Authenticated to Kerberos v5
    
  10. В файл службы /etc/systemd/system/polynomweb.service в раздел [Service] добавьте путь к файлу keytab:

    Environment=KRB5_KTNAME=/etc/ascon/polynom/polynom-server_HTTP.keytab
    
  11. Перезапустите службу polynomweb

    sudo systemctl daemon-reload
    sudo systemctl restart polynomweb.service
    

Совет

Для диагностики временно запустите службу polynomweb.service c отладкой

[Service]
...

Environment=KRB5_TRACE=/tmp/krb5.trace
Environment=GSSAPI_TRACE=1

Информация о проблеме будет записана в файл /tmp/krb5.trace

После завершения диагностики удалите добавленные строки из файла службы и выполните перезапуск, чтобы отключить отладку.

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

Примечание

Windows-авторизация работает только в браузерах ОС Windows.

Windows-авторизация работает без дополнительной настройки в браузерах Chrome и Edge.

Если вы используете Firefox, требуется настроить браузер.

  1. Введите в адресной строке about:config

  2. Измените настройки как показано ниже

    network.auth.use-sspi: false
    network.negotiate-auth.trusted-uris = .example.com # (1)!
    network.negotiate-auth.using-native-gsslib: false
    network.negotiate-auth.gsslib: C:\Program Files\MIT\Kerberos\bin\gssapi64.dll
    

    замените example.com на ваш домен