- Настройка Kerberos авторизации на сайте IIS
- Kerberos
- Содержание
- Kerberos
- Обзор
- Записки IT специалиста
- Настраиваем Squid для работы с Active Directory. Часть 2 — Kerberos-аутентификация
- Подготовка Active Directory
- Настройка поддержки Kerberos в Ubuntu Server / Debian
- Настройка Kerberos-аутентификации в Squid
- Дополнительные материалы:
Настройка Kerberos авторизации на сайте IIS
Пошаговая инструкция по настройке на веб-сайте IIS на Windows Server 2012 R2 прозрачной авторизации доменных пользователей в режиме SSO (Single Sign-On) по протоколу Kerberos.
На веб сервере запустите консоль IIS Manager, выберите нужный сайт и откройте раздел Authentication. Как вы видите, по умолчанию разрешена только анонимная аутентификация (Anonymous Authentication). Отключаем ее и включаем Windows Authentication (IIS всегда сначала пытается выполнить анонимную аутентификацию).
Открываем список провайдеров, доступных для Windows аутентификации (Providers). По умолчанию доступны два провайдера: Negotiate и NTLM. Negotiate – это контейнер, который в качестве первого метода проверки подлинности использует Kerberos, если эта аутентификация не удается, используется NTLM. Необходимо, чтобы в списке провайдеров метод Negotiate стоял первым.
Следующий этап – регистрация Service Principal Name (SPN) записей для имени сайта, к которому будут обращаться пользователи. В том случае, если сайт IIS должен быть доступен только по имени сервера, на котором он расположен (http://server-name или http://server-name.contoso.com), создавать дополнительные SPN записи не нужно (SPN записи уже имеются в учетной записи сервера в AD). При использовании адреса сайта, отличного от имени хоста, или при построении веб-фермы с балансировкой, придется привязывать дополнительные записи SPN к учётной записи сервера или пользователя.
Предположим, у нас имеется ферма IIS серверов. В этом случае оптимально создать отдельную учетную запись в AD и привязать SPN записи к ней. Из-под этой же учетной записи будут запускать целевой Application Pool нашего сайта.
Создадим доменную учетную запись iis_service. Убедимся, что SPN записи для этого объекта не назначены (атрибут servicePrincipalName пустой).
Предположим, что сайт должен отвечать по адресам _http://webportal and _http://webportal.contoso.loc. Мы должны прописать эти адреса в SPN атрибут служебной учетной записи
Setspn /s HTTP/webportal contoso\iis_service
Setspn /s HTTP/webportal.contoso.loc contoso\iis_service
Таким образом, мы разрешим этой учетной записи расшифровывать тикеты Kerberos при обращении пользователей к данным адресам и аутентифицировать сессии.
Проверить настройки SPN у учетной записи можно так:
setspn /l iis_service
Следующий этап – настройка в IIS Application Pool для запуска из-под созданной сервисной учетной записи.
Выберите Application Pool сайта (в нашем примере это DefaultAppPool).
Откройте раздел настроек Advanced Settings и перейдите к параметру Identity.
Измените его с ApplicationPoolIdentity на contoso\iis_service.
Затем в консоли IIS Manager перейдите на свой сайт и выберите секцию Configuration Editor.
В выпадающем меню перейдите в раздел system.webServer > security > authentication > windowsAuthentication
Измените useAppPoolCredentials на True.
Тем самым мы разрешим IIS использовать доменную учетку для расшифровки билетов Kerberos от клиентов.
Перезапустим IIS командой:
Аналогичную настройку нужно выполнить на всех серверах веб-фермы.
Протестируем работу Kerberos авторизации, открыв в браузере клиента (браузер нужно предварительно настроить для использования Kerberos) адрес _http://webportal.contoso.loc
Убедится, что для авторизации на сайте используется Kerberos можно с помощью инспектирования HTTP трафика утилитой Fiddler (ранее мы уже упоминали эту утилиту).
Запускаем Fiddler, в браузере открываем целевой сайт. В левом окне находим строку обращения к сайте. Справа переходим на вкладку Inspectors. Строка Authorization Header (Negotiate) appears to contain a Kerberos ticket, говорит о том, что для авторизации на IIS сайте использовался протокол Kerberos.
Kerberos
Содержание
Kerberos
Kerberos это система сетевой аутентифиации, основанная на принципах доверия третьей стороне. Другие две стороны — это пользователь и сервис, на котором он хочет авторизоваться. Не все сервисы и приложения могут использовать Kerberos, но те, которые могут, приближают сетевое окружение на один шаг к технологии единого входа (Single Sign On — SSO).
Этот раздел раскрывает установку и настройку сервера Kerberos, а также некоторые примеры клиентских настроек.
Обзор
Если вы новичок в Kerberos, есть несколько терминов, которые хорошо понять до установки сервера Kerberos. Большинство терминов связаны с вещами, которые могут быть вам знакомы по другим окружениям:
Учетная запись (Principal): любые пользователи, компьютеры или сервисы, предоставляемые серверами, должны быть определены как учетные записи Kerberos .
Требования (Instances): используются для сервисных и специальных административных учетных записей.
Области (Realms): уникальная область управления, обеспечиваемая установкой Kerberos. Представляйте ее себе как домен или группу ваших компьютеров и пользователей, ей принадлежащих. По умолчанию Ubuntu использует имя DNS домена в верхнем регистре (EXAMPLE.COM) в качестве имени области.
Центр распространения ключей (KDC): состоит из трех частей: базы данных всех учетных записей, сервера аутентификации и сервера предоставления билетов. Для каждой области должен быть хотя бы один KDC.
Билет для получения билета (TGT): изданный сервером аутентификации, TGT зашифровывается на пароле пользователя, который известен только пользователю и KDC.
Сервер распространения билетов (TGS): выпускает сервисные билеты для клиентов по запросу.
Билеты (Tickets): подтверждение идентичности двух учетных записей. Одна учетная запись — пользователь, а другая — сервис, запрашиваемый этим пользователем. Билеты устанавливают секретный ключ, используемый для защищенного соединения во время авторизованной сессии.
Файлы ключей (Keytab Files): файлы, извлеченные из базы учетных записей KDC и содержащие ключ шифрования для сервиса или компьютера.
Чтобы сложить все вместе: Область содержит как минимум один KDC, лучше больше для обеспечения безотказности, которые содержат базу данных учетных записей. Когда пользователь под учетной записью заходит на рабочую станцию, которая настроена на Kerberos аутентификацию, KDC выпускает билет для получения билетов (TGT). Если пользователь предоставляет совпадающие параметры, он считается аутентифицированным и может запрашивать билеты для сервисов, поддерживающих Kerberos, на сервере распространения билетов (TGS). Сервисные билеты позволяют пользователю аутентифицироваться на сервисах без ввода имени и пароля.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Настраиваем Squid для работы с Active Directory. Часть 2 — Kerberos-аутентификация
Настраиваем Squid для работы с Active Directory. Часть 2 — Kerberos-аутентификация
Продолжаем цикл статей об интеграции прокси-сервера Squid и Active Directory. Одним из наиболее важных вопросов является прозрачная аутентификация пользователей домена на прокси-сервере. В этой части мы расскажем, как настроить аутентификацию по протоколу Kerberos, которая позволит использовать единую точку входа, когда пользователь вводит логин и пароль один раз — при входе в систему.
В прошлой части мы уже касались данного вопроса, но повторимся: мы не видим никакого практического смысла использовать для работы с Active Directory отличные от Kerberos способы аутентификации. Все современные системы поддерживают Kerberos, а снижать безопасность системы ради потенциальной совместимости с абстрактными системами, которые могут не поддерживать Kerberos, явно не следует.
Подготовка Active Directory
Перед тем, как настраивать поддержку Kerberos-аутентификации на роутере, необходимо выполнить ряд подготовительных действий в Active Directory. Прежде всего заведем служебного пользователя, в нашем случае squid3.
Запрещаем смену пароля пользователем и не ограничиваем срок его действия, последнее очень важно, так как в противном случае вам придется через некоторое время не только сменить пароль служебного пользователя, но и заново выполнить все подготовительные действия.
Теперь создадим специальный keytab-файл, который содержит имя Kerberos-принципала (имя хоста, пользователя и домен) и ключ, созданный на основе пароля. В дальнейшем keytab-файл будет использоваться squid для аутентификации пользователей в AD. Откроем командную строку и введем следующую команду (соблюдая регистр):
На первый взгляд команда довольно сложная. Разберем ее подробнее, ключ -princ обозначает Kerberos-принципала и содержит FQDN имя роутера и область Kerberos, которая совпадает с именем домена, но записывается в верхнем регистре, -mapuser и -pass имя пользователя и пароль соответственно, -ptype — тип принципала и -out — имя и расположение keytab-файла.
Важно! Для нормальной работы Kerberos на роутере его имя хоста, в нашем случае srv-gw01, не должно превышать 8 символов.
Если все сделано правильно, то команда должна отработать без ошибок.
Затем следует передать сгенерированный keytab-файл на роутер любым доступным образом, например, через WinSCP в домашнюю директорию пользователя.
Настройка поддержки Kerberos в Ubuntu Server / Debian
После того, как мы передали keytab-файл на роутер, его следует разместить в надежном месте и ограничить доступ. Понятно, что домашняя директория пользователя не самое лучшее для этого место. Так как работать с ним будет squid, то логично будет расположить keytab-файл в папке с настройками прокси-сервера.
Затем изменим владельца и установим ограниченные права на файл:
Для поддержки Kerberos установим пакет krb5-user:
При установке следует указать область Kerberos по умолчанию, введите имя вашего домена в верхнем регистре:
Теперь откроем файл /etc/krb5.conf, он содержит очень много ненужных параметров, поэтому удаляем или комментируем все лишнее, у вас должно остаться только то, что будет приведено ниже.
Первой идет секция libdefaults, которая содержит параметры по умолчанию, а именно область Kerberos (опция создается автоматически) и keytab-файл:
Следующая секция realms описывает области Kerberos, у нас она одна — INTERFACE31.LAB
Здесь все понятно, единственного пояснения требует опция admin_server, в ее качестве указываем контроллер домена, исполняющий FSMO-роль PDC.
Последняя секция сопоставляет домены с областями Kerberos:
Сохраняем файл. Теперь проверим работу Kerberos, для этого выполним команду:
Если все сделано правильно, вы должны получить сообщение об успешной аутентификации.
Удалим полученный билет командой:
Настройка Kerberos-аутентификации в Squid
Прежде всего следует «научить» squid работать с keytab-файлом, для этого создадим специальный файл настроек:
И внесем в него следующие строки:
Откроем конфигурационный файл /etc/squid3/squid.conf, найдем три строки, начинающиеся с auth_param negotiate, раскомментируем и приведем их к следующему виду:
Ключ -d в первой строке указан для отладки, убедившись, что все работает как надо его следует убрать, чтобы избежать чрезмерного раздувания логов.
В секцию с элементами ACL добавим:
Данный элемент будет соответствовать всем пользователям, успешно прошедшим Kerberos-аутентификацию. Ниже, в секции со списками доступа, строку
сохраняем изменения, перезагружаем сервер.
На любом ПК войдем в систему под доменным пользователем и откроем любую страницу в браузере (не забываем, что прокси указываем не по IP-адресу, а по FQDN-имени), все должно работать.
Теперь зайдем на том же ПК локальным пользователем, вместо доступа к сети увидим приглашение ввести логин и пароль:
Также заглянем в /var/log/squid3/cache.log, сюда squid пишет отладочную информацию, в самом конце строки можно увидеть, кто именно прошел аутентификацию и получил доступ.
Убедившись, что все работает как надо, выключаем сбор отладочной информации, убрав ключ -d из строки в /etc/squid3/squid.conf.
Как видим, настроить Kerberos-аутентификацию достаточно просто. В следующих материалах мы разберем, как обеспечить автоматическое распространение настроек прокси и авторизацию на основе доменных групп безопасности.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: