Всем доброго времени суток. Пытаюсь разобраться с kerberos и на текущий момент возникло несколько вопросов. Буду очень признателен, если кто подскажет!
Вводные:
Принципал сервиса(SPN) имеет следующую форму: <service class>/<host>:<port>/<service name>, где service-class – это как я понимаю довольно обобщённое название сервиса(Например, все веб-серверы могут быть объединены в класс «http», а SQL — в класс «SqlServer» итд.), host – это доменное имя хоста, на котором работает сервис, port - порт на котором запущена служба, servicename — строка, которая представляет собой уникальное имя (DN), GUID объекта или полностью определенное доменное имя (FQDN) службы или @reаlm.
Обязательными к указанию являются только service-clаss/host
Вопросы:
1)Откуда клиент узнает SPN службы к которой он хочет получить доступ? Клиент узнает на каком хосте и порту работает искомая служба используя dns, а затем использует эту информацию для ldap запросов для получения spn этой службы?
2)Я правильно понимаю что при выдаче ST контроллер домена использует SPN только для того чтобы сопоставить его с конкретной учетной записью от имени которой работает служба, а не с конкретной службой? Тоесть контроллер домена выдает ST не на доступ к конкретной службе а на доступ к конкретной учетной записи от имени которой работает служба, на чем и основаны такие подвиды атак как AnySPN?
3)Как вообще формируется serviceclass в spn? Ведь serviceclass это не конкретное имя службы а просто обобщенное название которое не указывает на какую то конкретную службу напрямую? Я правильно понимаю что строго говоря srviceclass может быть любым произвольным словом, главное что бы сам spn был зарегистрирован на учетную запись от имени которой работает служба? Есть ли какой то стандарт определяющий какие конкретно serviceclass необходимо использовать для каких служб? Из гугла смог найти только то что serviceclass HOST, HTTP и LDAP указывают на то что spn в котором они используются относится к учетной записи машины а не к пользовательской.
Вводные:
Принципал сервиса(SPN) имеет следующую форму: <service class>/<host>:<port>/<service name>, где service-class – это как я понимаю довольно обобщённое название сервиса(Например, все веб-серверы могут быть объединены в класс «http», а SQL — в класс «SqlServer» итд.), host – это доменное имя хоста, на котором работает сервис, port - порт на котором запущена служба, servicename — строка, которая представляет собой уникальное имя (DN), GUID объекта или полностью определенное доменное имя (FQDN) службы или @reаlm.
Обязательными к указанию являются только service-clаss/host
Вопросы:
1)Откуда клиент узнает SPN службы к которой он хочет получить доступ? Клиент узнает на каком хосте и порту работает искомая служба используя dns, а затем использует эту информацию для ldap запросов для получения spn этой службы?
2)Я правильно понимаю что при выдаче ST контроллер домена использует SPN только для того чтобы сопоставить его с конкретной учетной записью от имени которой работает служба, а не с конкретной службой? Тоесть контроллер домена выдает ST не на доступ к конкретной службе а на доступ к конкретной учетной записи от имени которой работает служба, на чем и основаны такие подвиды атак как AnySPN?
3)Как вообще формируется serviceclass в spn? Ведь serviceclass это не конкретное имя службы а просто обобщенное название которое не указывает на какую то конкретную службу напрямую? Я правильно понимаю что строго говоря srviceclass может быть любым произвольным словом, главное что бы сам spn был зарегистрирован на учетную запись от имени которой работает служба? Есть ли какой то стандарт определяющий какие конкретно serviceclass необходимо использовать для каких служб? Из гугла смог найти только то что serviceclass HOST, HTTP и LDAP указывают на то что spn в котором они используются относится к учетной записи машины а не к пользовательской.