Зачем клиентской машине нужен субъект службы Kerberos - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь понять Kerberos и путаюсь с принципалами обслуживания. Предположим, я хочу получить доступ к общему ресурсу NFS, защищенному Kerberos.

У меня есть следующие три разных узла:

  1. Клиентский компьютер (с именем пользователя test )
  2. KDC (AS / TGS)
  3. NFS-сервер

Теперь KDC содержит основную базу данных с именем пользователя test . Кроме того, KDC содержит также nfs / DOMAINNAMEFROMNFSSERVER принципал. Этот принципал также используется совместно с сервером NFS с помощью таблицы ключей. Чтобы установить сеанс Kerberized NFS, пользователь test запрашивает TGT из KDC.

Но почему все примеры в Интернете говорят о том, что клиентскому компьютеру также нужна таблица ключей, которая должна содержать nfs / DOMAINNAMEFROMNFSSERVER принципал?

Я понимаю, что субъект службы должен присутствовать только в базе данных KDC и непосредственно на сервере NFS (с помощью таблицы ключей). Может кто-нибудь объяснить, почему на клиенте также должна присутствовать таблица ключей?

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 22 ноября 2018

См. 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>
...