Зачем клиентской машине нужен субъект службы Kerberos
Я пытаюсь понять Kerberos и путаюсь с принципалами обслуживания. Предположим, я хочу получить доступ к общему ресурсу NFS, защищенному Kerberos.
У меня есть следующие три разных узла:
- Клиентский компьютер (с именем пользователя test)
- KDC (AS / TGS)
- NFS сервер
Теперь KDC содержит основную базу данных с именем пользователя test. Кроме того, KDC также содержит принципал nfs/DOMAINNAMEFROMNFSSERVER. Этот принципал также используется совместно с сервером NFS с помощью таблицы ключей. Чтобы установить сеанс Kerberized NFS, пользовательский тест запрашивает TGT от KDC.
Но почему все примеры в Интернете говорят о том, что клиентскому компьютеру также нужна таблица ключей, которая должна содержать принципал nfs/DOMAINNAMEFROMNFSSERVER?
Я понимаю, что субъект службы должен присутствовать только в базе данных KDC и непосредственно на сервере NFS (с помощью таблицы ключей). Может ли кто-нибудь уточнить, почему ключ-таблица также должна присутствовать на клиенте?
Заранее спасибо за помощь!
2 ответа
По сути, клиенту нужны учетные данные компьютера для подключения к серверу nfs с поддержкой Kerberos. Вы должны добавить участника nfs/<client_full_qualified_name> в KDC, а затем добавить в таблицу ключей локального клиента.
См. Man rpc.gssd, он содержит подробный ответ на вопрос. Кстати, принципал на клиенте может отличаться от nfs/@REALM.
Снимок со страницы руководства:
Machine Credentials
A user credential is established by a user and is then shared with the kernel and rpc.gssd. A machine credential is established by rpc.gssd for
the kernel when there is no user. Therefore rpc.gssd must already have the materials on hand to establish this credential without requiring user
intervention.
rpc.gssd searches the local system's keytab for a principal and key to use to establish the machine credential. By default, rpc.gssd assumes the
file /etc/krb5.keytab contains principals and keys that can be used to obtain machine credentials.
rpc.gssd searches in the following order for a principal to use. The first matching credential is used. For the search, <hostname> and <REALM>
are replaced with the local system's hostname and Kerberos realm.
<HOSTNAME>$@<REALM>
root/<hostname>@<REALM>
nfs/<hostname>@<REALM>
host/<hostname>@<REALM>
root/<anyname>@<REALM>
nfs/<anyname>@<REALM>
host/<anyname>@<REALM>