Подключение SMB-общего ресурса из контейнера Docker на Debian завершается неудачно с неправильным паролем.

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

Я пытаюсь подключить Samba-ресурс TrueNAS Scale с удаленного компьютера из контейнера на базе Ubuntu Debain.

Подключение не удается на сервере с неверным паролем:

  ntlm_password_check: NTLMv2 password check failed [2025/01/27 19:23:14.640615,  3] ../../libcli/auth/ntlm_check.c:487(ntlm_password_check)   ntlm_password_check: NEITHER

LanMan ни NT пароля не предоставлено для пользователя user1 [2025/01/27
19:23:14.641310, 2] ../../source3/auth/
auth.c:353(auth_check_ntlm_password) check_ntlm_password:
Аутентификация для пользователя [user1] -> [user1] НЕ УДАЛАСЬ с ошибкой
NT_STATUS_WRONG_PASSWORD, authoritative=1 [2025/01/27 19:23:14.641418,
2] ../../auth/auth_log.c:1237(log_authentication_event_human_readable)
Auth: [SMB2,(null)] пользователь [][user1] в [Пн, 27 Янв 2025 19:23:14.641387 PST] со статусом [NTLMv2] [NT_STATUS_WRONG_PASSWORD]
рабочая станция [docker] удаленный хост [ipv4:192.168.10.38:57766], сопоставленный с
[][user1]. локальный хост [ipv4:192.168.10.10:445] {“timestamp”:
“2025-01-27T19:23:14.641728-0800”, “type”: “Authentication”,
“Аутентификация”: {“version”: {“major”: 1, “minor”: 3}, “eventId”: 4625,
“logonId”: “0”, “logonType”: 3, “status”: “NT_STATUS_WRONG_PASSWORD”,
“localAddress”: “ipv4:192.168.10.10:445”, “remoteAddress”:
“ipv4:192.168.10.38:57766”, “serviceDescription”: “SMB2”,
“authDescription”: null, “clientDomain”: “”, “clientAccount”: “user1”,
“workstation”: “docker”, “becameAccount”: null, “becameDomain”: null,
“becameSid”: null, “mappedAccount”: “user1”, “mappedDomain”: “”,
“netlogonComputer”: null, “netlogonTrustAccount”: null,
“netlogonNegotiateFlags”: “0x00000000”, “netlogonSecureChannelType”: 0,
“netlogonTrustAccountSid”: null, “passwordType”: “NTLMv2”,
“clientPolicyAccessCheck”: null, “serverPolicyAccessCheck”: null,
“duration”: 3967}} [2025/01/27 19:23:14.642070, 3] ../../source3/smbd/
smb2_server.c:4050(smbd_smb2_request_error_ex)
smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[1]
status[NT_STATUS_LOGON_FAILURE] || at ../../source3/smbd/
smb2_sesssetup.c:147 [2025/01/27 19:23:14.771164, 3] ../../source3/
smbd/server_exit.c:229(exit_server_common) Выход сервера
(NT_STATUS_CONNECTION_RESET)

  #Файл моего компоновки:
    ...
        volumes:
    ...
          - originals:/usr/src/app/originals 
    ...
    volumes:
      model-cache:
      originals:
        driver_opts:
          type: cifs
          o: 'iocharset=utf8,username=user1,password=passw1,rw' 
          device: '//192.168.10.10/user1'
    ...

Проверено, что имя пользователя и пароль, используемые для аутентификации, верны.
Можно подключиться с другого сервера с: smbclient //192.168.10.10/user1/ -U user1

.

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

Подключение SMB-подключения к сети через Docker-контейнеры может быть сложной задачей из-за множества факторов, влияющих на успешность аутентификации и монтирования. Обратим внимание на конкретную проблему, связанную с ошибкой неверного пароля при попытке подключения к Samba-шаре, размещённой на TrueNAS Scale, из контейнера на базе Debian Ubuntu.

Теория

Протокол SMB (Server Message Block) — это протокол сетевого доступа, обычно используемый для предоставления совместного доступа к файлам, принтерам и другим ресурсам в локальных сетях. В среде Linux монтирование SMB-расшаренных ресурсов часто выполняется с помощью утилиты mount.cifs, которая использует параметры подключения для выполнения процедуры аутентификации с сервером.

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

Пример

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

  1. Неверный синтаксис конфигурации: Любая, даже небольшая ошибка в конфигурации Docker Compose файла может привести к отказу в доступе.
  2. Несовместимость с NTLMv2: Не все системы и реализации одинаково поддерживают NTLMv2, что может вызвать ошибки аутентификации.
  3. Docker-сеть и изоляция: Docker-контейнеры работают в изолированных сетях, что иногда ограничивает доступность ресурсов.

Применение

Следуя TEA-методу, давайте разберем возможные решения этой проблемы:

  1. Подтверждение конфигурации: Проверьте синтаксис и значение параметров в файле docker-compose.yml. Обратите особое внимание на опции монтирования, такие как username, password, и device. Убедитесь, что они правильно оформлены и экранированы. Например, если значение пароля содержит специальные символы, их необходимо экранировать или использовать переменные окружения для повышения безопасности.

  2. Проверка поддержки NTLM: Очень важно удостовериться, что TrueNAS и SMB-клиент в Docker-контейнере правильно настроены для работы с NTLMv2. Это может включать проверку глобальных настроек TrueNAS для поддержки аутентификации NTLMv2. В файле конфигурации Samba (smb.conf), параметр ntlm auth не должен быть отключен, если сервер ожидает аутентификацию через NTLMv2.

  3. Обновление компонентов: Убедитесь, что все программные компоненты, включая клиентские инструменты в контейнере и серверные модули TrueNAS, обновлены до актуальных версий. Это может устранить проблемы совместимости.

  4. Подключение из внешней среды: Раз рассмотренный smbclient успешно подключается из другой машины, попробуйте временно выполнить монтирование из хоста, на котором развернут Docker, чтобы определить, связь ли проблема с контейнеризацией.

  5. Проверка сетевых настроек Docker: Убедитесь, что контейнер имеет необходимые права доступа к сети и межсетевым экранам, которые могут прерывать запросы на аутентификацию.

  6. Логирование и мониторинг: Активируйте более детальное логирование в TrueNAS и Docker для отслеживания всех попыток подключения. Это может дать более точное представление о том, где теряется соединение.

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

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

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

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