- Аннотация
- Установка пакетов
- Настройка конфигурации apache2
- Настройка аутентификации Kerberos в домене FreeIPA
- Настройка аутентификации Kerberos в домене ALD
- Проверка работы аутентификации
- Unauthorized
- Unauthorized
- Настройка web-браузеров
- Настройка web-браузера Mozilla Firefox
- Настройка web-браузера Konqueror
- Astra linux apache kerberos
- Настройка web-сервера
- На компьютере — контроллере домена FreeIPA
- На компьютере — web-сервере Apache2 (Часть 2)
- Проверка работы мандатных ограничений
Аннотация
В статье описывается настройка аутентификации Kerberos для web-сервера apache2 в доменах FreeIPA или ALD. В качестве примера создается одностраничный тестовый web-сайт, требующий для просмотра аутентификации Kerberos. Параметры стенда:
- Имя домена: ipadomain0.ru;
- Контроллер домена:
- Имя сервера контроллера: ipa0.ipadomain0.ru;
- В качестве web-сервера используется отдельный сервер, введенный в домен;
- Имя сервера: web.ipadomain0.ru
Компьютер с web-сервером зарегистрирован в домене, и далее служба web-сервера разворачивается на этом компьютере. Доступ к содержимому web-сайтов может осуществляться с помощью разных браузеров, требующих отдельных настроек аутентификации. Тестирование работы созданной web-службы выполняется с помощью команды curl, настройка web-браузеров рассматривается в отдельной главе.
Установка пакетов
Служба web-сервера представлена в Astra Linux пакетом apache2. При установке ОС пакет apache2 по умолчанию не устанавливается, но может быть выбран для установки на этапе выбора программного обеспечения во время установки ОС.
Только для Astra Linux Special Edition:
Службы, устанавливаемые при установке Astra Linux Special Edition (кроме службы SSH), по умолчанию не запускаются автоматически, так как запуск не настроенных служб может создавать угрозу безопасности.
Если пакет apache2 устанавливался при установке ОС, то после запуска ОС и выполнения настройки службы следует вручную запустить службу и разрешить автоматический запуск службы после перезагрузки:Если пакет apache2 не был установлен ранее, то установить его можно с помощью графического менеджера пакетов или командой:
Для использования аутентификации Kerberos для службы apache2 в составе дистрибутивов Astra Linux имеются два пакета:
- libapache2-mod-auth-gssapi — рекомендуется к использованию;
- libapache2-mod-auth-kerb — устарел и не рекомендуется к использованию.
- Рекомендованный вариант (libapache2-mod-auth-gssapi):
При установке контроллера (реплики контроллера) домена FreeIPA служба apache2 будет установлена и настроена автоматически, однако настройка аутентификации Kerberos при этом не производится.
Настройка конфигурации apache2
В конфигурационных файлах web-сайтов, доступ к которым предоставляется службой apache2, должны быть заданы параметры аутентификации. Пример настройки параметров:
- Создать файл /etc/apache2/sites-available/auth-kerberos.conf со следующим содержимым:
Рекомендованный вариант. Для пакета libapache2-mod-auth-gssapi:ServerAdmin webmaster@localhost DocumentRoot /var/www ErrorLog $/error.log CustomLog $/access.log combined AuthType GSSAPI AuthName "test" #GssapiBasicAuth On GssapiCredStore keytab: # Включить 3 нижних параметра, если нужно кешировать сессии (настройка web-браузеров для работы с Kerberos в данной статье не рассматривается) #GssapiUseSessions On #Session On #SessionCookieName myapp_web_gssapi_session path=/my_url;httponly;secure; Require valid-user Полное описание параметров настройки web-сайтов доступно в документации apache2;
ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ ErrorLog $/error.log CustomLog $/access.log combined AuthType Kerberos # Имя области (realm) Керберос - имя домена ЗАГЛАВНЫМИ буквами KrbAuthRealms # Имя доменной службы, предоставляемой сервером KrbServiceName HTTP/ # Имя файла, в котором сохранены ключи доменной службы Krb5Keytab /etc/apache2/keytab KrbMethodNegotiate on KrbMethodK5Passwd off require valid-user KrbSaveCredentials on Тестовая страница для проверки аутентификации Kerberos. Если вы видите этот текст, то аутентификация выполнена успешно.Настройка аутентификации Kerberos в домене FreeIPA
Настройка аутентификации Kerberos в домене ALD
Для домена ALD сценарий настройки состоит таких же операций, как сценарий для FreeIPA, и отличается только синтаксисом команд. Сценарий настройки для ALD может выглядеть так:
- На контроллере домена выполнить команды:
keytab=»/etc/apache2/keytab»
ald-client update-svc-keytab HTTP/`hostname` —ktfile=»$keytab»
chown www-data «$keytab»
chmod 644 «$keytab»Проверка работы аутентификации
Созданный на этапе настройки apache2 тестовый сайт должен быть доступен по адресу http://. Далее для получения содержимого сайта используется команда curl. Особенностью работы этой команды является то, что для выполнения аутентификации Kerberos она использует имя таблицы билетов Kerberos, хранящейся в переменной окружения KRB5CCNAME. Если тестирование выполняется не от имени доменного пользователя, значение переменной окружения KRB5CCNAME должно быть установлено вручную.
- Проверка отказа в доступе:
- Попытаться прочитать содержимое web-сайта без выполнения аутентификации:
curl http://`hostname`/auth-kerberos
Unauthorized
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn’t understand how to supply
the credentials required.
Apache/2.4.46 (Debian) Server at web.ipadomain0.ru Port 80
curl —negotiate -u : http://`hostname`/auth-kerberos/Unauthorized
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn’t understand how to supply
the credentials required.
Apache/2.4.46 (Debian) Server at web.ipadomain0.ru Port 80Расположение таблицы ключей зависит от выбранного способа входа (способа получения билетов Kerberos) и от установленного клиента домена. Например, возможный вариант значения, когда таблица ключей хранится в файле:
klist
Ticket cache: KEYRING:persistent:1000:1000
Default principal: admin@IPADOMAIN0.RU Valid starting Expires Service principal
03.11.2021 11:26:24 04.11.2021 11:26:22 krbtgt/IPADOMAIN0.RU@IPADOMAIN0.RUcurl —negotiate -u : http://`hostname`/auth-kerberos/
Тестовая страница для проверки аутентификации Kerberos.
Если вы видите этот текст, то аутентификация выполнена успешно.Настройка web-браузеров
Для работы с web-сервером, настроенным в соответствии с настоящей статьей, web-браузер пользователя должен поддерживать аутентификацию negotiate.
Настройка web-браузера Mozilla Firefox
Для включения аутентификации в web-браузере Mozilla Firefox в настройках, доступных по адресу about:config, необходимо указать для каких серверов доступна аутентификация negotiate. Для выполнения данной настройки в качестве значений параметра
network.negotiate-auth.trusted-uris
задать маски доменов или, в общем случае, разрешить использовать любые http- и https-соединения, указав, например, значения:
При необходимости обеспечения сквозной аутентификации в браузере Mozilla Firefox в настройках в качестве значений параметра
network.negotiate-auth.delegation-uris
задать маски доменов, которым можно передавать данные для сквозной аутентификации. При этом в запускаемых сценариях должна быть определена переменная окружения KRB5CCNAME. Например, для сценариев php это будет выглядеть так:
putenv("KRB5CCNAME=".$_SERVER[’KRB5CCNAME’]);
Настройка web-браузера Konqueror
В современных версиях браузера Konqueror поддержка аутентификации присутствует автоматически.
Astra linux apache kerberos
На компьютере — 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 внести настройки:
ServerAdmin webmaster@localhost
DocumentRoot /var/www
ErrorLog $/error.log
CustomLog $/access.log combinedAuthType 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
Создать каталог для виртуального сервера:
На компьютере — 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
Настройка web-сервера
В ОС Astra Linux Special Edition все действия должны выполняться от имени имени администратора компьютера с высоким уровнем целостности.
Установить пакеты для ввода компьютера в домен, службу Apache2 и модуль авторизации через Kerberos:
На компьютере — контроллере домена FreeIPA
Получить авторизацию администратора домена, и, действуя от имени администратора домена, добавить службу HTTP:
Далее полученный файл /tmp/http.keytab нужно будет скопировать на web-сервер в каталог /etc/apache2/.
На компьютере — web-сервере Apache2 (Часть 2)
Скопировать keytab (файл /tmp/http.keytab) с контроллера домена на web-сервер в каталог /etc/apache2/.
Выставить права на keytab:
В конфигурацию виртуального хоста virtualhost в файле /etc/apache2/sites-available/000-default.conf внести настройки:
ServerAdmin webmaster@localhost DocumentRoot /var/www ErrorLog $/error.log CustomLog $/access.log combined 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 Создать каталог для виртуального сервера:
На компьютере — web-сервере назначить мандатные атрибуты каталогу с виртуальным сервером:
sudo pdpl-file 3:0:0xffffffffffffffff:ccnr /var/www/
sudo pdpl-file 3:0:0xffffffffffffffff:ccnr /var/www/html/Проверка работы мандатных ограничений
На компьютере — контроллере домена создать доменного пользователя, и выставить ему ненулевой «максимальный уровень конфиденциальности» (например, 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На любом компьютере, который должен выступать в роли клиента, в 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 должен предоставляться:
При входе на клиентский компьютер под пользовательской доменной учетной записью с ненулевым уровнем конфиденциальности должны быть доступны обе страницы.