Настройка WEB-сервера
На компьютере - WEB-сервере Apache2 (часть 1)
Предупреждение |
---|
В ОС СН (Смоленск, Ленинград) все действия должны выполняться от имени имени администратора компьютера с высоким уровнем целостности. |
Установить пакеты для ввода компьютера в домен, службу Apache2 и модуль авторизации через Kerberos:
Command |
---|
sudo apt update |
Задать имя компьютера (далее в примере используется имя client):
Command |
---|
sudo hostnamectl set-hostname client |
И указать заданное имя компьютера в файле /etc/hosts.
Ввести компьютер в домен в качестве клиента.
Настройка WEB-сервера
На компьютере - контроллере домена FreeIPA
Предупреждение |
---|
Действия выполняются от имени администратора домена (по умолчанию - admin). |
Получить авторизацию администратора домена, и, действуя Действуя от имени администратора домена, добавить службу HTTP:
Command |
---|
kinit admin |
Действуя от имени администратора домена выгрузить keytab с КД FreeIPA:
Command |
---|
/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:
Command |
---|
sudo chown www-data /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-сервере назначить мандатные атрибуты каталогу с виртуальным сервером:
Command |
---|
sudo pdpl-file 3:0:0xffffffffffffffff:0x1 /var/www/ |
Перезапустить web-сервер:
Command |
---|
sudo systemctl restart apache2 |
Проверка работы мандатных ограничений
На компьютере - контроллере домена создать доменного пользователя, и выставить ему ненулевой "максимальный уровень конфиденциальности" (например, 1).
На компьютере - WEB-сервере в папке виртуального сервера /var/www/html/ создать 2 файла и установить ненулевую мандатную метку на файл 1.html:
Command |
---|
echo "Hello world! 0" | sudo tee /var/www/html/0.html |
Должно получиться так:
На любом компьютере, который должен выступать в роли клиента, в WEB-браузере negotiate авторизацию (для чего открыть страницу about:config и добавить http:// в параметры network.negotiate-auth.delegation-uris и network.negotiate-auth.trusted-uris):
После чего зайти на клиентский компьютер под пользовательской доменной учетной записью с нулевым уровнем конфиденциальности и попытаться получить доступ к странице с ненулевым уровнем конфиденциальности http://client.astra.domain/html/1.html. Результатом должен стать отказ в доступе:
Предупреждение |
---|
При этом в диагностическом сообщении об ошибке будет указано, что объект не найден (ошибка 404), и не будет указана ошибка 403 (недостаточно прав). Такая диагностика исключает передачу информации о существовании объектов с высоким уровнем конфиденциальности, перекрывая возможный канал утечки информации. |
При этом доступ к странице с нулевым уровнем конфиденциальности http://client.astra.domain/html/0.html должен предоставляться:
При входе на клиентский компьютер под пользовательской доменной учетной записью с ненулевым уровнем конфиденциальности должны быть доступны обе страницы.