В этой заключительной части нашего плана развёртывания 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.
Добавить комментарий