Kerberos – это сетевой аутентификационный протокол, который обеспечивает безопасность при обмене данными в открытой сети. Протокол Kerberos разработан для предоставления авторизации и аутентификации пользователей с использованием шифрования.
Протокол Kerberos использует сервер аутентификации (Key Distribution Center, KDC), который хранит пароли пользователей и выдает временные билеты (токены) для доступа к ресурсам в сети. Запрос на аутентификацию отправляется клиентом на KDC, который проверяет пароль, генерирует временный билет и отправляет его клиенту.
Kerberos выполняет аутентификацию в качестве службы аутентификации доверенной третьей стороны, используя криптографический ключ, при условии, что пакеты, проходящие по незащищенной сети, могут быть перехвачены, модифицированы и использованы злоумышленником. Kerberos построен на криптографии симметричных ключей и требует наличия центра распределения ключей. Расширения Kerberos могут обеспечить использование криптографии с открытым ключом на определенных этапах аутентификации.
При использовании Kerberos протокола, клиент и сервер обмениваются временными билетами, чтобы доказать свою идентичность друг другу. Временный билет содержит информацию о клиенте, а также зашифрованный секретный ключ, который используется для дальнейшего шифрования сообщений между клиентом и сервером.
Протокол Kerberos обладает следующими свойствами безопасности:
1. Аутентификация: Клиент и сервер могут быть уверены в идентичности друг друга при обмене данными.
2. Авторизация: Kerberos протокол контролирует доступ пользователя к ресурсам, определяя, какие действия он может выполнять.
3. Шифрование: Все сообщения, передаваемые между клиентом и сервером, шифруются для обеспечения конфиденциальности.
Протокол Kerberos широко используется в сетях Windows для аутентификации пользователей и контроля доступа к ресурсам. Он также может использоваться в других операционных системах и приложениях, таких как Unix, Linux и серверы приложений. Он может работать поверх протокола TCP/IP для установления безопасного соединения между клиентом и сервером.
При использовании Kerberos в сети TCP/IP протокол Kerberos может быть использован для аутентификации клиента, а TCP/IP – для передачи данных и установления соединения. Таким образом, TCP/IP выступает в качестве транспортного протокола, а Kerberos – в качестве протокола безопасности и аутентификации. В этом случае сервер с помощью своей копии сеансового ключа шифрует метку времени из аутентификатора клиента и в таком виде пересылает её клиенту в качестве собственного аутентификатора. Одно из достоинств применения сеансовых мандатов состоит в том, что серверу не нужно хранить сеансовые ключи для связи с клиентами. Они сохраняются в кэш-памяти удостоверений («credentials cache») клиента, который направляет мандат на сервер каждый раз, когда хочет связаться с ним. Сервер, со своей стороны, получив от клиента мандат, дешифрует его и извлекает сеансовый ключ. Когда надобность в этом ключе исчезает, сервер может просто стереть его из своей памяти. Такой метод дает и ещё одно преимущество: у клиента исчезает необходимость обращаться к центру KDC перед каждым сеансом связи с конкретным сервером. Сеансовые мандаты можно использовать многократно. На случай же их хищения устанавливается срок годности мандата, который KDC указывает в самой структуре данных. Это время определяется политикой Kerberos для конкретной области. Обычно срок годности мандатов не превышает восьми часов, то есть — стандартной продолжительности одного сеанса работы в сети. Когда пользователь отключается от неё, кэш-память удостоверений обнуляется, и все сеансовые мандаты вместе с сеансовыми ключами уничтожаются.
Распространение реализации Kerberos происходит в рамках авторского права, аналогичного правам для BSD.
В настоящее время множество ОС поддерживает данный протокол, в число которых входят:
- Windows 2000 и более поздние версии, которые используют Kerberos как метод аутентификации в домене между участниками. Некоторые дополнения к этому протоколу отражены в RFC 3244 «Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols». Документ RFC 4757 описывает использование RC4 Kerberos в Windows;
- различные UNIX и UNIX подобные ОС (Apple Mac OS X, Red Hat Enterprise Linux 4, FreeBSD, Solaris, AIX, OpenVMS). При этом существует две наиболее используемые реализации с открытым исходным кодом — MIT Kerberos и Heimdal
Недостатки и ограничения
- Единая точка отказа: требуется постоянное наличие центрального сервера. Когда сервер Kerberos падает, новые пользователи не могут войти. Это может быть устранено с помощью нескольких серверов Kerberos и резервных механизмов аутентификации.
- Kerberos имеет строгие требования к времени, что означает, что часы участников должны быть синхронизированы в заданных пределах. Мандаты имеют время жизни и, если часы клиента не синхронизированы с часами сервера Kerberos, аутентификация не будет выполнена. Конфигурация по умолчанию требует, чтобы часы расходились не более чем на пять минут друг от друга. На практике, как правило, используются протокол NTP для синхронизации часов у клиентов.
- Протокол администрирования не стандартизирован и зависит от конкретной реализации сервера. Смена пароля описана в RFC 3244.
- В случае использования симметричной криптографии (Kerberos может работать с использованием как симметричной, так и асимметричной (с открытым ключом) криптографии), так как все способы аутентификации управляются централизованно центром распределения ключей (KDC), эта особенность инфраструктуры аутентификации позволит злоумышленнику выдавать себя за пользователя.
- Каждый сетевой сервис, требующий смены имени хоста, должен будет обновить собственный набор ключей Kerberos. Это усложняет использование виртуального хостинга и кластеров.
- Kerberos требует, чтобы учетные записи пользователей, клиенты и пользователи услуг на сервере, все доверяли серверу Kerberos (все должны быть в одном и том же домене с Kerberos или в доменах, имеющих доверительные отношения друг с другом). Kerberos не может использоваться в случаях, когда пользователи хотят подключаться к службам от неизвестных / ненадежных клиентов, как в обычном интернете.