Настройка SSO аутентификации в Active Directory на прокси-сервере.

В данной инструкции описывается настройка аутентификации пользователей на веб-прокси через протокол Kerberos.

Данный функционал особенно актуален в доменной среде Active Directory (AD), где данная технология позволяет реализовать аутентификацию в стиле Single Sign On (SSO).

Примечание

SSO-аутентификация избавляет доменного пользователя от повторных запросов на прохождение аутентификации. Пользователь вводит доменный логин / пароль всего один раз - при логоне в операционную систему. При последующем обращении в Интернет через прокси-сервер, аутентификация происходит прозрачно и автоматически.

Настройка SSO аутентификации в Active Directory состоит из нескольких этапов:

Для дальнейшей настроки примем следующие значения:

локальная сеть

192.168.1.0/24

домен Active Directory

ztest.int

контроллер домена Active Directory

dc.ztest.int (Windows Server 2016)

IP адрес контроллера домена Active Directory

192.168.1.3

имя устройства TING

ting.ztest.int

IP адрес устройства TING

192.168.1.2

Примечание

Установка, настройка контроллера домена, а также разворачивание домена Active Directory должна осуществляться компетентными специалистами согласно документации. Мы предполагаем, что такая настройка уже выполнена согласно предоставленных выше данных.

Настройка домена Active Directory.

  • Создайте на доменном DNS-сервере нужные ресурсные записи для узла TING.

ting IN A 192.168.0.2 в прямой зоне ting.local
2.1.168.192.in-addr.arpa IN PTR ting.ztest.int. в обратной зоне 1.168.192.in-addr.arpa
  • Проверьте правильность введенных данных, выполнив следующие команды в терминале Windows:

    C:\Windows\system32>nslookup ting
    Server:  localhost
    Address:  127.0.0.1
    
    Name:    ting.ztest.int
    Address:  192.168.1.2
    
    
    C:\Windows\system32>nslookup 192.168.1.2
    Server:  localhost
    Address:  127.0.0.1
    
    Name:    ting.ztest.int
    Address:  192.168.1.2
    
  • Создайте учетную запись пользователя с правами, достаточными для выполнения LDAP запросов.

    Задайте даной учетной записи пароль и установите флажок Срок действия пароля неограничен.

    Примечание

    Данная учетная запись нам понадобится для настройки LDAP коннектора на устройстве TING.

Настройка устройства TING.

1. Настройка имени устройства и DNS

Пройдите в раздел Система -> Настройки -> Общие

Проверьте, чтоб следующие системные настройки были выполнены корректно:

Имя хоста

ting

Домен

ztest.int

  • Снять флаг Позволить переопределить список DNS-серверов DHCP/PPP на WAN

  • Установить флаг Не используйте локальную службу DNS в качестве сервера имен для этой системы

_images/sso_flags_dns.png

В поле DNS-серверы прописать IP адрес контроллера домена (192.168.1.3)

В случае, если вы используете встроенный сервер DNS, такой как Unbound DNS, вам необходимо согласно документации настроить переадресацию всех запросов DNS, а так же прямой и обратной зоны созданного вами домена.

_images/sso_single_unbound_dns.png

2. Настройка сетевого времени

Перейдите в раздел Службы -> Сетевое время -> Общие.

В поле Серверы времени укажите имя контроллера домена dc.ztest.int либо IP адрес контроллера домена 192.168.1.3.

Примечание

Время на контроллере домена и устройстве TING должно быть синхронизированно.

3. Настройка LDAP коннектора

Пройдите в раздел Система -> Доступ -> Серверы, в правом верхнем углу нажмите на кнопку Добавить сервер и задайте следующие настройки:

Описательное имя

INT-DC

Тип

LDAP

Имя хоста или IP-адрес

192.168.1.3

Значение порта

389

Транспортный протокол

TCP

Версия протокола

3

Привязать параметры доступа

имя и пароль [1]

Область поиска

Единичный уровень

Базовый DN

DC=ztest,DC=int

Контейнеры для аутентификации

CN=Users,DC=ztest,DC=int [2]

Начальный шаблон

Microsoft AD

Атрибут присвоения имени пользователю

sAMAccountName

4. Проверка LDAP коннектора

Пройдите в раздел Система -> Доступ -> Средство проверки

Выберите в списке созданный нами сервер, введите имя и пароль учетной записи домена.

Результатом должно быть сообщение об успешной проверке:

