Исправляем ошибку подключения Windows к общим ресурсам на сервере Samba Linux

  • Автор:

cannot-connect-to-linux-samba-from-windows-000.pngОшибки сетевого доступа в Windows - вещь довольно неприятная, тем более что не все умеют их правильно диагностировать и исправлять. При том, что интернет кишит различными способами самой разной степени сомнительности. Поэтому мы решили подробно разобрать одну из типовых ситуаций, показав как процесс диагностики, так и различные способы решения проблемы, каждое из которых имеет свои особенности, в частности влияние на безопасность. Такой подход позволит не только выяснить причины ошибки и устранить ее, но и поможет подойти к этому вопросу осознанно, полностью представляя последствия своих действий.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

С ситуацией, когда компьютер под ОС Windows не хочет подключаться или перестает подключаться к общим ресурсам на сервере Samba под управлением Linux встретиться можно довольно часто и тому есть объективные причины, которые мы рассмотрим ниже, ну а пока посмотрим на ее внешние симптомы. Система неожиданно сообщает, что она не может получить доступ к указанному ресурсу и выдает абсолютно неинформативную ошибку:

Код ошибки: 0x80004005 
Неопознанная ошибка

cannot-connect-to-linux-samba-from-windows-001.png

Если попробовать подключиться в консоли, например, командой:

net view \\192.168.233.182

Где 192.168.233.182 - адрес искомого сервера, то получим немного другую ошибку:

Системная ошибка 53.
Не найден сетевой путь.

При этом указанный узел нормально пингуется, а проверка доступности 445 порта говорит, что все нормально:

cannot-connect-to-linux-samba-from-windows-002.pngПосле этого обычно начинается сетование на кривизну какого-либо из решений (в зависимости от личных предпочтений) и поиск решения в интернете, где можно найти как условно рабочие, так и полную дичь, вроде включения SMB1 и бездумного изменения различных политик и ключей реестра.

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

Но сперва поясним ситуацию по протоколу SMB1:

Протокол SMB1 устарел и небезопасен, в настоящее время отключен на всех современных системах.

Кроме того, даже если вы включите его поддержку, то начиная с Windows 1709 она автоматически отключится после 15 дней неиспользования. В общем: включать SMB1 не нужно, разве что только вам действительно нужна поддержка устаревших клиентов.

В современных версиях Samba протокол SMB1 также отключен и минимальной поддерживаемой версией является SMB2_02, а максимальной SMB3. Это параметры по умолчанию и проверить их можно командами:

testparm --parameter-name="min protocol"
testparm --parameter-name="max protocol"

Настройки по умолчанию достаточно актуальны, и мы не советуем отдельно задавать версии протоколов без особой на то нужды. SMB2_02 - обозначает младшую версию протокола SMB2, а SMB3 указывает на старшую доступную версию, таким образом поддерживаются все системы начиная с Windows Vista и Server 2008. Причиной ошибки SMB1 быть не может.

Поэтому не занимаемся ерундой, а ищем истинную причину, в этом нам поможет Журнал событий. Раскрываем последовательно Журналы приложений и служб - Microsoft - Windows - SMBClient и в журнале Security находим ошибку 31017:

Небезопасный гостевой вход отклонен.

Рекомендации.
Это событие указывает на попытку сервера разрешить вход пользователя как непроверенного гостя, которая была отклонена клиентом.
Для гостевого входа не поддерживаются стандартные функции обеспечения безопасности, например подписывание и шифрование.
Вследствие этого гостевой вход уязвим для атак "злоумышленник в середине", которые могут привести к попаданию конфиденциальных данных в сеть.
По умолчанию небезопасный гостевой вход отключен в Windows. Корпорация Майкрософт не рекомендует включать его.

cannot-connect-to-linux-samba-from-windows-003.pngПосле чего все становится на свои места. Нет никаких чудес, просто политики безопасности Windwos не позволяют подключаться к серверу с анонимным гостевым доступом. Кстати, это относится не только к Samba.

Теперь, когда есть понимание происходящего мы можем выбрать одно из двух решений указанной проблемы.

Решение №1. Отключаем гостевой доступ на сервере Samba

С точки зрения безопасности это наиболее правильное решение, которое позволит получать доступ к общим ресурсам не снижая уровень безопасности сети. Для этого внесем некоторые изменения в конфигурационный файл Samba, обычно он располагается в /etc/samba/smb.conf. Прежде всего найдем и приведем к следующему виду директиву:

map to guest = never

А в настройках каждого общего ресурса укажем:

guest ok = no

Возможно, вам еще придется выполнить некоторые настройки, скажем, завести пользователей и назначить им права, для всего этого рекомендуем воспользоваться нашей статьей:

Настройка файлового сервера Samba на платформе Debian / Ubuntu

Сохраняем все изменения и проверяем конфигурацию на ошибки:

testparm

Затем перезапускаем службу:

systemctl restart smbd

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

cannot-connect-to-linux-samba-from-windows-004.pngПроблема решена, ресурсы файлового сервера Samba снова доступны.

Решение №2. Разрешаем небезопасный гостевой вход в Windows

Если Решение №1 вас по каким-либо причинам не устраивает, и вы осознанно хотите понизить уровень безопасности вашей сети, то можно пойти другим путем и разрешить небезопасный гостевой вход.

Запустим редактор групповой политики (gpedit.msc) и перейдем в Конфигурация компьютера - Административные шаблоны - Сеть - Рабочая станция Lanman и переводим политику Включить небезопасные гостевые входы в положение Включено.

cannot-connect-to-linux-samba-from-windows-005.png

После чего вам потребуется перезапустить службу Рабочая станция или перезагрузить компьютер.

Альтернативой этому способу будет внесение изменений через реестр:

reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v AllowInsecureGuestAuth /t REG_DWORD /d 1

Затем перезапустим службу:

net stop LanmanWorkstation && net start LanmanWorkstation

После чего можем продолжать привычно использовать общие сетевые ресурсы с гостевой моделью доступа.

cannot-connect-to-linux-samba-from-windows-006.pngКакой вывод можно сделать после прочтения данного материала? Прежде всего понять, что любые сетевые ошибки имеют под собой вполне определенную причину, а не являются воздействием некой неведомой силы. И эти причины имеют свойство отображаться в журналах и логах.

Решений таких проблем также может быть несколько, каждое из которых может иметь свои достоинства и недостатки. Поэтому не нужно хватать первый попавшийся рецепт из интернета, а следует разобраться в причинах и выбрать из доступных вариантов тот, который будет вас наиболее устраивать.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments