Apache2/AD-auth: различия между версиями
(Новая страница: «{{Stub}} Исходные данные: *Домен ActiveDirectory DOMG.TESTG *Web-сервер apserver введенный в домен с помощью sssd З...») |
Нет описания правки |
||
Строка 6: | Строка 6: | ||
Задача: | Задача: | ||
*Настроить аутентификацию Apache2 с PHP через AD | *Настроить аутентификацию Apache2 с PHP через AD | ||
==Создание keytab-файла== | |||
Для работы доменной аутентификации нам необходим keytab-файл, его можно сгенерировать на сервере домена или с помощью samba на машине с web-сервером.<br> | Для работы доменной аутентификации нам необходим keytab-файл, его можно сгенерировать на сервере домена или с помощью samba на машине с web-сервером.<br> | ||
Воспользуемся вторым вариантом.<br> | Воспользуемся вторым вариантом.<br> | ||
Строка 49: | Строка 49: | ||
HTTP/apserver.domg.testg@DOMG.TESTG: kvno = 3 | HTTP/apserver.domg.testg@DOMG.TESTG: kvno = 3 | ||
HTTP/apserver@DOMG.TESTG: kvno = 3</pre> | HTTP/apserver@DOMG.TESTG: kvno = 3</pre> | ||
В целях безопасности необходимо создать отдельный keytab-файл для apache2. Сделать это можно с помощью утилиты ktutil из пакета krb5-kadmin. | |||
Установим krb5-kadmin: | |||
<pre># apt-get install krb5-kadmin</pre> | |||
Скопируем системный keytab в папку с apache2: | |||
<pre># cp /etc/krb5.keytab /etc/httpd2/apache2.keytab</pre> | |||
Создадим apache2.keytab с помощью ktutil, оставив только HTTP ключи: | |||
<pre># ktutil | |||
ktutil: </pre> | |||
Загрузим системный keytab: | |||
<pre>ktutil: read_kt /etc/krb5.keytab</pre> | |||
Посмотреть список ключей можно с помощью команды list: | |||
<pre>ktutil: list</pre> | |||
Нам необходимо оставить записи с меткой HTTP, удалив все остальные с помощью команды delent: | |||
<pre>ktutil: delent 1</pre> | |||
В итоге файл должен выглядеть так: | |||
<pre>ktutil: list | |||
slot KVNO Principal | |||
---- ---- --------------------------------------------------------------------- | |||
1 3 HTTP/apserver.domg.testg@DOMG.TESTG | |||
2 3 HTTP/APSERVER@DOMG.TESTG | |||
3 3 HTTP/apserver.domg.testg@DOMG.TESTG | |||
4 3 HTTP/APSERVER@DOMG.TESTG | |||
5 3 HTTP/apserver.domg.testg@DOMG.TESTG | |||
6 3 HTTP/APSERVER@DOMG.TESTG | |||
7 3 HTTP/apserver.domg.testg@DOMG.TESTG | |||
8 3 HTTP/APSERVER@DOMG.TESTG | |||
9 3 HTTP/apserver.domg.testg@DOMG.TESTG | |||
10 3 HTTP/APSERVER@DOMG.TESTG</pre> | |||
Сохраним получившийся keytab: | |||
<pre>ktutil: write_kt /etc/httpd2/apache2.keytab</pre> | |||
Поменяем владельца и права доступа: | |||
<pre># chown apache2:apache2 /etc/httpd2/apache2.keytab | |||
# chmod 0440 /etc/httpd2/apache2.keytab</pre> | |||
==Настройка Apache2== | |||
Установим и включим необходимые модули: | |||
<pre># apt-get install apache2-mod_auth_kerb | |||
# a2enmod auth_krb5 | |||
# a2enmod authn_core | |||
# a2enmod authz_user | |||
# systemctl restart httpd2</pre> | |||
Удобнее всего настраивать модуль с помощью .htaccess файлов.<br> | |||
Для этого разрешим использование файла .htaccess в настройках сайта: | |||
<pre>... | |||
<Directory "/var/www/html"> | |||
AllowOverride All | |||
</Directory> | |||
...</pre> | |||
Пример настройки .htaccess для аутентификации доменного пользователя для корневого каталога сайта: | |||
<pre> | |||
AuthType Kerberos | |||
AuthName "Kerberos Login" | |||
KrbMethodNegotiate On | |||
KrbMethodK5Passwd On | |||
KrbAuthRealms DOMG.TESTG | |||
Krb5KeyTab /etc/httpd2/apache2.keytab | |||
KrbServiceName HTTP | |||
KrbSaveCredentials On | |||
require valid-user | |||
</pre> | |||
== Настройка PHP аутентификации GSSAPI == |
Версия от 12:08, 9 марта 2017
Исходные данные:
- Домен ActiveDirectory DOMG.TESTG
- Web-сервер apserver введенный в домен с помощью sssd
Задача:
- Настроить аутентификацию Apache2 с PHP через AD
Создание keytab-файла
Для работы доменной аутентификации нам необходим keytab-файл, его можно сгенерировать на сервере домена или с помощью samba на машине с web-сервером.
Воспользуемся вторым вариантом.
Минимально необходимая конфигурация samba:
[global] workgroup = DOMG realm = DOMG.TESTG security = ads passdb backend = tdbsam kerberos method = system keytab
Проверим конфигурационный файл samba:
# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions
Войдем в домен с помощью samba:
# net ads join -U Administrator
Проверим вход в домен:
# net ads testjoin Join is OK
Создадим и добавим в системный keytab принципала сервиса "HTTP":
# net ads keytab add HTTP -U Administrator
Проверим наш keytab:
# klist -ek /etc/krb5.keytab ... 3 HTTP/apserver.domg.testg@DOMG.TESTG (des-cbc-crc) 3 HTTP/APSERVER@DOMG.TESTG (des-cbc-crc) 3 HTTP/apserver.domg.testg@DOMG.TESTG (des-cbc-md5) 3 HTTP/APSERVER@DOMG.TESTG (des-cbc-md5) 3 HTTP/apserver.domg.testg@DOMG.TESTG (aes128-cts-hmac-sha1-96) 3 HTTP/APSERVER@DOMG.TESTG (aes128-cts-hmac-sha1-96) 3 HTTP/apserver.domg.testg@DOMG.TESTG (aes256-cts-hmac-sha1-96) 3 HTTP/APSERVER@DOMG.TESTG (aes256-cts-hmac-sha1-96) 3 HTTP/apserver.domg.testg@DOMG.TESTG (arcfour-hmac) 3 HTTP/APSERVER@DOMG.TESTG (arcfour-hmac) ...
Так же можно проверить получение билета kerberos для созданных принципалов сервиса:
# kinit Administrator # kvno HTTP/apserver.domg.testg@DOMG.TESTG HTTP/apserver@DOMG.TESTG HTTP/apserver.domg.testg@DOMG.TESTG: kvno = 3 HTTP/apserver@DOMG.TESTG: kvno = 3
В целях безопасности необходимо создать отдельный keytab-файл для apache2. Сделать это можно с помощью утилиты ktutil из пакета krb5-kadmin. Установим krb5-kadmin:
# apt-get install krb5-kadmin
Скопируем системный keytab в папку с apache2:
# cp /etc/krb5.keytab /etc/httpd2/apache2.keytab
Создадим apache2.keytab с помощью ktutil, оставив только HTTP ключи:
# ktutil ktutil:
Загрузим системный keytab:
ktutil: read_kt /etc/krb5.keytab
Посмотреть список ключей можно с помощью команды list:
ktutil: list
Нам необходимо оставить записи с меткой HTTP, удалив все остальные с помощью команды delent:
ktutil: delent 1
В итоге файл должен выглядеть так:
ktutil: list slot KVNO Principal ---- ---- --------------------------------------------------------------------- 1 3 HTTP/apserver.domg.testg@DOMG.TESTG 2 3 HTTP/APSERVER@DOMG.TESTG 3 3 HTTP/apserver.domg.testg@DOMG.TESTG 4 3 HTTP/APSERVER@DOMG.TESTG 5 3 HTTP/apserver.domg.testg@DOMG.TESTG 6 3 HTTP/APSERVER@DOMG.TESTG 7 3 HTTP/apserver.domg.testg@DOMG.TESTG 8 3 HTTP/APSERVER@DOMG.TESTG 9 3 HTTP/apserver.domg.testg@DOMG.TESTG 10 3 HTTP/APSERVER@DOMG.TESTG
Сохраним получившийся keytab:
ktutil: write_kt /etc/httpd2/apache2.keytab
Поменяем владельца и права доступа:
# chown apache2:apache2 /etc/httpd2/apache2.keytab # chmod 0440 /etc/httpd2/apache2.keytab
Настройка Apache2
Установим и включим необходимые модули:
# apt-get install apache2-mod_auth_kerb # a2enmod auth_krb5 # a2enmod authn_core # a2enmod authz_user # systemctl restart httpd2
Удобнее всего настраивать модуль с помощью .htaccess файлов.
Для этого разрешим использование файла .htaccess в настройках сайта:
... <Directory "/var/www/html"> AllowOverride All </Directory> ...
Пример настройки .htaccess для аутентификации доменного пользователя для корневого каталога сайта:
AuthType Kerberos AuthName "Kerberos Login" KrbMethodNegotiate On KrbMethodK5Passwd On KrbAuthRealms DOMG.TESTG Krb5KeyTab /etc/httpd2/apache2.keytab KrbServiceName HTTP KrbSaveCredentials On require valid-user