Пользователь: tinguser аутентификация прошла успешно
Этот пользователь состоит в этих группах:


Атрибуты, полученные от сервера:
dn => CN=tinguser,OU=ting,DC=ztest,DC=int

5. Настройки веб-прокси

  • В разделе Службы -> Веб-прокси -> Администрирование, на вкладке Основные настройки прокси, установите флаг Включить прокси, если он еще не установлен.

    _images/sso_enable_web_proxy.png
  • В разделе Службы -> Веб-прокси -> Администрирование, на вкладке Перенаправляющий прокси -> Настройка Аутентификации, в поле Метод аутентификации укажите ваш настроенный LDAP-коннектор.

    _images/sso_proxy_select_ldap.png
  • В разделе Службы -> Веб-прокси -> Администрирование, на вкладке Перенаправляющий прокси, в меню Основные настройки перенаправления снимите флаг Включить прозрачный HTTP-прокси, если он установлен.

    Примечание

    Использование механизма прозрачного HTTP-проксирования не совместимо ни с одним методом аутентификации. Чтобы использовать аутенитификацию Kerberos, данный механизм должен быть выключен.

6. Установка плагина os-proxy-sso

Пройдите в раздел Система -> Прошивка -> Обновления. На вкладке Плагины нажмите на кнопку + напротив плагина os-proxy-sso для его установки.

После установки плагина os-proxy-sso, в разделе Службы -> Веб-прокси появляется подраздел Технология единого входа (SSO).

Примечание

Настройка аутентификации по протоколу Kerberos может быть осуществлена как вручную, так и автоматически.
Предпочтительным является автоматический способ настройки, рассмотренный в п.7.
Ручной способ настройки аутентификации по протоколу Kerberos рассматривается в п.8.

7. Автоматическая настройка аутентификации по протоколу Kerberos

7.1 Включите Single Sign On

В разделе Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладке Общие настройки, установите флаг Включить единый вход для прокси-сервера.

При необходимости вы можете включить/выключить использование Basic аутентификации, установив/сняв соответствующий флажок Basic Autentification [3]

В поле Реализация AD Kerberos выберите значение Windows 2008 with AES.

_images/sso_enable.png

Примечание

При нажатии на кнопку Применить будут произведены следующие действия:

  • происходит автогенерация конфигурационного файла krb5.conf для библиотеки Kerberos

  • модифицируется конфигурационный файл Squid /usr/local/sbin/squid.conf для загрузки хелпера Kerberos-аутентификации negotiate_kerberos_auth

  • производится перезапуск веб-прокси сервера Squid

7.2 Настройте аутентификацию по протоколу Kerberos

  • Перейдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO) -> Аутентификация по протоколу Kerberos и нажмите кнопку Обновить

    _images/sso_check_kerb.png

    Все пункты, кроме Файл keytab должны быть отмечены зеленым.

    Если это не так - перепроверьте все шаги.

  • Создайте учетную запись компьютера с необходимыми SPN в Active Directory:

    В поле Имя администратора AD, укажите имя учетной записи администратора домена.

    В поле Пароль администратора AD, укажите пароль для учетной записи администратора домена.

    Нажмите на кнопку Создать keytab-файл.

    _images/sso_generate_keytab.png

    Примечание

    В поле Результат выводится информация об осуществляемых действиях:

    • создается учетная запись компьютера с именем, указанным на закладке Общие

    • прописываются необходимые SPN-имена

    • генерируется keytab-файл /usr/local/etc/squid/squid.keytab на устройстве TING c SPN-именами / ключами для керберизированной службы

    Предупреждение

    Для пользователей DC Windows 2003:
    Перед созданием keytab файла на контроллере домена не должно быть учетной записи компьютера для устройства TING!!! Иначе при создании keytab будет ошибка.
    Если по какой-то причине необходимо пересоздать keytab, то перед его созданием учетную запись компьютера для TING нужно удалить.
  • Нажмите кнопку Обновить.

    Все пункты должны быть отмечены зеленым.

    Если это не так - перепроверьте все шаги.

  • Нажмите кнопку Показать keytab-файл

    Результат должен быть такой:

    /usr/local/etc/squid/squid.keytab:
    
    Vno  Type                     Principal                      Aliases
    1  arcfour-hmac-md5         TING$@ZTEST.INT
    1  aes128-cts-hmac-sha1-96  TING$@ZTEST.INT
    1  aes256-cts-hmac-sha1-96  TING$@ZTEST.INT
    1  arcfour-hmac-md5         HTTP/ting.ztest.int@ZTEST.INT
    1  aes128-cts-hmac-sha1-96  HTTP/ting.ztest.int@ZTEST.INT
    1  aes256-cts-hmac-sha1-96  HTTP/ting.ztest.int@ZTEST.INT
    1  arcfour-hmac-md5         host/ting@ZTEST.INT
    1  aes128-cts-hmac-sha1-96  host/ting@ZTEST.INT
    1  aes256-cts-hmac-sha1-96  host/ting@ZTEST.INT
    1  arcfour-hmac-md5         host/ting.ztest.int@ZTEST.INT
    1  aes128-cts-hmac-sha1-96  host/ting.ztest.int@ZTEST.INT
    1  aes256-cts-hmac-sha1-96  host/ting.ztest.int@ZTEST.INT             Vno  Type                     Principal                          Aliases
    

