Развёртывание Icinga 2 на базе Debian 12. Часть 6. Конфигурация веб-сервера Apache для интеграции Icinga Web 2 c Active Directory

Deploying Icinga 2 on Debian 12. Part 6. Configuring the Apache web server to integrate Icinga Web 2 with Active DirectoryВ этой заключительной части нашего плана развёртывания Icinga на Debian GNU/Linux 12 "Bookworm" мы коротко обозначим основные моменты конфигурации веб-сервера Apache для интеграции Icinga Web 2 со службой каталогов Microsoft Active Directory, опираясь на более подробный материал, изложенный ранее в статье "Аутентификация и авторизация пользователей Active Directory в Icinga Web 2 (Kerberos и SSO)".

Рассмотренные в этой статье разделы "Подготовка инфраструктуры", "Создаём политику PAM", "Добавляем LDAP-ресурс для авторизации в Icinga Web 2", "Добавляем User Backend для аутентификации в Icinga Web 2", "Добавляем User Group Backend для авторизации в Icinga Web 2", "Проверяем возможность поиска доменных групп", "Создаём роли с привязкой к доменным группам" справедливы и для нового развёртывания Icinga 2 на базе Debian 12.

Отличия появляются для раздела "Настройка Apache на Kerberos-аутентификацию и PAM авторизацию". При установке модулей к Apache вместо модуля libapache2-mod-auth-kerb теперь потребуется установить libapache2-mod-auth-gssapi:

# apt-get install libapache2-mod-auth-gssapi libapache2-mod-authnz-pam

Устанавливаемые модули будут автоматически включены в конфигурацию Apache на заключительном этапе установки. Можно проверить, присутствуют ли среди активированных модулей Apache нужные нам модули:

# apache2ctl -M | grep -E "gss|pam"

auth_gssapi_module (shared)
authnz_pam_module (shared)

Правим конфигурацию виртуального каталога "/icingaweb2":

# nano /etc/apache2/conf-available/icingaweb2.conf

Содержимое конфигурации сайта будет с учётом использования модуля auth_gssapi_module и конечный вид файла может быть таким:

Alias /icingaweb2 "/usr/share/icingaweb2/public"

<Directory "/usr/share/icingaweb2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None
    #Require all granted

    AuthType GSSAPI
    AuthName "Kerberos Authentication"
    #GssapiSSLonly On
    GssapiBasicAuth Off
    GssapiAllowedMech krb5
    GssapiNegotiateOnce On
    GssapiCredStore keytab:/etc/krb5.keytab
    #Require valid-user
    Require pam-account apache2-icingaweb2
    ErrorDocument 401 /IcingaUnauthorized.html

    SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /icingaweb2/
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]
    </IfModule>

    <IfModule !mod_rewrite.c>
        DirectoryIndex error_norewrite.html
        ErrorDocument 404 /icingaweb2/error_norewrite.html
    </IfModule>

    DirectoryIndex index.php
</Directory>

У пользователя (или его группы), от имени которого работает служба apache2 должен быть доступ на чтение к keytab файлу:

# chown root:www-data /etc/krb5.keytab
# chmod g+r /etc/krb5.keytab
# ls -la /etc/krb5.keytab

-rw-r----- 1 root www-data 5226 May 13 16:53 /etc/krb5.keytab

Ранее рассмотренные разделы "Страница ошибки 401 для Apache" и ""Защита соединений с веб-сервером с помощью SSL-сертификата" также актуальны.


Создадим новую конфигурацию сайта, который в обязательном порядке будет использовать SSL:

# nano /etc/apache2/sites-available/my.conf

Наполним файл содержимым:

<VirtualHost *:80>
    ServerName "KOM-MON01.holding.com"
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
    ServerName "KOM-MON01.holding.com"
    DocumentRoot "/var/www/html"
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/KOM-MON01.pem"
    SSLCertificateKeyFile "/etc/ssl/private/KOM-MON01.key"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Файл не содержит информации о конфигурации виртуального каталога "/icingaweb2", так как он эта конфигурация настроена нами ранее в подключаемом модуле /etc/apache2/conf-available/icingaweb2.conf.

Выключим дефолтный сайт apache (/etc/apache2/sites-available/000-default.conf):

# a2dissite 000-default

Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

Включим сайт созданной нами конфигурации (/etc/apache2/sites-available/my.conf):

# a2ensite my

Enabling site my.
To activate the new configuration, you need to run:
  systemctl reload apache2

Перезагрузим службу веб-сервера apache2:

# systemctl restart apache2

На этом этапе мы должны получить работающий сайт с Kerberos SSO и защищённый SSL.

Добавить комментарий