Настройка SSO-аутентификации в интегрированной системе проверки подлинности FreeIPA

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

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

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

Настройка SSO-аутентификации данной службы состоит из нескольких этапов:

Настройка SSO-аутентификации в интегрированной системе проверки подлинности FreeIPA перекликается с настройкой аутентификации в Active Directory через Kerberos .

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

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

10.1.4.0/24

домен FreeIPA

ftest.local

контроллер домена FreeIPA

freeipa.ftest.local

IP-адрес контроллера домена FreeIPA

10.1.4.211

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

ting.ftest.local

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

10.1.4.52

Примечание

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

Настройка FreeIPA

С помощью веб-браузера подключитесь к консоли управления FreeIPA по адресу: https://freeipa.ftest.local, где freeipa.ftest.local - адрес вашего контроллера домена.

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

Пройдите на страницу Сетевые службы ‣ DNS ‣ Зоны DNS и проверьте настройки.

Примечание

Если у вас не создана обратная зона DNS 10.1.4.0/24 - создайте ее и проверьте, чтобы в ней содержалась запись для ip адреса контроллера домена FreeIPA.

../_images/freeipa_dns-zones.png

В настройках зоны (кликнуть на имя зоны и перейти на вкладку Параметры) необходить установить флажок Разрешить PTR-синхронизацию, затем нажать кнопку Сохранить для записи изменений.

Создайте учетную запись компьютера (узла) для устройства TING: для этого перейдите в меню Идентификация ‣ Узлы и нажмите кнопку Добавить.

../_images/freeipa_add-host.png

Перейдите в раздел Сетевые службы ‣ DNS ‣ Зоны DNS.

Проверьте, что запись появилась в прямой ftest.local и обратной 4.1.10.in-addr.arpa зоне (кликнуть на имя зоны, вкладка Записи ресурсов DNS). Если нет - добавьте эти записи вручную.

Прямая зона:

../_images/freeipa_ftestlocal-dnsrecords.png

Обратная зона:

../_images/freeipa_arpa-dnsrecords.png

Примечание

В командной строке устройства TING можно проверить с помощью команд:

drill ting.ftest.local

drill -x 10.1.4.52

Для созданного узла необходимо добавить псевдоним (кроме автоматически прописанного) учётной записи Kerberos (надо перейти на вкладку Узлы, зайти в параметры соответствующего узла и нажать кнопку Добавить в разделе Псевдонимы учётной записи):

../_images/freeipa_krbprincipalname.png

Теперь надо добавить принципал (службу) HTTP к созданной учетной записи компьютера устройства TING.

Для этого перейдите в раздел Идентификация ‣ Службы и нажмите кнопку Добавить

../_images/freeipa_add-principal.png

где в поле Служба надо указать HTTP (или выбрать из доступных значений в списке), а в поле Имя узла - имя устройства TING (можно выбрать нужное имя из выпадающего списка или ввести вручную).

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

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

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

Проверьте, чтобы корректно были указаны имя хоста, домен и IP-адрес контроллера домена FreeIPA (10.1.4.211):

../_images/system-settings-general_domain-dns.png

Локальная служба служба DNS должна быть отключена:

../_images/system-settings-general_no-local-dns.png

Примечание

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

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

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

В поле Серверы времени укажите имя контроллера домена FreeIPA freeipa.ftest.local либо IP-адрес контроллера домена FreeIPA 10.1.4.211, а также отметь предпочитаемым только его (у всех снять отметки):

../_images/services_ntpd.png

Примечание

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

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

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

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

freeipa

Тип

LDAP

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

10.1.4.211

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

389

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

TCP

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

3

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

пусто [1]

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

Уровень: Целое поддерево

Базовый DN

DC=freeipa,DC=local

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

cn=users,cn=accounts,dc=freeipa,dc=local

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

FreeIPA

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

uid

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

Пройдите в раздел Система ‣ Доступ ‣ Средство проверки, выберите в списке созданный нами сервер (freeipa), введите имя и пароль учетной записи домена.

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

../_images/freeipa_check-ldap-connector.png

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

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

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

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

  • В разделе Службы ‣ Веб-прокси ‣ Администрирование, на странице Перенаправляющий прокси ‣ Список управления доступом надо указать Разрешённые подсети:

    ../_images/services-proxy-acl_subnets.png

    Примечание

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

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

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

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

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

7.1 Включите Единый вход для прокси-сервера

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

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