7.3 Проверьте правильность настроек.

Для этого введите Имя пользователя и Пароль пользователя домена в соответствующие поля и нажмите Проверить вход через Kerberos

_images/sso_check_result.png

В случае, если все настройки были сделаны верно, вы увидите положительный результат проверки, подобный, как на изображении выше.

7.4 Примените настройки.

Для этого либо в разделе Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладке Общие настройки, либо в разделе Службы->Веб-прокси->Администрирование нажмите кнопку Применить

8. Ручная настройка аутентификации в Active Directory через Kerberos

Иногда возникает ситуация, когда по определенным причинам у вас нет доступа к учетной записи администратора домена (к примеру, политики безопасности предприятия).

В таком случае вам необходимо на контроллере домена создать keytab файл, перенести его на устройство TING и выпонить конфигурацию устройства.

Для ручной настройки аутентификации в Active Directory через Kerberos вам необходимо выполнить все шаги по настройке устройства TING, описанные выше, вплоть до создания учетной записи компьютера в каталоге Active Directory

После чего выполнить следующие шаги:

8.1. Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку Аутентификация по протоколу Kerberos, нажмите кнопку Обновить - и убедитесь, что все пункты, за исключением Файл keytab отмечены зеленым. Если это не так, то необходимо проверить настройки.

8.2. Создайте в домене учетную запись компьютера с именем, совпадающим в поле Kerberos-аккаунт этой машины в AD на вкладке Службы -> Веб-прокси -> Технология единого входа (SSO) -> Общие настройки

Примечание

Использование учетной записи компьютера предпочтительнее, так-как на учетную запись пользователя групповой политикой может накладываться ограничение на время действия пароля.

8.3. На контроллере домена добавьте SPN HTTP к учетной записи созданного компьютера (в нашем случае TING) и одновременно экспортируйте keytab-файл.

ktpass.exe /princ HTTP/ting.ztest.int@ZTEST.INT /mapuser ZTEST\ting$ /crypto all /ptype KRB5_NT_SRV_HST /pass rndpass /out c:/tmp/squid.keytab +answer

Предупреждение

Будьте внимательны, регистр имеет значение.

В данной команде мы добавили
SPN /princ HTTP/ting.ztest.int@ZTEST.INT
К учетной записи компьютера /mapuser ZTEST\ting$
С поддержкой всех возможных типов шифрования /crypto all
Со случайным паролем /pass rndpass
И сделали экспорт keytab файла /out c:/tmp/squid.keytab

8.4. Проверьте наличие SPN-имен в аккаунте. Для этого на контроллере домена AD выполните команду:

setspn -l TING

Вы должны увидеть следующий вывод:

Registered ServicePrincipalNames for CN=TING,CN=Computers,DC=ztest,DC=int:
    HTTP/ting.ztest.int

8.5. Скопируйте с помощью SSH-клиента (например, Putty) файл c:/tmp/squid.keytab на устройство TING в папку /usr/local/etc/squid/

8.6. Измените владельца keytab файла:

chown root:squid /usr/local/etc/squid/squid.keytab

8.7. Измените права доступа к keytab файлу:

chmod 640 /usr/local/etc/squid/squid.keytab

Примечание

Данные операции должны выполняться пользователем, с достаточными правами.

8.8. Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку Аутентификация по протоколу Kerberos, нажмите кнопку Обновить - и убедитесь, что все пункты отмечены зеленым. 8.9. Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку Общие, нажмите кнопку Применить для применения настроек и перезапуска веб-прокси SQUID.

