Найти в Дзене
Nikita Bubnov

Настройка связки Apache + PHP + ALD на Astra Linux SE 1.5

В предыдущей статье была описана настройка ALD на Astra Linux SE 1.5, поэтому все шаги связанные с подготовкой ALD не будут описываться.

Настройка Apache для аутентификации в домене

Если не настроена авторизация через Kerberos, по умолчанию для всех ресурсов будет использоваться авторизация через PAM, при этом будет использоваться пользовательская БД, прописанная в настройках ОС. Логин и пароль пользователя будут передаваться от пользователя к серверу в открытом виде с использованием метода аутентификации Basic. Для корректного функционирования авторизации через PAM пользователю, от которого работает web-сервер (по умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках. Например, добавить права на чтение файла /etc/shadow:

sudo usermod -a -G shadow www-data
sudo setfacl -d -m u:www-data:r /etc/parsec/macdb
sudo setfacl -R -m u:www-data:r /etc/parsec/macdb
sudo setfacl -m u:www-data:rx /etc/parsec/macdb

Установим требуемый пакет:

sudo apt-get -y install libapache2-mod-auth-kerb

Отключим метод аутентификации PAM:

sudo a2dismod auth_pam

Активируем метод Kerberos:

sudo a2enmod auth_kerb

Отредактируем конфигурационной файл основного сайта

sudo nano -Y sh /etc/apache2/sites-available/default

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName srv.test.local
DocumentRoot /var/www/
<Directory /var/www/>
AuthType Kerberos
KrbAuthRealms REALM
KrbServiceName HTTP/srv.test.local
Krb5Keytab /etc/apache2/keytab
KrbMethodNegotiate on
KrbMethodK5Passwd off
require valid-user
Options Indexes FollowSymLinks MultiViews
AllowOverride None
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel debug
CustomLog /var/log/apache2/access.log common
</VirtualHost>

Создадим в БД ALD с помощью утилиты администрирования ALD принципала, соответствующего нашему web-серверу Apache. Принципал создается с автоматически сгенерированным случайным ключом

sudo ald-admin service-add HTTP/srv.test.local

На сервере созданного принципала добавим в группу сервисов mac:

sudo ald-admin sgroup-svc-add HTTP/srv.test.local --sgroup=mac

Создадим файл ключа

sudo ald-client update-svc-keytab HTTP/srv.test.local --ktfile="/etc/apache2/keytab"

Назначим владельцем файла системного пользователя www-data:

sudo chown www-data /etc/apache2/keytab

Разрешим чтение остальным:

sudo chmod 644 /etc/apache2/keytab

Перезапустим Web-Сервер:

sudo service apache2 restart

Пробный первый вход на сайт. для этого включим логирование и попробуем.

sudo tail -f /var/log/apache2/access.log /var/log/apache2/error.log

Появятся ошибки

kerb_authenticate_user entered with user (NULL) and auth_type Kerberos

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

Повторяем попытку открытия и все работает! На этом настройка закончена, но настройки браузера придется повторить на всех используемых АРМ.