Проблема с smbclient после миграции ОС (ядро 4.19 до 5.15) и обновления версии (4.10 до 4.19.4)

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

Мы недавно мигрировали нашу систему на новую ОС, обновив ядро с версии 4.19 до 5.15. Мы используем smbclient для передачи файлов на SMB-общую папку. Эта настройка работала прекрасно с более старой ОС и версией ядра, но после обновления мы столкнулись с проблемами.

Старая настройка:

Ядро: 4.9.309-1.11.10.0.x86_64
Версия smbclient: 4.10.16

Новая настройка:

Ядро: 5.15.160-1.11.10.0.x86_64
Версия smbclient: 4.19.4
Вот команда, которую мы используем:

smbclient \\\cifsshare -U ‘домен/имя_пользователя%’ -c ‘ls’ -d10 –use-kerberos=off

cli_session_setup_spnego_send: Подключение к <IP> как имя_пользователя с использованием SPNEGO
Начало механизма GENSEC spnego
gensec_spnego_client_negTokenInit_step: Не удалось найти подходящий mechtype в NEG_TOKEN_INIT
gensec_update_done: spnego[...] NT_STATUS_INVALID_PARAMETER
SPNEGO вход не удался: Неправильный параметр был передан службе или функции.
настройка сеанса не удалась: NT_STATUS_INVALID_PARAMETER

Попытки решения:
Судя по журналам, похоже, что smbclient пытается выполнить аутентификацию NTLM по умолчанию. Чтобы исправить это, я добавил следующие строки в файл smb.conf:

ntlm auth = ntlmv2-only
ntlm auth = yes

Однако это не решило проблему.

Поведение старой версии:
С более старой настройкой процесс аутентификации с использованием той же команды работает как ожидалось:

cli_session_setup_spnego_send: Подключение к <IP> как имя_пользователя с использованием SPNEGO
Начало подсистемы GENSEC ntlmssp
проведённый диалект[SMB3_11] против сервера[IP]
запрос сеанса выполнен

Резюме:

Проблема: smbclient выдает NT_STATUS_INVALID_PARAMETER на новой настройке.
Работает на: Старой настройке с ядром 4.19 и версией smbclient 4.10.16.
Не работает на: Новой настройке с ядром 5.15 и версией smbclient 4.19.4.

Вопрос:
Что может быть причиной этой проблемы с аутентификацией после обновления как ядра, так и версии smbclient? Есть ли какие-либо конкретные изменения в smbclient с версии 4.10 до 4.19.4, которые могут привести к этой проблеме? Будем очень признательны за любые предложения по ее решению.

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

Проблема с smbclient после миграции ОС (киллер 4.19 на 5.15) и обновления версии (4.10 до 4.19.4)

При выполнении миграции вашей системы на новую ОС с обновлением ядра с версии 4.19 на 5.15 и версии smbclient с 4.10.16 на 4.19.4, вы столкнулись с проблемами аутентификации при использовании smbclient для отправки файлов на SMB-шар. В данной статье мы постараемся подробно проанализировать причину возникновения данной проблемы и предложить возможные пути её решения.

Описание проблемы

Старый сетап:

  • Ядро: 4.9.309-1.11.10.0.x86_64
  • Версия smbclient: 4.10.16

Новый сетап:

  • Ядро: 5.15.160-1.11.10.0.x86_64
  • Версия smbclient: 4.19.4

При выполнении команды:

smbclient \\\cifsshare -U 'domain/username%' -c 'ls' -d10 --use-kerberos=off

Вы получаете ошибку:

cli_session_setup_spnego_send: Connect to <IP> as username using SPNEGO
Starting GENSEC mechanism spnego
gensec_spnego_client_negTokenInit_step: Could not find a suitable mechtype in NEG_TOKEN_INIT
gensec_update_done: spnego[...] NT_STATUS_INVALID_PARAMETER
SPNEGO login failed: An invalid parameter was passed to a service or function.
session setup failed: NT_STATUS_INVALID_PARAMETER

Анализ проблемы

Исходя из представленных вами логов, можно заметить, что smbclient пытается выполнить аутентификацию NTLM по умолчанию, но не может найти подходящий механизм. Ошибка NT_STATUS_INVALID_PARAMETER указывает на то, что один из параметров, переданных в процессе настройки сеанса, недействителен.

Изменения в smbclient между версиями 4.10 и 4.19.4:

  1. Поддержка различных механизмов аутентификации: Более новая версия smbclient могла внести изменения в поддержку механизма SPNEGO и аутентификации NTLM.
  2. Параметры конфигурации: Изменения в конфигурации по умолчанию могут привести к неверной интерпретации параметров.

Предложенные решения

  1. Проверьте конфигурацию smb.conf:
    Убедитесь, что у вас правильная конфигурация для security и encrypt passwords. Попробуйте использовать следующие настройки:

    [global]
    workgroup = YOUR_WORKGROUP
    realm = YOUR_REALM
    security = user
    allow insecure wide links = yes
    ntlm auth = ntlmv2-only
    invalid users = guest
  2. Включите параметр client use spnego для проверки:
    В вашем smb.conf добавьте:

    client use spnego = no

    Это позволит отключить использование SPNEGO для аутентификации и может помочь в исправлении проблемы.

  3. Проверьте билеты Kerberos: Убедитесь, что у вас корректно получены билеты Kerberos (если вы используете Kerberos). Вы можете использовать команду:

    klist

    и убедиться, что ваш билет действителен и имеет правильные права доступа.

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

    smbclient \\\cifsshare -U 'domain/username%' -c 'ls' -d10 --use-kerberos=off

    Это поможет собрать больше информации о том, где именно происходит сбой.

  5. Обратитесь к документации: Ознакомьтесь с официальной документацией для версии 4.19.4, чтобы выяснить возможные изменения в механизмах аутентификации или конфигурации по сравнению с 4.10.16.

Заключение

Проблемы с аутентификацией после обновления smbclient и ядра могут быть достаточно комплексными и требовать тщательного анализа. Проведя предложенные шаги по исследованию и оптимизации настройки, вы значительно повысите вероятность успешной аутентификации на SMB-шаре. Не забывайте проверять каждую настройку и сохранять резервные копии конфигураций для возможности быстрого восстановления в случае необходимости.

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

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