../_images/services-proxy-sso_enable.png

Примечание

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

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

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

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

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

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

    ../_images/services-proxy-sso-kerberos.png

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

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

Создание файла keytab

  • Запустите терминал на контроллере домена FreeIPA (либо воспользуйтесь удаленным подключением с помощью ssh-подключения)

  • Получите билет Kerberos, используя учетную запись администратора домена:

    kinit admin
    
  • Экспортируйте принципалы в keytab файл (для службы HTTP и двух псевдонимов узла):

    /usr/sbin/ipa-getkeytab -p HTTP/ting.ftest.local -k /tmp/squid.keytab
    
    /usr/sbin/ipa-getkeytab -p host/ting.ftest.local -k /tmp/squid.keytab
    
    /usr/sbin/ipa-getkeytab -p host/ting -k /tmp/squid.keytab
    

    Внимание

    Если файл squid.keytab не существует, то ipa_getkeytab его создаст. Если же файл существует, то информация будет просто дописываться в имеющийся. В случае ошибочной записи, надо удалить старый и заново заполнять. Если вдруг будет удалён принципал и вместо него заведён новый с таким же именем - файл тоже надо пересоздать.

  • Cкопируйте keytab-файл на устройство TING:

    scp /tmp/squid.keytab root@10.1.4.52:/usr/local/etc/squid/
    

    После успешного копирования, файл на контроллере домена надо удалить.

  • Зайдите в терминал на устройстве TING

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

    chown root:squid /usr/local/etc/squid/squid.keytab
    
  • Измените права доступа к keytab файлу:

    chmod 640 /usr/local/etc/squid/squid.keytab
    
  • Перейдите в раздел Службы ‣ Веб-прокси ‣ Технология единого входа (SSO) ‣ Аутентификация по протоколу Kerberos и нажмите кнопку Обновить.

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

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

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

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

    /usr/local/etc/squid/squid.keytab:
    
    Vno  Type                        Principal                          Aliases
      2  aes256-cts-hmac-sha384-192  HTTP/ting.ftest.local@FTEST.LOCAL
      2  aes128-cts-hmac-sha256-128  HTTP/ting.ftest.local@FTEST.LOCAL
      2  aes256-cts-hmac-sha1-96     HTTP/ting.ftest.local@FTEST.LOCAL
      2  aes128-cts-hmac-sha1-96     HTTP/ting.ftest.local@FTEST.LOCAL
      3  aes256-cts-hmac-sha384-192  host/ting.ftest.local@FTEST.LOCAL
      3  aes128-cts-hmac-sha256-128  host/ting.ftest.local@FTEST.LOCAL
      3  aes256-cts-hmac-sha1-96     host/ting.ftest.local@FTEST.LOCAL
      3  aes128-cts-hmac-sha1-96     host/ting.ftest.local@FTEST.LOCAL
      4  aes256-cts-hmac-sha384-192  host/ting@FTEST.LOCAL
      4  aes128-cts-hmac-sha256-128  host/ting@FTEST.LOCAL
      4  aes256-cts-hmac-sha1-96     host/ting@FTEST.LOCAL
      4  aes128-cts-hmac-sha1-96     host/ting@FTEST.LOCAL
    

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

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

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

OK token=oRQwEqADCgEAoQsGCSqGSIb3EgECAg== user=tmpuser@FTEST.LOCAL  group=AQEAAAAAABIBAAAA
BH quit command

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

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

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

На компьютере пользователя, подключенном к домену, в браузере (например, Chrome) откройте Настройки ‣ Параметры сети и задайте ручные [2] настройки прокси-сервера согласно изображению ниже:

../_images/services-proxy-sso_chrome-settings.png

Внимание

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

Настройка других веб-браузеров проводится аналогичным способом.

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

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

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

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

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

1600165495.695    212 10.1.4.40 TCP_TUNNEL/200 4557 CONNECT counter.yadro.ru:443 tmpuser@FREEIPA.LOCAL HIER_DIRECT/88.212.201.204 -
1600165505.215    198 10.1.4.40 TCP_TUNNEL/200 28810 CONNECT www.mozilla.org:443 tmpuser@FREEIPA.LOCAL HIER_DIRECT/104.18.164.34 -
1600165512.907  17145 10.1.4.40 TCP_TUNNEL/200 4502 CONNECT counter.yadro.ru:443 tmpuser@FREEIPA.LOCAL HIER_DIRECT/88.212.201.204 -

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