none
Вопрос по керберосу RRS feed

  • Вопрос

  • Вот есть у меня клиент, контроллер домена и два сервера.

    Клиент хочет попасть на сервер1 получает билет керберос и авторизуется. Для того чтобы авторизоваться на втором сервере он опять билет получает или одним пользуется?

    1 декабря 2014 г. 20:31

Ответы

  • Опять получает, причём - другой. Потому что билет (точнее, основная его часть) шифруется секретным ключом известным только этому серверу (точнее, службе, к которой обращается клиент, она идентифицируется по SPN) и центру распространения ключей.

    Дополнительный билет не требуется только в случае, когда служба на разных серверах пользуется одними и теми же учётными данными (т.е. секретный ключ для экземпляров служб на разных серверах одинаковый) - так, например, умеет работать CAS Exchange при использовании альтернативных учетных данных, поэтому он может аутентифицировать пользователей по Kerberos, находясь в кластере NLB.


    Слава России!

    1 декабря 2014 г. 20:39
  • Да, но не по факту того, что он получил билет к первому серверу. Потому что Kerberos работает несколько сложнее, чем вам представляется.

    Для получения билетов службы для доступа к серверу используется не запрос к службе аутентификации (AS), а специальный билет TGT (билет для доступа к службе выдачи билетов - TGS), который как раз выдаётся службой аутентификации. TGS же как раз отвечает за выдачу билетов для доступа к службам. Хотя обе эти службы - AS и TGS - работают на одном и том же центре распространения ключей (KDC), но в логике работы протокола имеет смысл их разделять.

    Так вот, членство в группах прописывается (поле называется PAC) в билете TGT. В дальнейшем TGS вроде как, может добавить к PAC в билете для службы членство в доменных локальных группах (источник). А так, как доменные группы бывают не только локальные, а ещё и глобальные и универсальные, то членство в остальных по кэшируется на весь срок жизни TGT, с учетом возможности его обновления (а это, если без перезагрузки - до хрена, по умолчанию - порядка недели(точнее не помню)).

    То есть, судя по этому описанию, по факту первого обращении к серверу будет учтено только изменение членства в локальных доменных группах, остальное - только по факту повторного входа пользователя в систему или истечения срока жизни TGT. На практике - очень похоже, я всегда в таких случаях рекомендую просто повторно зайти в систему (а то и перезагрузиться - это пользователям часто понятнее).

    PS Если вы не читали, рекомендую почитать описание работы Kerberos из документации Win2K3 - там практически ничего не устарело, появились только дополнительные возможности типа Kerberos Armoring/Compound authentication AKA FAST)

    PPS Первый "сервер", кстати, к которому пользователь получает билет для доступа - это рабочая станция, на которой он осуществляет вход в систему.


    Слава России!


    1 декабря 2014 г. 23:05

Все ответы

  • Опять получает, причём - другой. Потому что билет (точнее, основная его часть) шифруется секретным ключом известным только этому серверу (точнее, службе, к которой обращается клиент, она идентифицируется по SPN) и центру распространения ключей.

    Дополнительный билет не требуется только в случае, когда служба на разных серверах пользуется одними и теми же учётными данными (т.е. секретный ключ для экземпляров служб на разных серверах одинаковый) - так, например, умеет работать CAS Exchange при использовании альтернативных учетных данных, поэтому он может аутентифицировать пользователей по Kerberos, находясь в кластере NLB.


    Слава России!

    1 декабря 2014 г. 20:39
  • Предположим что клиент получил доступ к файловой шаре одного сервера, после этого его добавили в группу доступа в одной из шар другого сервера. Правильно я понимаю что не нужно будет логоф/логон делать, раз заново билет выдается и сиды в билете для второго сервера будут уже новые?
    1 декабря 2014 г. 20:47
  • Да, но не по факту того, что он получил билет к первому серверу. Потому что Kerberos работает несколько сложнее, чем вам представляется.

    Для получения билетов службы для доступа к серверу используется не запрос к службе аутентификации (AS), а специальный билет TGT (билет для доступа к службе выдачи билетов - TGS), который как раз выдаётся службой аутентификации. TGS же как раз отвечает за выдачу билетов для доступа к службам. Хотя обе эти службы - AS и TGS - работают на одном и том же центре распространения ключей (KDC), но в логике работы протокола имеет смысл их разделять.

    Так вот, членство в группах прописывается (поле называется PAC) в билете TGT. В дальнейшем TGS вроде как, может добавить к PAC в билете для службы членство в доменных локальных группах (источник). А так, как доменные группы бывают не только локальные, а ещё и глобальные и универсальные, то членство в остальных по кэшируется на весь срок жизни TGT, с учетом возможности его обновления (а это, если без перезагрузки - до хрена, по умолчанию - порядка недели(точнее не помню)).

    То есть, судя по этому описанию, по факту первого обращении к серверу будет учтено только изменение членства в локальных доменных группах, остальное - только по факту повторного входа пользователя в систему или истечения срока жизни TGT. На практике - очень похоже, я всегда в таких случаях рекомендую просто повторно зайти в систему (а то и перезагрузиться - это пользователям часто понятнее).

    PS Если вы не читали, рекомендую почитать описание работы Kerberos из документации Win2K3 - там практически ничего не устарело, появились только дополнительные возможности типа Kerberos Armoring/Compound authentication AKA FAST)

    PPS Первый "сервер", кстати, к которому пользователь получает билет для доступа - это рабочая станция, на которой он осуществляет вход в систему.


    Слава России!


    1 декабря 2014 г. 23:05
  • Огромное вам спасибо!!!
    2 декабря 2014 г. 6:40
  • Сюда же с вашего позволения вопрос закину.

    1) Если два компьютера не в домене и с одного компьютера лезу в расшаренную папку к другому, как называется такой вид доступа?

    2) NTLM возможен только в домене? Никакой информации толковой по поводу NTLM не нашел, кроме того что она используется в домене когда пишем имя сервера по IP. Чем NTLM отличается от Kerberos? И один и второй это Windows Integrated?

    P.S. Простите что так нагло вытаскиваю из вас информацию, но вы в этом действительно круто разбираетесь :)

    Спасибо.



    6 декабря 2014 г. 8:05