img

Что такое Kerberos и как он работает?

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Киберпреступность — это печальная реальность современности, затрагивающая как частных пользователей, так и бизнес. Ни одна компания или организация не застрахована, и ситуация вряд ли улучшится в ближайшее время. Эксперты прогнозируют, что убытки от киберпреступлений достигнут $25 трлн к 2025 году. Forbes также предупреждает об увеличении угроз для мобильных устройств.

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

В этой статье мы рассмотрим протокол аутентификации Kerberos и узнаем, как он работает.

Что такое Kerberos?

Kerberos — это протокол безопасности компьютерных сетей, который аутентифицирует запросы между двумя или несколькими доверенными хостами в ненадежной сети, такой как интернет. Разработанный MIT для проекта Athena в конце 1980-х, он теперь используется по умолчанию в Microsoft Windows и реализован в других операционных системах, таких как Apple OS, FreeBSD, UNIX и Linux.

Как работает Kerberos

Kerberos использует криптографию с секретным ключом и доверенное третье лицо — Центр Распределения Ключей (KDC) — для аутентификации клиент-серверных приложений и проверки идентичности пользователей. KDC предоставляет услуги аутентификации и выдачи билетов, которые обеспечивают безопасную проверку идентичности, защищая от прослушивания и повторных атак.

Для чего используется Kerberos

Kerberos широко применяется в цифровом мире, особенно в системах, требующих надежного аудита и аутентификации. Он используется в аутентификации Posix, Active Directory, NFS и Samba, а также как альтернатива системам аутентификации SSH, POP и SMTP.

Основные применения Kerberos

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

Сетевая аутентификация. Kerberos предоставляет безопасный механизм для проверки подлинности сетевых служб, таких как серверы и приложения. Клиенты могут запросить билет на службу у Центра Распределения Ключей (KDC) с использованием своего TGT, а этот билет используется для аутентификации и установления защищенной сессии с запрашиваемой службой.

Взаимная аутентификация. Kerberos обеспечивает взаимную аутентификацию, что означает, что и клиент, и сервер аутентифицируют друг друга в процессе начальной аутентификации. Это предотвращает impersonation и атаки "человек посередине" путем проверки подлинности обеих сторон в коммуникации.

Авторизация. Kerberos также может использоваться для реализации политик контроля доступа. После аутентификации клиента Kerberos билет содержит информацию о его идентичности и правах доступа. Серверы могут использовать эту информацию для применения правил авторизации и предоставления или отказа в доступе к конкретным ресурсам в зависимости от привилегий клиента.

Что делает протокол аутентификации Kerberos?

MIT разработал протокол для проекта под названием Athena. Название происходит от трехголового пса Адеса из греческой мифологии, который охранял ад. Имя было выбрано, потому что протокол Kerberos представляет собой три компонента:

  • Клиент
  • Сетевой ресурс (сервер приложений)
  • Центр распределения ключей (KDC)

Эти три компонента позволяют Kerberos обеспечивать аутентификацию доверенных хостов в ненадежных сетях. Kerberos гарантирует, что доступ к сетевым ресурсам имеют только авторизованные пользователи. Также он обеспечивает AAA безопасность: Аутентификацию, Авторизацию и Учет.

Разработчики MIT создали Kerberos для безопасной аутентификации к требуемым системам и авторизации пользователей. В то время большинство систем передавали незашифрованные пароли, что позволяло хакерам получить несанкционированный доступ. Поэтому разработка Kerberos была необходима.

Проектом занимались S.P. Miller, B.C. Neuman, J.I. Schiller и J.H. Saltzer.

В Kerberos KDC выдает билеты, которые позволяют различным хостам подтверждать свою личность. Также разработчики предусмотрели, что аутентификация Kerberos поддерживает авторизацию. Это значит, что клиент, аутентифицированный Kerberos, также получает доступ к ресурсам.

Преимущества аутентификации Kerberos

