Что такое Kerberos и как работает этот протокол аутентификации

Аутентификация Kerberos - это сетевой протокол, разработанный для безопасной идентификации пользователей и сервисов в распределённых вычислительных системах. Протокол аутентификации Kerberos был создан в MIT как часть проекта Athena и сегодня широко используется в корпоративных средах - от Windows-доменов до UNIX-/Linux-инфраструктур.

Для чего нужен Kerberos? Представим, что на компьютере в сети запущена программа, которая предоставляет какой-то «сервис» другим программам. Если эта программа позволяет считывать локальный файл и передавать его содержимое по сети, она сталкивается с понятием доступа. В Windows доступ к файлу определяется на основе security descriptor, а информация о пользователе содержится в access token, который присваивается каждому процессу.

Для возможности «делегирования», когда сервис должен запросить данные от имени пользователя, сформировавшего первичный запрос, в протоколе должны присутствовать специальные данные. Kerberos является протоколом аутентификации, где для подтверждения идентификационной информации используется передача зашифрованных сообщений. В Active Directory «предмет идентификации» называется «принципал» (principal).

Техническая реализация Kerberos

В Active Directory для каждого домена существует Key Distribution Center (KDC). Именно эта сущность отвечает за хранение паролей всех пользователей и компьютеров в данном домене. Для простоты будем считать, что все коммуникации осуществляются с KDC. Все сообщения в Kerberos кодируются с помощью ASN.1.

схема взаимодействия клиента и KDC в протоколе Kerberos

Все коммуникации с KDC начинаются с посылки сообщения KDC-AS-REQ. В ответ KDC может возвратить зашифрованную идентификационную информацию (сообщение KDC-AS-REP) или ошибку (KRB-ERROR). Обычно в современных системах код ошибки будет 25: требуется пре-аутентификация. Под пре-аутентификацией подразумевается процесс, в ходе которого запрашивающая сторона проверяется на то, что она действительно знает ключ шифрования того принципала, для которого запрашивается идентификационная информация.

Основные компоненты аутентификации

  • Идентификация: заявляемое имя пользователя.
  • Аутентификация: подтверждение подлинности через KDC.
  • Авторизация: проверка прав доступа к ресурсам.

1 - Теория Kerberos в Active Directory - Описание

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

Настройка аутентификации Kerberos требует точного соответствия между клиентами, серверами и контроллерами домена. Среди систем, использующих Kerberos аутентификацию, - Active Directory, FreeIPA, MIT Kerberos, а также такие сервисы, как Apache, Squid, PostgreSQL и 1С.

Компонент Функция в Kerberos
KDC Центр распределения ключей, хранилище паролей
Principal Пользователь, компьютер или служба в сети
Ticket Зашифрованный пакет данных для доступа к сервису
SPN Имя участника службы для идентификации сервиса

Для компьютеров, участвующих в процессе аутентификации, не допускается большого расхождения системных часов, так как аутентификационные пакеты (тикеты) имеют ограниченное время действия. Также важно учитывать, что интеграция Kerberos с двухфакторной авторизацией (2FA) усиливает безопасность системы за счёт комбинации билетов доступа и внешних факторов подтверждения - токенов, OTP-кодов или биометрии.

таблица этапов настройки Kerberos на Linux-серверах

Функция InitializeSecurityContext (Kerberos) инициирует клиентский контекст безопасности исходящего трафика из дескриптора учетных данных. Эта функция используется для создания контекста безопасности между клиентским приложением и удаленным одноранговым узлом. Если код возврата SEC_E_OK, второй вызов InitializeSecurityContext не требуется, а ответ от сервера не ожидается.

tags: #kto #vam #postavil #krb