Данная статья применима к:
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. Порядок действий:
- Перед вводом в домен настроить разрешение имен на использование контроллера DNS в качестве сервера DNS;
Установить пакеты:
sudo apt install astra-winbindВвести компьютер в домен Windows AD:
sudo astra-winbind -dc winserver.windom.ex -u adminisrator
Создание тестового сайта
Для создания тестового сайта использовался сценарий из статьи Служба мониторинга ИБП APC apcupsd:
sudo a2enmod cgi
sudo systemctl restart apache2
firefox localhost/cgi-bin/apcupsd/multimon.cgi
Настройка аутентификации с помощью пакета libapache2-mod-auth-ntlm-winbind
Установка пакета
Загрузить пакет с модулем аутентификации:
Установить загруженный пакет с модулем аутентификации:
sudo apt install ./libapache2-mod-auth-ntlm-winbind_0.0.0.lorikeet+svn+801-4_amd64.debЗагрузить установленный модуль аутентификации:
sudo a2enmod auth_ntlm_winbindДобавить пользователя www-data в группу winbindd_priv:
sudo usermod -a -G winbindd_priv www-dataНазначить группу winbindd_priv владельцем каталога /var/lib/samba/winbindd_privileged/pipe:
sudo chgrp winbindd_priv /var/lib/samba/winbindd_privileged/pipeПерезапустить службу apache2:
sudo systemctl restart apache2
Проверка работы аутентификации
Для первичной проверки можно использовать базовую версию протокола аутентификации, указав имена домена и пользователя и пароль пользователя:
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)Аналогичным образом выполнить проверку аутентификации с использованием протокола NTLM:
ntlm_auth --protocol=squid-2.5-ntlmssp --domain=<имя_домена> --username=<имя_доменного_пользователя> --password=<пароль>иntlm_auth --protocol=squid-2.5-ntlmssp --domain=<имя_домена> --username=<имя_несуществующего_пользователя> --password=<пароль>
Включение требования аутентификации на тестовом web-сайте
Создать файл с параметрами локации, в которой находится созданный 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Перезапустить службу apache2:
sudo systemctl restart apache2Открыть web-сайт в браузере:
firefox localhost/cgi-bin/apcupsd/multimon.cgiПри открытии web-сайта будут запрошены имя и пароль пользователя. Для успешной аутентификации следует использовать полное доменное имя пользователя.