Настройка SSO (Single Sign On) авторизации на Apache в Active Directory Windows на Debian 10 Buster.
SSO (Single Sing-on) – позволяет пользователям вошедшим в систему не вводить пароль при авторизации на доменных сетевых ресурсах. Этот же механизм можно запросто прикрепить к Apache, что бы позволить доменным пользователям проходить аутентификацию, например на внутреннем сайте компании, не вводя имя пользователя и пароль.
Исходные данные:
- Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
- Веб-сервер (webserver) (Apache 2.4.10) на Debian 10 Buster.
[stextbox id=’info’]ИНФОРМАЦИЯ. Данная статья так же применительная будет ко всем debian-like системам.[/stextbox]
Подготовка системы
# Обновляем информацию о репозиториях и обновляем установленные пакеты:
apt-get update && apt-get upgrade -y
Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname
:
webserver.jakonda.local
JUQwJUE0JUQwJUIwJUQwJUI5JUQwJUJCJUMyJUEwJTJGZXRjJTJGaG9zdHMlQzIlQTAlRDAlQkYlRDElODAlRDAlQjglRDAlQjIlRDAlQkUlRDAlQjQlRDAlQjglRDAlQkMlMjAlRDAlQkElMjAlRDAlQjIlRDAlQjglRDAlQjQlRDElODMlMjAlRDElODIlRDAlQjAlRDAlQkElRDAlQjglRDAlQkMlMjAlRDAlQkUlRDAlQjElRDElODAlRDAlQjAlRDAlQjclRDAlQkUlRDAlQkMlMkMlMjAlRDElODclRDElODIlRDAlQkUlRDAlQjElRDElOEIlMjAlRDAlQjIlMjAlRDAlQkQlRDElOTElRDAlQkMlMjAlRDAlQjElRDElOEIlRDAlQkIlRDAlQjAlMjAlRDAlQjclRDAlQjAlRDAlQkYlRDAlQjglRDElODElRDElOEMlMjAlRDElODElMjAlRDAlQkYlRDAlQkUlRDAlQkIlRDAlQkQlRDElOEIlRDAlQkMlMjAlRDAlQjQlRDAlQkUlRDAlQkMlRDAlQjUlRDAlQkQlRDAlQkQlRDElOEIlRDAlQkMlMjAlRDAlQjglRDAlQkMlRDAlQjUlRDAlQkQlRDAlQjUlRDAlQkMlMjAlRDAlQkElRDAlQkUlRDAlQkMlRDAlQkYlRDElOEMlRDElOEUlRDElODIlRDAlQjUlRDElODAlRDAlQjAlMjAlRDAlQjglMjAlRDElODElMjAlRDAlQkElRDAlQkUlRDElODAlRDAlQkUlRDElODIlRDAlQkElRDAlQjglRDAlQkMlMjAlRDAlQjglRDAlQkMlRDAlQjUlRDAlQkQlRDAlQjUlRDAlQkMlMkMlMjAlRDElODElRDElODElRDElOEIlRDAlQkIlRDAlQjAlRDElOEUlRDElODklRDAlQjAlRDElOEYlRDElODElRDElOEYlMjAlRDAlQkQlRDAlQjAlMjAlRDAlQkUlRDAlQjQlRDAlQjglRDAlQkQlMjAlRDAlQjglRDAlQjclMjAlRDAlQjIlRDAlQkQlRDElODMlRDElODIlRDElODAlRDAlQjUlRDAlQkQlRDAlQkQlRDAlQjglRDElODUlMjBJUCUyMCVEMSU4NSVEMCVCRSVEMSU4MSVEMSU4MiVEMCVCMCUzQQ==
127.0.0.1 localhost 127.0.1.1 webserver.jakonda.local webserver
Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:
apt-get install ntp ntpdate ntpdate dc1.jakonda.local
JTVCc3RleHRib3glMjBpZCUzRCVFMiU4MCU5OWluZm8lRTIlODAlOTklNUQlRDAlOTElRDAlQkUlRDAlQkIlRDAlQjUlRDAlQjUlMjAlRDAlQkYlRDAlQkUlRDAlQjQlRDElODAlRDAlQkUlRDAlQjElRDAlQkQlRDAlQkUlMjAlRDAlQkUlMjAlRDElODElRDAlQjglRDAlQkQlRDElODUlRDElODAlRDAlQkUlRDAlQkQlRDAlQjglRDAlQjclRDAlQjAlRDElODYlRDAlQjglRDAlQjglMjAlRDAlQjIlRDElODAlRDAlQjUlRDAlQkMlRDAlQjUlRDAlQkQlRDAlQjglMjAlRDAlQkQlRDAlQjAlMjBEZWJpYW4lMjAlRDAlQkMlRDAlQkUlRDAlQjYlRDAlQkQlRDAlQkUlMjAlRDAlQkYlRDAlQkUlRDElODclRDAlQjglRDElODIlRDAlQjAlRDElODIlRDElOEMlMjAlRDAlQjIlMjAlRDElOEQlRDElODIlRDAlQkUlRDAlQjklMjAlRDElODElRDElODIlRDAlQjAlRDElODIlRDElOEMlRDAlQjUlNUIlMkZzdGV4dGJveCU1RA==
Настройка Active Directory
В DNS зону (JAKONDA.LOCAL), добавляем A-запись веб-сервера:
JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJCJUQxJTgzJUQwJUI2JUQwJUI1JUQwJUIxJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThGJTIwKCVEMCVCRiVEMSU4MCVEMCVCOCVEMCVCQy4lMjBhcGFjaGUpJTJDJTIwJUQxJTgxJUMyJUEwJUQwJUIxJUQwJUI1JUQxJTgxJUQwJUJBJUQwJUJFJUQwJUJEJUQwJUI1JUQxJTg3JUQwJUJEJUQxJThCJUQwJUJDJTIwJUQxJTgxJUQxJTgwJUQwJUJFJUQwJUJBJTIwJUQwJUI0JUQwJUI1JUQwJUI5JUQxJTgxJUQxJTgyJUQwJUIyJUQwJUI4JUQxJThGJTIwJUQwJUJGJUQwJUIwJUQxJTgwJUQwJUJFJUQwJUJCJUQxJThGLg==
JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwS0VZVEFCLSVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiUyMCglRDAlQkQlRDAlQjUlRDAlQkUlRDAlQjElRDElODUlRDAlQkUlRDAlQjQlRDAlQjglRDAlQkMlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQjAlRDElODMlRDElODIlRDAlQjUlRDAlQkQlRDElODIlRDAlQjglRDElODQlRDAlQjglRDAlQkElRDAlQjAlRDElODYlRDAlQjglRDAlQjglMjAlRDAlQkYlRDAlQkUlRDAlQkIlRDElOEMlRDAlQjclRDAlQkUlRDAlQjIlRDAlQjAlRDElODIlRDAlQjUlRDAlQkIlRDAlQjUlRDAlQjklMjAlRDAlQjIlMjBBY3RpdmUlMjBEaXJlY3RvcnkpLiUyMCVEMCU5MiUyMCVEMCVCQSVEMCVCRSVEMCVCQyVEMCVCMCVEMCVCRCVEMCVCNCVEMCVCRCVEMCVCRSVEMCVCOSUyMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCQSVEMCVCNSUyMCVEMSU4MSUyMCVEMCVCRiVEMSU4MCVEMCVCMCVEMCVCMiVEMCVCMCVEMCVCQyVEMCVCOCUyMCVEMCVCMCVEMCVCNCVEMCVCQyVEMCVCOCVEMCVCRCVEMCVCOCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCMCVEMSU4MiVEMCVCRSVEMSU4MCVEMSU4QiUyMCVEMCVCMiVEMSU4QiVEMCVCRiVEMCVCRSVEMCVCQiVEMCVCRCVEMSU4RiVEMCVCNSVEMCVCQyUyMCVEMCVCQSVEMCVCRSVEMCVCQyVEMCVCMCVEMCVCRCVEMCVCNCVEMSU4MyUyMCglRDElODElRDAlQkUlRDAlQjElRDAlQkIlRDElOEUlRDAlQjQlRDAlQjAlRDElOEYlMjAlRDElODAlRDAlQjUlRDAlQjMlRDAlQjglRDElODElRDElODIlRDElODApJTNB
ktpass -princ HTTP/webserver.jakonda.local@JAKONDA.LOCAL -mapuser apache@JAKONDA.LOCAL -pass Aa1234567 -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\webserver.keytab
JUQwJTlGJUQwJUJFJUQwJUJCJUQxJTgzJUQxJTg3JUQwJUI1JUQwJUJEJUQwJUJEJUQxJThCJUQwJUI5JUMyJUEwS0VZVEFCLSVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiUyQyUyMCVEMCVCRiVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCNCVEMCVCMCVEMCVCNSVEMCVCQyUyMCVEMCVCQiVEMSU4RSVEMCVCMSVEMSU4QiVEMCVCQyUyMCVEMSU4MyVEMCVCNCVEMCVCRSVEMCVCMSVEMCVCRCVEMSU4QiVEMCVCQyUyMCVEMSU4MSVEMCVCRiVEMCVCRSVEMSU4MSVEMCVCRSVEMCVCMSVEMCVCRSVEMCVCQyUyMCVEMCVCRCVEMCVCMCUyMCVEMCU5MiVEMCVCNSVEMCVCMS0lRDElODElRDAlQjUlRDElODAlRDAlQjIlRDAlQjUlRDElODAlMjAoJUQxJTgwJUQwJUIwJUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJFJUQwJUI2JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwS0VZVEFCLSVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiVEMCVCMCUyMCVEMCVCRCVEMCVCMCUyMCVEMCVCQyVEMCVCRSVEMCVCNSVEMCVCQyUyMCVEMCVCMiVEMCVCNSVEMCVCMS0lRDElODElRDAlQjUlRDElODAlRDAlQjIlRDAlQjUlRDElODAlRDAlQjUlMjAlRTIlODAlOTQlMjAlMkZldGMlMkZ3ZWJzZXJ2ZXIua2V5dGFiKS4lMjAlRDAlOUElRDAlQjAlRDAlQkElMjAlRDAlQkYlRDAlQjUlRDElODAlRDAlQjUlRDAlQjQlRDAlQjAlRDElODIlRDElOEMlMjAlRDElODQlRDAlQjAlRDAlQjklRDAlQkIlMjAlRDAlQkYlRDAlQkUlRDElODElRDElODAlRDAlQjUlRDAlQjQlRDElODElRDElODIlRDAlQjIlRDAlQkUlRDAlQkMlMjAlRDElODMlRDElODIlRDAlQjglRDAlQkIlRDAlQjglRDElODIlRDElOEIlMjBQdVRUWSUyMCVEMCVCQyVEMCVCRSVEMCVCNiVEMCVCRCVEMCVCRSUyMCVEMCVCRiVEMSU4MCVEMCVCRSVEMSU4NyVEMCVCOCVEMSU4MiVEMCVCMCVEMSU4MiVEMSU4QyVDMiVBMCVEMSU4MiVEMSU4MyVEMSU4Mg==
Настройка Kerberos
Установка Kerberos:
apt-get install krb5-user libapache2-mod-auth-kerb
[stextbox id=’info’]В ходе установки может появится запрос указать область по-умолчанию для Kerberos, область необходимо его указать в заглавном виде (прим. JAKONDA.LOCAL
)[/stextbox]
Файл конфигурации Kerberos /etc/krb5.conf
, приводим к виду:
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = JAKONDA.LOCAL default_keytab_name = /etc/webserver.keytab dns_lookup_kdc = false dns_lookup_realm = false forwardable = true ticket_lifetime = 24h [realms] JAKONDA.LOCAL = { kdc = dc1.jakonda.local default_domain = JAKONDA.LOCAL admin_server = dc1.jakonda.local } [domain_realm] .jakonda.local = JAKONDA.LOCAL jakonda.local = JAKONDA.LOCAL
JUQwJTlGJUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI1JUQxJTgwJUQwJUJBJUQwJUIwJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTgyJUQxJThCJTIwS2VyYmVyb3MlMkMlMjAlRDAlQjIlRDElOEIlRDAlQkYlRDAlQkUlRDAlQkIlRDAlQkQlRDAlQjglRDAlQkMlMjAlRDAlQjAlRDAlQjIlRDElODIlRDAlQkUlRDElODAlRDAlQjglRDAlQjclRDAlQjAlRDElODYlRDAlQjglRDElOEUlMjAlRDAlQjIlMjBBY3RpdmUlMjBEaXJlY3RvcnklM0E=
kinit -kV -p HTTP/webserver.jakonda.local Using default cache: /tmp/krb5cc_0 Using principal: HTTP/webserver.jakonda.local@JAKONDA.LOCAL Authenticated to Kerberos v5
Удаляем полученный билет:
kdestroy
Настройка Apache
Выставляем права на KEYTAB-файл для веб-сервера:
chown root:www-data /etc/webserver.keytab chmod 640 /etc/webserver.keytab
В качестве примера Kerberos аутентификации в Apache, в конфигурацию веб-сервера по-умолчанию (000-default.conf
), добавляем:
<VirtualHost *:80> # ... ServerName webserver.jakonda.local <Location /> AuthType Kerberos AuthName "Kerberos authenticated intranet" KrbAuthRealms JAKONDA.LOCAL KrbServiceName HTTP/webserver.jakonda.local Krb5Keytab /etc/webserver.keytab KrbMethodNegotiate On KrbMethodK5Passwd On KrbSaveCredentials Off KrbLocalUserMapping On KrbVerifyKDC Off Require valid-user </Location> </VirtualHost>
Чтобы SSO аутентификации проходила корректно, необходимо добавить веб-сервер в зону местной интрасети:
JTVCc3RleHRib3glMjBpZCUzRCVFMiU4MCU5OXdhcm5pbmclRTIlODAlOTklNUQlRDAlQTUlRDAlQkUlRDElODclRDElODMlMjAlRDAlQkUlRDAlQjElRDElODAlRDAlQjAlRDElODIlRDAlQjglRDElODIlRDElOEMlMjAlRDAlQjIlRDAlQkQlRDAlQjglRDAlQkMlRDAlQjAlRDAlQkQlRDAlQjglRDAlQjUlMkMlMjAlRDElODclRDElODIlRDAlQkUlMjAlRDAlQkYlRDElODAlRDAlQjglMjAlRDAlQkYlRDAlQkUlRDAlQkYlRDElOEIlRDElODIlRDAlQkElRDAlQjUlMjAlRDAlQjQlRDAlQkUlRDElODElRDElODIlRDElODMlRDAlQkYlRDAlQjAlMjAlRDAlQkQlRDAlQjAlMjAlRDElODElRDAlQjAlRDAlQjklRDElODIlMjAlRDAlQkYlRDAlQkUlMjBJUC0lRDAlQjAlRDAlQjQlRDElODAlRDAlQjUlRDElODElRDElODMlMjBTU08lMjAlRDAlQjAlRDElODMlRDElODIlRDAlQjUlRDAlQkQlRDElODIlRDAlQjglRDElODQlRDAlQjglRDAlQkElRDAlQjAlRDElODYlRDAlQjglRDElOEYlMjAlRDElODAlRDAlQjAlRDAlQjElRDAlQkUlRDElODIlRDAlQjAlRDElODIlRDElOEMlMjAlRDAlQkQlRDAlQjUlMjAlRDAlQjElRDElODMlRDAlQjQlRDAlQjUlRDElODIuJTIwJUQwJTlEJUQwJUI1JUQwJUJFJUQwJUIxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJUQwJUJFJTIwJUQwJUJFJUQwJUIxJUQxJThGJUQwJUI3JUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUI0JUQwJUJFJUQwJUJDJUQwJUI1JUQwJUJEJUQwJUJEJUQwJUJFJUQwJUI1JTIwJUQwJUI4JUQwJUJDJUQxJThGJTIwKCVEMCVCRiVEMSU4MCVEMCVCOCVEMCVCQy4lMjBodHRwJTNBJTJGJTJGd2Vic2VydmVyKSU1QiUyRnN0ZXh0Ym94JTVE
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
подскажите, я развернул APACHEDS настроил его, а как теперь на виндовсе ввести компьютер в этот домен apacheds а?
Не пробовали штатными способами как и в случае с доменом на базе Windows ?
Я с ApacheDS не работал.
Я вот развернул ejabberd в docker, настроил ldap авторизацию все работает, а вот как прикрутить SSO к этому делу разобраться не могу. Это вообще реально? может кто делал?
Добрый день!
Подскажите, можно ли сделать аутентификацию на основе групп AD? Т.е. пользователи не принадлежащие группе, не смогли бы войти на сервер?
а как сделать чтобы при листинге директории через apache были видны при монтированные разделы nfs
Подскажите а сервер нужно в домен вводить?
Нет, сервер в домен вводить не нужно