Настройка Kerberos аутентификации в ЕПП, Apache2, PHP-FPM#

Исходные данные#

Имеется сервер контроллера домена FreeIPA:

  • имя домена astra.aaa

  • администратор домена admin@astra.aaa

  • пользователь домена user-01@astra.aaa

  • имя сервера dc-01.astra.aaa

  • сервер имеет постоянный IP-адрес, например, 192.168.1.20

Веб-сервер располагается отдельно:

  • имя сервера websrv-01.astra.aaa

  • сервер должен быть введен в домен

  • на сервере установлен и настроен web-сервер Apache2

  • сервер имеет постоянный IP-адрес, например, 192.168.1.21

Сервер базы данных располагается отдельно:

  • имя сервера dbsrv-01.astra.aaa

  • сервер должен быть введен в домен

  • на сервере должна быть установлена и настроенная СУБД Postgresql

  • сервер имеет постоянный IP-адрес, например, 192.168.1.23

Пользовательский компьютер располагается на отдельном компьютере:

  • имя компьютера pc-01.astra.aaa

  • компьютер должен быть введен в домен

  • компьютер имеет постоянный IP-адрес, например, 192.168.1.22

Основная концепция, реализация веб-приложения на языке программирования PHP#

Пользователь домена со своего компьютера отправляет запрос c аутентификацией Kerberos, на сервер приложения Apache2. Веб сервер Apache2 производит аутентификацию пользователя, если аутентификация прошла успешно, то запускает PHP-FPM и создает делегируемый Kerberos кэш, если аутентификации прошла неуспешно выдает ошибку. PHP добавляет в окружение переменную KRB5CCNAME и в строку подключения к базе данных имя пользователя взятые из заголовка запроса. Далее коннектор php-pgsql, производит запрос к БД Postgresql. БД производит аутентификацию, если требуется авторизацию, и отдаёт данные пользователю.

Настройка компьютера пользователя#

Для настройки компьютера пользователя необходимо перейти по ссылке и выполнить действия по инструкции:

Настройка сервера базы данных#

Для настройки сервера базы данных необходимо перейти по ссылке и выполнить действия по инструкции:

Установка и настройка веб-сервера Apache2#

Для установки и настройки веб-сервера Apache2 необходимо перейти по ссылке и выполнить действия по инструкции:

Установка веб-приложения#

Для установки и настройки веб-приложения необходимо:

Пункт 1#

  • установить следующие пакеты пакет:

sudo apt install php-fpm php-pgsql

Пункт 2#

Пункт 3#

  • создать файл index.php по пути /var/www/public_html:

sudo nano /var/www/public_html/index.php

Пункт 4#

  • файл index.php должен иметь следующее содержимое:

<?php

    putenv("KRB5CCNAME=" . $_SERVER['KRB5CCNAME']);

    $host = "dbsrv-01.astra.aaa";
    $dbname = "postgres";
    $user = $_SERVER['REMOTE_USER'];

    $dsn = "pgsql:host=$host;dbname=$dbname;";

    try {
        $pdo = new PDO($dsn, $user, '');
        $stmt = $pdo->query('SELECT version()');
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            print_r($row);
        }
    } catch (PDOEXCEPTION $e) {
        die ("Error: " . $e->getMessage());
    }
?>

Тестирование веб-приложения#

Пункт 1#

  • запустите предварительно настроенный браузер и вставьте следующую ссылку:

http:\\websrv-01.astra.aaaa

Пункт 2#

  • возвращённая страница должна содержать ответ:

Array ([version] => PostgreSQL 15.6 (Debian 15.6-astra.se2+b1) on x86_64-pc-linux-gnu, compiled by gcc (Astra 12.2.0-14.astra3+b1) 12.2.0, 64-bit)