Вопрос или проблема
Мне удается успешно перечислить ресурсы 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.