Настройка Kerberos аутентификации (GSS), WSGI, Python#
Исходные данные#
Имеется сервер контроллера домена FreeIPA:
имя домена astra.aaa
администратор домена admin@astra.aaa
пользователь домена user-01@astra.aaa
имя сервера dc-01.astra.aaa
Веб-сервер данных располагается отдельно:
имя сервера websrv-01.astra.aaa
сервер должен быть введен в домен
сервер имеет постоянный IP-адрес, например, 192.168.1.21
Настройка операционной системы#
Для настройки операционной системы необходимо перейти по ссылке и выполнить действия по инструкции:
Ввод в домен Freeipa#
Для ввода в домен необходимо перейти по ссылке и выполнить действия по инструкции:
Выпуск таблицы ключей для Apache2#
Для выпуска таблицы необходимо перейти по ссылке и выполнить действия по инструкции:
Установка и настройка веб-сервера Apache2#
Для установки и настройки веб-сервера Apache2 необходимо:
Пункт 1#
установить пакет аpache2:
sudo apt install apache2
Пункт 2#
установить пакет, модуля аутентификации через Kerberos для службы apache2.
sudo apt install libapache2-mod-auth-gssapi
Предупреждение
Пакет libapache2-mod-auth-kerb удален из репозитория
Пункт 3#
установить пакет, модуля Apache для запуска Python 3 веб-приложений через WSGI-интерфейс.
sudo apt install libapache2-mod-wsgi-py3
Пункт 4#
в файле конфигурации apache2, находящемуся по пути /etc/apache2/apache2.conf, установить параметры:
AstraMode off
IncludeRealm on
Пункт 5#
включить в Apache2 следующие режимы:
sudo a2enmod wsgi
Пункт 6#
разместить, ранее полученный, файл с таблицей ключей по пути /etc/apache2/websrv-01.keytab.
Пункт 7#
проверить таблицу ключей:
sudo kinit "HTTP/werbsrv-01.astra.aaa@ASTRA.AAA" -V -k -t /etc/apache2/websrv-01.keytab
сравнить вывод проверки ключей с ниже написанным кодом:
administrator@websrv-01:~$ kinit "HTTP/websrv-01.astra.aaa@ASTRA.AAA" -V -k -t /etc/apache2/http.keytab
Using default cache: persistent:1001:1001
Using principal: HTTP/websrv-01.astra.aaa@ASTRA.AAA
Using keytab: /etc/apache2/http.keytab
Authenticated to Kerberos v5
Пункт 8#
установить права доступа к файлу:
sudo chown www-data:www-data /etc/apache2/websrv-01.keytab
sudo chmod 644 /etc/apache2/websrv-01.keytab
Пункт 9#
в конфигурацию виртуального хоста virtualhost, в файле /etc/apache2/sites-available/000-default.conf внести изменения:
<VirtualHost *:80>
# Основные настройки виртуального хоста
ServerName websrv-01.astra.aaa # Доменное имя сервера
DocumentRoot /var/www/flask_app # Корневая директория проекта
# Настройки WSGI
WSGIDaemonProcess project threads=1 processes=4 # Запуск 4 процессов WSGI с 1 потоком каждый
WSGIScriptAlias / /var/www/flask_app/wsgi.py # Связывание корня сайта с WSGI-приложением
<Directory /var/www/flask_app>
# Настройки доступа
AllowOverride None # Запрет использования .htaccess
# Группа процессов WSGI
WSGIProcessGroup project # Привязка к ранее созданной группе процессов
# Настройки Kerberos-аутентификации
AuthType GSSAPI # Тип аутентификации - Kerberos/GSSAPI
AuthName "GSSAPI" # Название зоны аутентификации
GssapiAllowedMech krb5 # Разрешить только механизм krb5
GssapiCredStore keytab:/etc/apache2/websrv-01.keytab # Путь к keytab-файлу
GssapiLocalName On # Использовать локальное имя пользователя
GssapiDelegCcacheDir /gss_cache # Директория для делегированных креденшиалов
Require valid-user # Требуется аутентифицированный пользователь
</Directory>
# Дополнительные настройки
Alias /error/ /var/www/error/ # Псевдоним для страниц ошибок
ErrorDocument 401 /error/401.html # Кастомная страница для ошибки 401
# Настройки логирования
LogLevel debug # Подробный уровень логирования
ErrorLog ${APACHE_LOG_DIR}/error.log # Лог ошибок
CustomLog ${APACHE_LOG_DIR}/access.log combined # Лог доступа
# Кодировка по умолчанию
AddDefaultCharset utf-8 # Установка UTF-8 как кодировки по умолчанию
</VirtualHost>
Пункт 10#
в корне создать папку /gss_cache, и установить права доступа:
sudo chmod 644 /gss_cache
Пункт 11#
перезапустить службу apache2:
sudo systemctl restart apache2