Как перечислить общие ресурсы Samba 4, используя IP-адрес сервера и аутентификацию Kerberos?

Вопрос или проблема

Мне удается успешно перечислить ресурсы Samba 4.0.3, используя команду

smbclient -L myhostname -k.

Однако я не могу сделать то же самое, используя команду

smbclient -L 192.168.1.2 -k

и получаю ошибку session setup failed: NT_STATUS_LOGON_FAILURE.

Тем не менее, это работает, когда я использую IP и имя пользователя вот так:

smbclient -L 192.168.1.2 -U administrator.

Возможно ли выполнить эту задачу, используя IP и Kerberos-аутентификацию?

Я почти мгновенно получил ответ от Эндрю Бартлетта из команды разработчиков Samba. Он прост и ясен:

Нет. Kerberos требует имени сервера для получения правильного билета.

Эндрю Бартлетт

Если у кого-то есть более подробное объяснение, почему это так, пожалуйста, дайте мне знать.

Это невозможно по умолчанию.
Kerberos использует SPN для поиска имен хостов для конкретных сервисов, так что вам необходимо предоставить имя хоста, чтобы это работало.

Как DNS сопоставляет имена хостов с IP-адресами, так SPN сопоставляет имена хостов с конкретными сервисами, такими как LDAP, CIFS и т.д.

# используя Kerberos-аутентификацию
smbclient -L myhostname -k

# используя NTLM-аутентификацию    
smbclient -L 192.168.1.2 -U administrator

Вот пример для перечисления SPN на моем контроллере домена (я делаю это с другого узла в домене специально, чтобы показать, как сделать это удаленно)

root@fs1:~# samba-tool spn list dc1$ -H ldap://dc1 --use-kerberos=required
dc1$
User CN=DC1,OU=Domain Controllers,DC=ad,DC=internal has the following servicePrincipalName: 
         HOST/dc1.ad.internal
         HOST/DC1
         HOST/dc1.ad.internal/dc1.ad.internal
         HOST/dc1.ad.internal/AD
         ldap/dc1.ad.internal/AD
         GC/dc1.ad.internal/ad.internal
         ldap/dc1.ad.internal
         HOST/dc1.ad.internal/ad.internal
         ldap/dc1.ad.internal/ad.internal
         E3514235-4B06-11D1-AB04-00C04FC2DCD2/d00cd990-e969-4498-9119-d98db2d43141/ad.internal
         ldap/d00cd990-e969-4498-9119-d98db2d43141._msdcs.ad.internal
         ldap/DC1
         RestrictedKrbHost/DC1
         RestrictedKrbHost/dc1.ad.internal
         ldap/dc1.ad.internal/DomainDnsZones.ad.internal
         ldap/dc1.ad.internal/ForestDnsZones.ad.internal

Вот отличный обзор о Kerberos и NTLM:
https://medium.com/@araman99/all-about-kerberos-ntlm-authentication-on-windows-systems-42e793afb020

Ответ или решение

Чтобы перечислить доступные ресурсы на сервере Samba 4, используя IP-адрес сервера и аутентификацию Kerberos, нужно понимать ограничения протокола Kerberos. Эта задача затруднена тем, что Kerberos требует использования имен серверов для получения корректных билетов, что делает невозможным применение IP-адресов.

Почему Kerberos не работает с IP-адресами?

Kerberos, будучи сетевым протоколом аутентификации, использует Service Principal Names (SPNs) для сопоставления имен сервисов и узлов. Это подобно тому, как DNS разрешает имена хостов в IP-адреса. SPN ассоциирует конкретные службы, такие как LDAP или CIFS, с их именами хостов. Таким образом, для работы Kerberos необходимо указание имени хоста, а не IP-адреса.

Пример команды для использования Kerberos-аутентификации:

smbclient -L myhostname -k

Почему работает аутентификация через NTLM с использованием IP?

Когда вы используете IP-адрес вместе с именем пользователя, как в случае с NTLM-аутентификацией, команда выглядит так:

smbclient -L 192.168.1.2 -U administrator

NTLM не требует имен сервиса для аутентификации, поэтому его использование с IP-адресами возможно.

Решение проблемы

К сожалению, нет способа использовать Kerberos с IP-адресами, поскольку это противоречит самой архитектуре протокола. Однако вы можете обеспечить настройку DNS, чтобы всегда использовать имена хостов вместо IP-адресов. Это обеспечит успешную аутентификацию через Kerberos.

Как проверить настройки SPN?

Вы можете просмотреть список SPN для всех контроллеров с помощью команды:

samba-tool spn list dc1$ -H ldap://dc1 --use-kerberos=required

Это даст вам представление о привязках SPN для используемых служб.

Заключение

Если ваша цель — безопасная аутентификация и использование преимуществ Kerberos, убедитесь в корректной конфигурации DNS и использовании имен хостов. Понимание различий в протоколах аутентификации способствует более эффективному управлению сетевой безопасностью.

Для глубокого понимания механизмов работы Kerberos и NTLM рекомендуется ознакомиться с дополнительными ресурсами, такими как эта статья на Medium.

Оцените материал
Добавить комментарий

Капча загружается...