Kerberos приносит множество преимуществ в любую настройку кибербезопасности:

  • Эффективный контроль доступа. Kerberos позволяет пользователям отслеживать входы и применять политику безопасности через единую точку.
  • Ограниченный срок действия ключевых билетов. Каждый билет Kerberos имеет метку времени, данные о сроке действия и продолжительность аутентификации, контролируемую администратором.
  • Взаимная аутентификация. Системы и пользователи могут аутентифицировать друг друга.
  • Повторное использование аутентификации. Аутентификация пользователей Kerberos повторно используется и долговечна; каждый пользователь должен быть проверен системой только один раз. Пока билет действителен, пользователю не нужно повторно вводить свои данные для аутентификации.
  • Сильные и разнообразные меры безопасности. Протоколы безопасности Kerberos используют криптографию, несколько секретных ключей и авторизацию третьих сторон, создавая надежную защиту. Пароли не передаются по сетям, и все секретные ключи зашифрованы.

Как работают протоколы аутентификации Kerberos?

Ниже представлена упрощенная схема работы протоколов аутентификации Kerberos:

  1. Запрос к серверу аутентификации. Клиент запрашивает аутентификацию у KDC. Этот запрос передается в открытом виде.
  2. Ответ сервера аутентификации. KDC отправляет TGT и сеансовый ключ, если клиент есть в базе данных. Если клиента нет в базе, аутентификация не проходит.
  3. Запрос билета на службу. Клиент запрашивает билет на службу вместе с TGT, выданным ранее KDC.
  4. Ответ на запрос билета. KDC отправляет билет, зашифрованный сеансовым ключом. Клиент может использовать сеансовый ключ, отправленный ранее KDC, для расшифровки билета на службу.
  5. Запрос к серверу приложений. Клиент запрашивает доступ к серверу приложений, используя билет на службу.
  6. Ответ сервера приложений: Сервер приложений аутентифицирует клиента и отправляет билет, который предоставляет доступ к конкретной услуге.

Билет службы имеет определенный срок действия. Вы можете использовать один и тот же билет сеанса для доступа к службам до истечения срока его действия. По умолчанию срок действия билета Kerberos составляет 600 минут. 

Обзор потока протокола Kerberos

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

Основные участники типичного процесса Kerberos:

  • Клиент действует от имени пользователя и инициирует запрос на услугу.
  • Сервер предоставляет услугу, к которой пользователь хочет получить доступ.
  • Сервер аутентификации (AS) выполняет аутентификацию клиента. Если аутентификация успешна, AS выдает клиенту билет, называемый TGT (Ticket Granting Ticket). Этот билет подтверждает другим серверам, что клиент аутентифицирован.
  • Центр распределения ключей (KDC): в среде Kerberos сервер аутентификации логически разделен на три части: базу данных (db), сервер аутентификации (AS) и сервер выдачи билетов (TGS). Эти три части объединены в одном сервере, называемом Центром распределения ключей (KDC).
  • Сервер выдачи билетов (TGS) — это сервер приложений, который выдает билеты на услуги.

Теперь разберем процесс протокола.

Существует три ключевых секретных ключа, используемых в потоке Kerberos:

  • Ключ клиента/пользователя: хэш, полученный из пароля пользователя.
  • Секретный ключ TGS: хэш пароля, использованный для определения TGS.
  • Секретный ключ сервера: хэш пароля, использованный для определения сервера, предоставляющего услугу.

Процесс протокола включает следующие шаги:

Шаг 1. Начальный запрос аутентификации клиента: Пользователь запрашивает у сервера аутентификации (AS) билет TGT. Этот запрос включает идентификатор клиента.

Шаг 2. KDC проверяет учетные данные клиента. AS проверяет базу данных на наличие клиента и доступность TGS. Если AS находит оба значения, он генерирует секретный ключ клиента/пользователя, используя хэш пароля пользователя.

AS затем вычисляет секретный ключ TGS и создает сеансовый ключ (SK1), зашифрованный секретным ключом клиента/пользователя. AS генерирует TGT, содержащий идентификатор клиента, сетевой адрес клиента, метку времени, срок действия и SK1. Тicket TGS секретный ключ затем шифрует билет.

Шаг 3. Клиент расшифровывает сообщение. Клиент использует секретный ключ клиента/пользователя для расшифровки сообщения и извлечения SK1 и TGT, создавая аутентификатор, который подтверждает клиента TGS.

Шаг 4. Клиент использует TGT для запроса доступа. Клиент запрашивает билет у сервера, предоставляющего услугу, отправляя извлеченный TGT и созданный аутентификатор в TGS.

