Трехзевый Цербер, хищный и громадный,
Собачьим лаем лает на народ,
Который вязнет в этой топи смрадной.
Его глаза багровы, вздут живот,
Жир в черной бороде, когтисты руки;
Он мучит души, кожу с мясом рвет…
Данте Алигьери.
Божественная комедия, Песнь шестая
Каждый системный администратор, который хотя бы один раз сталкивался с администрированием доменных служб Active Directory, слышал о таком протоколе проверки подлинности (аутентификации) как Kerberos, позволяющем передавать данные для безопасной идентификации в открытых, или же, незащищенных, сетях. Естественно, помимо Active Directory от Microsoft, данный протокол поддерживают и FreeBSD, Mac OS X, Red Hat Linux и прочие UNIX-подобные операционные системы, но сейчас речь совсем не об этом…
Многие администраторы знают, что сейчас используется 5-я версия Kerberos с расширениями для проверки подлинности с помощью открытого ключа и паролей, так как о прекращении поддержки 4-й версии протокола официально было объявлено еще в 2006 году. Некоторые системные администраторы в курсе, что первые три версии этого протокола ни разу так и не вышли в RTM-версии и использовались исключительно в целях тестирования.
Но о чем же пойдет речь в этом цикле статей (именно в цикле, так как все сразу выдавать одним постом – это просто было бы нелогично и неправильно)? Речь пойдет о самом происхождении данного протокола, о процессе проверки подлинности, клиенте Kerberos и о Центре Распространения Ключей Kerberos. Помимо этого, из статей данного цикла вы узнаете про улучшения и о новых функциональных возможностях Kerberos в Windows Server 2012, а также кое-что о безопасности Kerberos и еще много чего интересного.
Но, обо всем по порядку…
Откуда возник Цербер или появление протокола Kerberos
Все мы когда-то читали греческую мифологию. И, я надеюсь, что не ошибусь, если предположу, что абсолютно каждый, кто читает эту статью в курсе, что согласно мифологии глубоко под землей расположено царство Аида – Тартар: царство мертвых душ, куда не проникают лучи солнца. А выход из этого царства мертвых охраняет трехглавый пес Цербер (или Кербер, Κέρβερος), на шее которого движутся с грозным шипением змеи, который не позволяет умершим возвращаться в мир живых.
Но какая же может быть связь между мифологией и протоколом аутентификации, спросите вы. А связь между ними следующая:
В уже далеком 1983 году, с целью создания комплекса распределенной вычислительной среды для использования в учебных целях, консорциумом Массачусетского Технологического Института (MIT), Digital Equipment Corporation (ныне Hewlett-Packard) и IBM, был создан проект «Афина». К программным продуктам, разрабатываемым в рамках этого проекта можно отнести X Windows System, которая используется у UNIX-сообществ, Xaw widget set, Zephyr Notification Service, даже тонкие клиенты.
Однако, вскоре было обнаружено, что их серверное программное обеспечение полностью доверяло любым идентификационным данным, а реализованные на то время протоколы отправляли по сети данные в открытом виде, что было попросту недопустимо.
Именно по этой причине, на основании уже существующего протокола аутентификации на основе доверенной третьей стороны Нидхем-Шредер и модификаций, предложенных Дороти Денниг и Джованни Сакко (Timestamps in key distributed protocols) впервые мир увидел первую версию протокола Kerberos. Кстати, с первой по третью версию протокол разрабатывался двумя членами проекта «Афина» - Стивом Миллером и Клиффордом Ньюманом, а также Джеромом Салтцером и Джеффри Шиллером, в то время, как уже было сказано выше, общая масса смогла увидеть плоды их работы только, начиная с четвертой версии данного протокола аутентификации.
Ну а, ввиду того, что для поддержания безопасности и взаимодействия с другими службами безопасности, основным механизмом проверки подлинности стал созданный указанными выше людьми протокол, в проекте «Афина» этот протокол был именован в честь трехгл
авого пса, о котором шла речь в самом начале этого раздела. То есть, так и появился протокол Kerberos.
Теперь следует разобраться, что же именно разработали сотрудники проекта «Афина», что собой представляет Kerberos…
Kerberos – что же ты такое?
Прежде чем говорить о том, что представляет собой Kerberos, следует разобраться с тем, что означает сам термин проверка подлинности или же «аутентификация».
В доменном окружении, проверкой подлинности называется возможность предоставления своих учетных данных пользователями для извлечения маркера доступа на контроллерах домена с целью получения доступа к внутренним ресурсам сети организации. Зачастую этот процесс выполняется во время входа пользователем в систему.
Как происходит процесс проверки подлинности, вы прекрасно знаете, поэтому опишу, буквально в двух словах:
- Если на клиентском компьютере установлена операционная система ниже Windows Vista, служба Winlogon загружает динамическую библиотеку GINA, которая уже передает все введенные данные службе Winlogin, а последняя – передает эту же информацию локальной подсистеме безопасности (Local Security Authority, LSA).
- С современными системами же, в свою очередь, все немного проще. Теперь библиотека GINA упразднена и в новых системах взаимодействуют поставщик учетных данных и winlogon, а для взаимодействия с пользователем в этом процесее используется LogonUI. Введенные пользователями учетные данные передаются компонентом LogonUI службе Winlogon, а затем уже все передается подсистеме LSA.
Дальше все просто. LSA применяет к указанному паролю хеш и удаляет текстовый пароль, после чего обращается к поставщику поддержки безопасности (Security Support Provider, SSP), а сам SSP, в свою очередь, связывается с контроллером домена для проверки подлинности.
Основное – это не путать аутентификацию, то есть, проверку подлинности, с авторизацией, которая представляет собой процесс определения уровня доступа к файловой системе и объектам Active Directory и выполняется уже после проверки подлинности.
Начиная с операционной системы Windows 2000, для проверки подлинности в Active Directory используются два протокола – Kerberos и NTLM, причем, Kerberos используется по умолчанию, а протокол NTLM обычно используется для обратной совместимости с Windows NT 4.0, Windows 95, а также Windows 98.
Kerberos позволяет проводить идентификацию объектов, выступая в роли доверительной службы аутентификации, используя процедуры трехстороннего сеанса связи, а также обусловленные заранее криптографические методы защиты информации. По сути, в Kerberos есть три компонента, а именно: клиент, получающий доступ к сетевым ресурсам, сервер, который будет предоставлять доступ к ресурсам только лишь прошедшим аутентификацию и авторизацию пользователям, а также центр распространения ключей (Key Distribution Center, KDC), который подробно будет рассмотрен в следующей статье. Забегая немного вперед, хотелось бы отметить, что центр распределения ключей Kerberos является встроенным компонентом безопасности на контроллерах домена Active Directory и в качестве базы данных учетных записей безопасности домена используется база данных самой службы каталогов.
Как вы догадались из описания процесса проверки подлинности, клиент проверки подлинности реализован в качестве поставщика SSP, а доступ к нему можно получить посредством интерфейса поставщика поддержки безопасности (Security Support Provider Interface, SSPI). Между прочим, в функциональных возможностях SSPI операционной системы Windows Server 2012 появились некоторые улучшения. Не будет новостью то, что каждый раз при попытке получения доступа к каким-либо ресурсам, подсистемой безопасности используются так называемые маркеры доступа. И в то время, когда операционная система Windows выполняет аутентификацию пользователя при помощи Kerberos, на компьютере пользователя во время входа в систему присваивается маркер доступа пользователя. В свою очередь, когда пользователь обращается к каким-либо ресурсам, маркер предоставляется пользовательским компьютером всем приложениям и потокам, которые будут запрашивать данные. Для проверки подлинности пользователя, также и приложения могут отправлять запросы на определения максимального размера маркера контекста. Это делается для выделения памяти, ведь сам маркер ни в коем случае не должен пер