Настройка компьютера пользователя.

На компьютере пользователя, подключенном к домену, в браузере Internet Explorer откройте Настройки -> Подключения -> Параметры сети и задайте настройки прокси-сервера [4] согласно изображения:

_images/sso_ie_settings.png

Примечание

Важно указывать прокси как DNS-имя, а не как IP-адрес!

Примечание

Многие сторонние веб-браузеры (Firefox/Chrome) могут использовать системные настройки прокси-сервера из Internet Explorer.

Проверка результата.

Откройте в настроенном веб-браузере какую-либо страницу интернет.

Если все предварительные настройки были выполнены корректно, запрошенная страница должна отобразиться.

На устройстве TING перейдите в раздел Службы-> Веб-прокси-> Журнал доступа

В журнале доступа вы должны будете увидеть записи, подобные следующим:

1600165495.695    212 192.168.1.115 TCP_TUNNEL/200 4557 CONNECT counter.yadro.ru:443 tinguser@ZTEST.INT HIER_DIRECT/88.212.201.204 -
1600165505.215    198 192.168.1.115 TCP_TUNNEL/200 28810 CONNECT www.mozilla.org:443 tinguser@ZTEST.INT HIER_DIRECT/104.18.164.34 -
1600165512.907  17145 192.168.1.115 TCP_TUNNEL/200 4502 CONNECT counter.yadro.ru:443 tinguser@ZTEST.INT HIER_DIRECT/88.212.201.204 -

что будет свидетельствовать о корректно настроенной SSO аутентификации с использованием Kerberos в Active Directory.


Настройка устройства TING с несколькими контроллерами доменов

К приведенной выше схеме добавим еще один домен MOD.LOC со следующими настройками:

локальная сеть

192.168.140.0/24

домен Active Directory

mod.loc

контроллер домена Active Directory

dc1.mod.loc

IP адрес контроллера домена Active Directory

192.168.140.2

DNS имя устройства TING

tinga.mod.loc

IP адрес устройства TING

192.168.140.8

Примечание

Домены должны иметь разные подсети, в нашем случае 192.168.1.0/24 и 192.168.140.0/24.

Настройка DNS

Настройка DNS аналогична настройке при работе с одним контроллером домена.

Создайте на доменном DNS-сервере нужные ресурсные записи для узла TING.

tinga IN A 192.168.140.8 в прямой зоне mod.loc
8.140.168.192.in-addr.arpa IN PTR tinga.mod.loc. в обратной зоне 140.168.192.in-addr.arpa

На устройстве TING необходимо добавить переопределение домена MOD.LOC на соответствующий DNS сервер, обслуживающий данные зоны.

При использовании на устройстве TING DNS сервера Unbound DNS, необходимо в меню Службы -> Unbound DNS -> Переопределение в секции Переопределение домена добавить переопределение прямой и обратной зоны для второго домена домена:

_images/sso_dual_unbound_dns.png

Синхронизация времени

Удостоверьтесь, что время на устройстве TING и обоих контроллерах домена синхонизировано. Для этого лучше всего настроить синхронизацию времени, как устройства TING, так и контроллеров доменов из одного источника.

Настройка LDAP-коннектора

По аналогии схемы с одним доменом добавляем в Система -> Доступ -> Серверы коннектор для домена mod.loc

Описательное имя

MOD-LOC

Тип

LDAP

Имя хоста или IP-адрес

192.168.140.2

Значение порта

389

Транспортный протокол

TCP

Версия протокола

3

Привязать параметры доступа

имя и пароль

Область поиска

Единичный уровень

Базовый DN

DC=mod,DC=loc

Контейнеры для аутентификации

CN=Users,DC=mod,DC=loc

Начальный шаблон

Microsoft AD

Атрибут присвоения имени пользователю

sAMAccountName

Настройки веб-прокси

В разделе Службы -> Веб-прокси -> Администрирование, на вкладке Перенаправляющий прокси -> Настройка Аутентификации, в поле Метод аутентификации укажите ldap-коннектор для домена mod.loc

Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку домена mod.loc Аутентификация по протоколу Kerberos:MOD-LOC.

По аналогии со схемой с одним доменом выполните автоматическую настройку и проверку аутентификации по протоколу Kerberos второго домена mod.loc

Настройка завершена.