Шаг 5. KDC создает билет для файлового сервера. TGS использует секретный ключ TGS для расшифровки TGT, полученного от клиента, и извлечения SK1. TGS расшифровывает аутентификатор и проверяет, соответствует ли он идентификатору клиента и сетевому адресу клиента. TGS также проверяет метку времени, чтобы убедиться, что TGT не истек.

Если все проверки пройдены успешно, KDC генерирует сеансовый ключ услуги (SK2), который делится между клиентом и целевым сервером.

Наконец, KDC создает билет услуги, включающий идентификатор клиента, сетевой адрес клиента, метку времени и SK2. Этот билет шифруется секретным ключом сервера, полученным из базы данных. Клиент получает сообщение с билетом услуги и SK2, все зашифрованное с помощью SK1.

Шаг 6. Клиент использует билет услуги для аутентификации. Клиент расшифровывает сообщение с помощью SK1 и извлекает SK2. Этот процесс создает новый аутентификатор, содержащий сетевой адрес клиента, идентификатор клиента и метку времени, зашифрованный с помощью SK2, и отправляет его вместе с билетом услуги на целевой сервер.

Шаг 7. Целевой сервер принимает расшифровку и аутентификацию. Целевой сервер использует секретный ключ сервера для расшифровки билета услуги и извлечения SK2. Сервер использует SK2 для расшифровки аутентификатора, проверяя, совпадают ли идентификатор клиента и сетевой адрес клиента из аутентификатора и билета услуги. Сервер также проверяет билет услуги на предмет его истечения.

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

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

Понятия и термины объектов Kerberos

Большинство целей Kerberos связаны с управлением паролями. Он обеспечивает, чтобы пароли не передавались по сети и не хранились на клиентских системах; система удаляет их сразу после использования. Пароли не должны храниться в открытом виде, и каждая сессия должна использовать только один пароль.

Кроме того, вся информация об аутентификации хранится на централизованном сервере, что означает:

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

Следующие сущности используют протоколы Kerberos:

  • Принципы Kerberos — это уникальный идентификатор, назначаемый билету. Для большинства пользователей это тот же идентификатор, что и имя пользователя. Kerberos идентифицирует принципала по следующей информации:
    • Для пользователей: это имя пользователя; для хостов: слово "host". Для служб принципал — это название службы.
    • Дополнительный идентификатор, указывающий имя хоста.
    • Имя области Kerberos, в которой работает сервер Kerberos.
  • Серверы приложений Kerberos предоставляют доступ к ресурсам, которые нужны клиентам.
  • KDC Kerberos предоставляет доступ к ресурсам, таким как эмуляция терминалов и удаленные вычисления.
  • База данных Kerberos содержит записи о каждом принципале. Это централизованное хранилище Kerberos, содержащее идентификацию клиентов и их доступ.
  • Служба аутентификации Kerberos выдает билет TGT (Ticket Granting Ticket) клиентам.
  • Служба выдачи билетов Kerberos аутентифицирует клиентов на основе TGT.

После аутентификации пользователь получает билет аутентификации. Клиент может использовать этот билет для получения билетов на доступ к сервисам приложений.

Kerberos против других протоколов аутентификации сети

Существуют и другие протоколы аутентификации помимо Kerberos. Рассмотрим их:

  • Kerberos vs. Microsoft New Technology LAN Manager (NTLM): NTLM был предыдущей технологией, используемой Windows. С Windows 2000 все версии используют Kerberos. NTLM использует аутентификацию по принципу вызова-ответа: сервер задает вопрос, на который клиент должен ответить.
  • Kerberos vs. Lightweight Directory Access Protocol (LDAP): LDAP позволяет поддерживать информацию о пользователях. LDAP и Kerberos могут использоваться в одной сети: LDAP предоставляет службу авторизации, а Kerberos — аутентификацию.
  • Kerberos vs. Remote Authentication Dial-in User Service (RADIUS): RADIUS был предназначен для удаленного доступа пользователей через модемные соединения. Однако сетевые службы используют его для учета и аутентификации наряду с Kerberos.

Является ли Kerberos безопасным?

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

