misc:spnego
Это старая версия документа!
Содержание
Прозрачная авторизация доменного пользователя через NGINX
Инструкция написана для Ubuntu 24.04
Настройка времени
- Настройка временной зоны:
timedatectl set-timezone Europe/MoscowПросмотреть список временных зон можно командой:
timedatectl list-timezones
- Устанавливаем NTP-клиент Chrony
apt install chrony - Настраиваем список NTP-серверов для синхронизации времени в файле /etc/chrony/chrony.conf
... pool domain.local # pool ...
В данном случае указываем либо список IP-адресов (доменных имен) NTP-серверов в каждой строчке, либо просто указываем имя домена
- Запускаем демон chrony
systemctl enable chronyd --now
Сборка динамического модуля SPNEGO для NGINX
Скомпилировать модуль по инструкции можно на другом ПК скопировав потом файл ngx_http_auth_spnego_module.so
- Проверяем установленную версию NGINX:
nginx -V - Устанавливаем необходимые пакеты
apt install git build-essential libpcre++-dev zlib1g-dev libkrb5-dev libssl-dev libxslt-dev libgd-dev
- Скачиваем и распаковываем исходники nginx согласно установленной версии
cd ~ mkdir nginx-dev cd nginx-dev wget https://nginx.org/download/nginx-1.xx.x.tar.gz tar -xzvf nginx-1.xx.x.tar.gz
- Скачиваем и компилируем динамический модуль SPNEGO
cd ~/nginx-dev git clone https://github.com/stnoonan/spnego-http-auth-nginx-module.git cd nginx-1.xx.x ./configure --with-compat --add-dynamic-module=../spnego-http-auth-nginx-module make modules
В папке objs должен появиться файл ngx_http_auth_spnego_module.so
Установка динамического модуля SPNEGO
- Скопировать скомпилированный модуль ngx_http_auth_spnego_module.so
mkdir -p /usr/lib/nginx/modules cp path/to/ngx_http_auth_spnego_module.so /usr/lib/nginx/modules/
- Создать конфигурационный файл для модуля
vi /etc/nginx/modules-available/spnego-http-auth-nginx-module.conf
- Прописать в файл загрузку модуля
load_module "/usr/lib/nginx/modules/ngx_http_auth_spnego_module.so";
- Включить модуль для nginx
cd /etc/nginx/modules-enabled ln -s ../modules-available/spnego-http-auth-nginx-module.conf systemctl reload nginx
Интеграция с Active Directory
Настройка приведена для Windows Server 2016 и выше
Windows
- Создать нового пользователя для SPNEGO
- Открыть свойства созданного пользователя
- Перейти во вкладку Учетная запись
- В разделе Параметры учетной записи поставить галки:
- Запретить смену пароля пользователем
- Срок действия пароля не ограничен
- Данная учетная запись поддерживает 256-разрядное
- Открыть консоль cmd или Power Shell
- Выполнить команды
ktpass -princ host/foo.domain.local@DOMAIN.LOCAL -mapuser spnego_user@DOMAIN.LOCAL -pass * -out host.keytab -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 ktpass -princ HTTP/foo.domain.local@DOMAIN.LOCAL -mapuser spnego_user@DOMAIN.LOCAL -pass * -out http.keytab -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1
где foo.domain.local - адрес сайта, spnego_user - пользователь для SPNEGO
- Проверяем корректность SPN
setspn -Q */foo.domain.local
где foo.domain.local - адрес сайта
- Если всё верно, то должно вывести примерно следующее
Checking domain DC=domain,DC=local CN=...,OU=...,DC=domain,DC=local HTTP/foo.domain.local host/foo.domain.local
misc/spnego.1781974196.txt.gz · Последнее изменение: — nikolay
