SSH с единым входом в Kerberos

1380
bassjoe

Я хочу аутентифицироваться с SSH через Kerberos SSO. Теперь, когда я вошел в систему под своим основным пользователем, sourcehostя получаю свой билет Kerberos, но не могу использовать его для SSH targethost.

Проблема, кажется, имя хоста. У меня есть принципал хоста, host/targethost.example.com@EXAMPLE.COMно не важно, если я ssh targethostили ssh targethost.example.comон переведен в принципал хоста host/targethost@EXAMPLE.COM(см. Сообщение об ошибке ниже), которого нет.

Я могу ошибаться, но я думаю, что это должно быть наоборот, и то и другое ssh targethostи ssh targethost.example.comдолжно быть переведено в основной узел host/targethost.example.com@EXAMPLE.COM.

Вот ошибка:

$ ssh targethost.example.com -v ... debug1: Unspecified GSS failure. Minor code may provide more information Server host/targethost@EXAMPLE.COM not found in Kerberos database  debug1: Unspecified GSS failure. Minor code may provide more information Server host/targethost@EXAMPLE.COM not found in Kerberos database  debug1: Unspecified GSS failure. Minor code may provide more information ... debug1: Next authentication method: password testuser@targethost.example.com's password:  

Кто-нибудь может объяснить, как принципал хоста получен из имени хоста и как это можно настроить (я, кстати, на Ubuntu)?


Редактировать:

Ответ grawity привел меня к решению, которое я считаю подходящим для моей конфигурации.

  • В книге Гармана Kerberos я обнаружил, что канонизация на стороне KDC была предпочтительным способом.
  • Для моего KDC, поддерживаемого LDAP, я нашел в документации Kerberos (внизу этой страницы ) способ, как это можно реализовать.

Поэтому после создания принципала хоста с kdadmin.local/ addprincс полным доменным именем мне пришлось добавить псевдоним к новой записи принципала в LDAP, выполнив ldapmodifyследующую команду:

dn: krbPrincipalName=host/targethost.example.com@EXAMPLE.COM,cn=EXAMPLE.COM,cn=krbContainer,dc=example,dc=com replace: krbCanonicalName krbCanonicalName: host/targethost.example.com@EXAMPLE.COM - add: krbPrincipalName krbPrincipalName: host/targethost@EXAMPLE.COM 
0

1 ответ на вопрос

1
grawity

Традиционно Kerberos использовал обратный DNS для канонизации основного имени. То есть после targethost.example.comпреобразования в IP-адрес он пытается преобразовать адрес обратно в «каноническое» имя и использует его для принципала.

Если ваш targethostбыл решен с помощью / и т.д. / хосты, то первое имя в соответствующей строке будет использоваться в качестве «канонической» имя:

# good: 1.2.3.4 targethost.example.com targethost  # bad: 1.2.3.4 targethost targethost.example.com 

Если вы хотите, вы можете полностью отключить канонизацию на основе DNS через /etc/krb5.conf:

[libdefaults] dns_canonicalize_hostname = false 

... и просто создайте два принципала для хоста - один для короткого имени, другой для длинного. (Это именно то, что делает Active Directory, и мало чем отличается от поведения SSL / TLS - всегда безопаснее напрямую использовать пользовательский ввод, а не запрашивать DNS.)

Большое спасибо за подсказки! Мои файлы / etc / hosts были уже "хорошими", и запуск `nslookup targethost`, а затем` nslookup` для IP привел к полному доменному имени. Изменение их на «плохое» ничего не изменило. Я предполагаю, что для разрешения имени хоста возможны различные конфигурации. bassjoe 7 лет назад 0
Я нашел решение благодаря упомянутому вами термину «канонизация». Я добавлю это к вопросу. Я не пытался отключить канонизацию. Еще раз спасибо! bassjoe 7 лет назад 0
@bassjoe: `nslookup` - неправильный инструмент для проверки. Используйте `getent ahosts`. grawity 7 лет назад 0
В новой установке Fedora 27 после ipa-client-install мне нужно было изменить эту запись в `/ etc / krb5.conf`, чтобы можно было запускать` ssh shortname` и работать с аутентификацией Kerberos, как это делалось в Fedora. 26 и раньше. bgStack15 6 лет назад 0

Похожие вопросы