Специалисты по безопасности по всему миру считают Kerberos безопасным. Он использует сильное шифрование для защиты данных. Тем не менее, исследователи безопасности обнаружили несколько способов обхода Kerberos:

  • Атака "Pass-the-key": хакеры подделывают клиентов, используя их учетные данные.
  • Атака "Pass-the-ticket": хакеры используют билет, когда KDC отправляет сеансовый билет.
  • Атака "Golden ticket":  хакеры используют контроллеры домена Windows для создания учетных данных клиента.

Может ли Kerberos быть взломан?

Ни одна мера безопасности не является на 100% неприступной, и Kerberos не является исключением. Поскольку он существует уже долго, хакеры имели возможность найти способы обойти его, обычно подделывая билеты, делая повторные попытки угадывания паролей (грубая сила/наполнение учетных данных) и используя вредоносное ПО для понижения уровня шифрования.

Тем не менее, Kerberos все еще является лучшим доступным протоколом безопасности. Протокол достаточно гибок, чтобы использовать более надежные алгоритмы шифрования для борьбы с новыми угрозами, и если пользователи придерживаются хороших политик выбора паролей, все должно быть в порядке!

Является ли Kerberos устаревшей системой?

Долговечность не обязательно означает устаревание. Несмотря на некоторые случаи, когда киберпреступники обходили Kerberos (и мы уже установили, что ни одна система безопасности не является на 100% неприступной), Kerberos по-прежнему активно используется и пользуется хорошей репутацией.

Часто задаваемые вопросы

Что такое Kerberos и как он работает? 

Kerberos — это протокол сетевой аутентификации, который обеспечивает безопасную аутентификацию в распределенных вычислительных средах. Он использует доверенную третью сторону, называемую Центром распределения ключей (KDC), для аутентификации клиентов и серверов. KDC выдает билеты, которые подтверждают личность клиентов и серверов, позволяя безопасное общение и предотвращая несанкционированный доступ.

Как применяется Kerberos? 

Один из примеров применения Kerberos — это система аутентификации, используемая в Microsoft Active Directory. Kerberos является основным протоколом для аутентификации в доменах Windows, позволяя пользователям безопасно получать доступ к сетевым ресурсам и службам.

Какие преимущества есть у Kerberos? 

Некоторые преимущества использования Kerberos для аутентификации включают:

  • Сильная безопасность. Kerberos использует шифрование и взаимную аутентификацию для обеспечения целостности и конфиденциальности обмена аутентификацией.
  • Единая точка входа. После аутентификации пользователи могут получить доступ к нескольким службам и ресурсам без повторного ввода учетных данных, что повышает удобство и продуктивность.
  • Централизованная аутентификация. Kerberos предоставляет централизованную систему аутентификации, уменьшая необходимость в управлении отдельными учетными данными для каждой службы или системы.
  • Масштабируемость. Kerberos может обрабатывать крупные масштабные среды и поддерживает эффективную аутентификацию для большого количества пользователей и служб.

В чем разница между Kerberos и KDC? 

Kerberos относится к самому протоколу сетевой аутентификации, тогда как KDC (Key Distribution Center) представляет собой централизованный сервер, который реализует протокол Kerberos. Он состоит из двух основных компонентов: Службы аутентификации (AS) и Службы выдачи билетов (TGS). AS отвечает за начальную аутентификацию и выдачу билетов TGT (Ticket-Granting Tickets), в то время как TGS выдает билеты на доступ к конкретным службам. В общем, Kerberos — это протокол, а KDC — серверная реализация этого протокола.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Кибербезопасность
Скидка 10%
Основы кибербезопасности
Стань специалистом по кибербезопасности, изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Киберпреступность — это печальная реальность современности, затрагивающая как частных пользователей, так и бизнес. Ни одна компа
img
При передаче данных между системами крайне важно сохранять их целостность и конфиденциальность. Для этого существуют протоколы и
img
Основные тезисы: Шифрование – это крайне важная технология для информационной безопасности, которая обеспечивает конфиденциально
img
Испытание на возможность проникновения в систему – это критически важный компонент, который предоставляет отказоустойчивые техно
img
Распределенные атаки типа «отказ в обслуживании» (DDoS - Distributed Denial of Service) направлены на то, чтобы «отключить» орга
img
  На заре информационных технологий, у разработчиков не было никакой необходимости беспокоиться о сетях. Их главной задачей бы
21 ноября
20:00
Бесплатный вебинар
Введение в Docker