Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  • Astra Linux Common Edition 2.12

В репозиториях Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) пакет libapache2-mod-auth-ntlm-winbind отсутствует.

NTLM — встроенный в операционные системы семейства Microsoft Windows протокол сетевой аутентификации. Широко применяется в различных сервисах на их базе и используется версиями Microsoft Windows вплоть до Windows 10 включительно.

С самого изобретения протоколы NTLMv1 и NTLMv2 подвергались множеству нападений и демонстрировали широкий спектр серьезных уязвимостей. В настоящее время рекомендуется использовать авторизацию через Kerberos.

Также рекомендуется не использовать winbind, а ввод в домен выполнять с помощью sssd (см. Подключение Astra Linux к домену Microsoft Windows с помощью astra-ad-sssd-client). При работе с sssd используется Kerberos, протокол NTLM не поддерживается.

Далее в статье предлагается использовать сторонний пакет libapache2-mod-auth-ntlm-winbind, отсутствующий в репозиториях Astra Linux. См. Использование стороннего программного обеспечения в аттестованных информационных системах, функционирующих под управлением Astra Linux Special Edition.

Описание стенда

  • имеется настроенный контроллер домена Windows AD:
    • имя winserver.windom.ex;
    • адрес 10.0.2.20;
    • администратор домена:
      • имя administrator;
      • пароль 1234567890;
    • доменный клиент:
      • winuser@windom.ex;
      • пароль 0987654321;
  • web-сервер Astra Linux.

Ввод в домен

Действия выполняются на web-сервере. Ввод в домен выполняется с помощью инструмента astra-winbind. Порядок действий:

  1. Перед вводом в домен настроить разрешение имен на использование контроллера DNS в качестве сервера DNS;
  2. Установить пакеты:

    sudo apt install astra-winbind

  3. Ввести компьютер в домен Windows AD:

    sudo astra-winbind -dc winserver.windom.ex -u adminisrator

Создание тестового сайта

Для создания тестового сайта использовался сценарий из статьи Служба мониторинга ИБП APC apcupsd:

При работе в Astra Linux Special Edition с включенным мандатным управлением доступом (МРД) в файле /etc/apache2/apache2.conf установить параметру Astra Mode значение off.


sudo apt install apcupsd apcupsd-cgi apache2
sudo a2enmod cgi
sudo systemctl restart apache2
firefox localhost/cgi-bin/apcupsd/multimon.cgi
В результате выполнения сценария будет запущен web-браузер firefox со страницей статуса ИБП (если ИБП не подключен или не обнаружен - то с соответствующим сообщением об ошибке, не влияющем на использование сайта в качестве примера).

Настройка аутентификации с помощью пакета libapache2-mod-auth-ntlm-winbind

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

  1. Загрузить пакет с модулем аутентификации:

     

  2. Установить загруженный пакет с модулем аутентификации:

    sudo apt install ./libapache2-mod-auth-ntlm-winbind_0.0.0.lorikeet+svn+801-4_amd64.deb

  3. Загрузить установленный модуль аутентификации:

    sudo a2enmod auth_ntlm_winbind

  4. Добавить пользователя www-data в группу winbindd_priv:

    sudo usermod -a -G winbindd_priv www-data
     

  5. Назначить группу winbindd_priv владельцем каталога /var/lib/samba/winbindd_privileged/pipe:

    sudo chgrp winbindd_priv /var/lib/samba/winbindd_privileged/pipe
     

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

    sudo systemctl restart apache2

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

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

    ntlm_auth --protocol=squid-2.5-ntlmssp --domain=<имя_домена> --username=<имя_доменного_пользователя> --password=<пароль>

    NT_STATUS_OK: The operation completed successfully. (0x0)
    Повторить команду с несуществующим именем пользователя, что должно привести к ошибке:
    ntlm_auth --protocol=squid-2.5-ntlmssp --domain=<имя_домена> --username=<имя_несуществующего_пользователя> --password=<пароль>

    NT_STATUS_NO_SUCH_USER: The specified account does not exist. (0xc0000064)

  2. Аналогичным образом выполнить проверку аутентификации с использованием протокола NTLM:

    ntlm_auth --protocol=squid-2.5-ntlmssp --domain=<имя_домена> --username=<имя_доменного_пользователя> --password=<пароль>
    и
    ntlm_auth --protocol=squid-2.5-ntlmssp --domain=<имя_домена> --username=<имя_несуществующего_пользователя> --password=<пароль>

Включение требования аутентификации на тестовом web-сайте

  1. Создать файл с параметрами локации, в которой находится созданный web-сайт:

    cat << EOT | sudo tee /etc/apache2/conf-enabled/apcupsd.conf
    <Location /cgi-bin/apcupsd/>
    AuthType NTLM
    NTLMAuth on
    NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
    Require valid-user
    </Location>
    EOT

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

    sudo systemctl restart apache2

  3. Открыть web-сайт в браузере:

    firefox localhost/cgi-bin/apcupsd/multimon.cgi

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