Настройка сервера Apache2 с аутентификацией Kerberos в домене FreeIPA в Astra Linux (Астра Линукс)

#1 2022.06.09 14:33:26

0

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

На компьютере - web-сервере Apache2 (часть 1)

В ОС Astra Linux Special Edition все действия должны выполняться от имени имени администратора компьютера с высоким уровнем целостности.


Установить пакеты для ввода компьютера в домен, службу Apache2 и модуль авторизации через Kerberos:

sudo apt update
sudo apt install astra-freeipa-client apache2 libapache2-mod-auth-kerb
Задать имя компьютера (далее в примере используется имя client):
sudo hostnamectl set-hostname client


И указать заданное имя компьютера в файле /etc/hosts.

На компьютере - контроллере домена FreeIPA

Действия выполняются от имени администратора домена (по умолчанию - admin).

Получить авторизацию администратора домена, и, действуя от имени администратора домена, добавить службу HTTP:

kinit admin
ipa service-add HTTP/client.astra.domain@ASTRA.DOMAIN


Действуя от имени администратора домена выгрузить keytab с КД FreeIPA:

/usr/sbin/ipa-getkeytab -p HTTP/client.astra.domain@ASTRA.DOMAIN -k /tmp/http.keytab

Далее полученный файл /tmp/http.keytab нужно будет скопировать на web-сервер в каталог /etc/apache2/.


На компьютере - web-сервере Apache2 (Часть 2)

Скопировать keytab (файл /tmp/http.keytab) с контроллера домена на web-сервер в каталог /etc/apache2/.

Выставить права на keytab:

sudo chown www-data /etc/apache2/http.keytab
sudo chmod 644 /etc/apache2/http.keytab


В конфигурацию виртуального хоста virtualhost в файле /etc/apache2/sites-available/000-default.conf внести настройки:


<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 Kerberos
# Имя реалма Керберос - имя домена ЗАГЛАВНЫМИ буквами
KrbAuthRealms ASTRA.DOMAIN

# Полное доменное имя сервиса (имя ранее созданной службы HTTP):
KrbServiceName HTTP/client.astra.domain@ASTRA.DOMAIN

# Имя файла, в котором сохранены ключи
Krb5Keytab /etc/apache2/http.keytab
KrbMethodNegotiate on
KrbMethodK5Passwd off
require valid-user
KrbSaveCredentials on
</Directory>
</VirtualHost>


Создать каталог для виртуального сервера:

На компьютере - web-сервере назначить мандатные атрибуты каталогу с виртуальным сервером:

sudo pdpl-file 3:0:0xffffffffffffffff:ccnr /var/www/
sudo pdpl-file 3:0:0xffffffffffffffff:ccnr /var/www/html/


Перезапустить web-сервер:

sudo systemctl restart apache2
#2 2022.06.09 14:40:34

0

Проверка работы мандатных ограничений

На компьютере - контроллере домена создать доменного пользователя, и выставить ему ненулевой "максимальный уровень конфиденциальности" (например, 1).

На компьютере - web-сервере в папке виртуального сервера /var/www/html/ создать 2 файла и установить ненулевую мандатную метку на файл 1.html:

echo "Hello world! 0" | sudo tee /var/www/html/0.html
echo "Hello world! 1" | sudo tee /var/www/html/1.html
sudo pdpl-file 1:0:0 /var/www/html/1.html


Должно получиться так:

Img


На любом компьютере, который должен выступать в роли клиента, в web-браузере negotiate авторизацию (для чего открыть страницу about:config и добавить http:// в параметры network.negotiate-auth.delegation-uris и network.negotiate-auth.trusted-uris):

Img


После чего зайти на клиентский компьютер под пользовательской доменной учетной записью с нулевым уровнем конфиденциальности и попытаться получить доступ к странице с ненулевым уровнем конфиденциальности https://client.astra.domain/html/1.html. Результатом должен стать отказ в доступе:

Img


При этом доступ к странице с нулевым уровнем конфиденциальности http://client.astra.domain/html/0.html должен предоставляться:

Img


При входе на клиентский компьютер под пользовательской доменной учетной записью с ненулевым уровнем конфиденциальности должны быть доступны обе страницы.
Отредактировано: Panda 2022.08.08 14:27:56