Smb протокол windows 10. Доступ к общим ресурсам компьютера MS Windows (протокол SAMBA)

В связи с недавной эпидемией шифровальщика WannaCry, эксплуатирующим уязвимость SMB v1, в сети снова появились советы по отключению этого протокола. Более того, Microsoft настоятельно рекомендовала отключить первую версию SMB еще в сентябре 2016 года. Но такое отключение может привести к неожиданным последствиям, вплоть до курьезов: лично сталкивался с компанией, где после борьбы с SMB перестали играть беспроводные колонки Sonos.


Специально для минимизации вероятности «выстрела в ногу» я хочу напомнить об особенностях SMB и подробно рассмотреть, чем грозит непродуманное отключение его старых версий.


SMB (Server Message Block) – сетевой протокол для удаленного доступа к файлам и принтерам. Именно он используется при подключении ресурсов через \servername\sharename. Протокол изначально работал поверх NetBIOS, используя порты UDP 137, 138 и TCP 137, 139. С выходом Windows 2000 стал работать напрямую, используя порт TCP 445. SMB используется также для входа в домен Active Directory и работы в нем.


Помимо удаленного доступа к ресурсам протокол используется еще и для межпроцессорного взаимодействия через «именованные потоки» – named pipes . Обращение к процессу производится по пути \.\pipe\name.

Первая версия протокола, также известная как CIFS (Common Internet File System), была создана еще в 1980-х годах, а вот вторая версия появилась только с Windows Vista, в 2006. Третья версия протокола вышла с Windows 8. Параллельно с Microsoft протокол создавался и обновлялся в его открытой имплементации Samba .


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


Под спойлером вы найдете сводную таблицу изменений в версиях SMB.

Версия Операционная система Добавлено, по сравнению с предыдущей версией
SMB 2.0 Windows Vista/2008 Изменилось количество команд протокола со 100+ до 19
Возможность «конвейерной» работы – отправки дополнительных запросов до получения ответа на предыдущий
Поддержка символьных ссылок
Подпись сообщений HMAC SHA256 вместо MD5
Увеличение кэша и блоков записи\чтения
SMB 2.1 Windows 7/2008R2 Улучшение производительности
Поддержка большего значения MTU
Поддержка службы BranchCache – механизм, кэширующий запросы в глобальную сеть в локальной сети
SMB 3.0 Windows 8/2012 Возможность построения прозрачного отказоустойчивого кластера с распределением нагрузки
Поддержка прямого доступа к памяти (RDMA)
Управление посредством командлетов Powershell
Поддержка VSS
Подпись AES–CMAC
Шифрование AES–CCM
Возможность использовать сетевые папки для хранения виртуальных машин HyperV
Возможность использовать сетевые папки для хранения баз Microsoft SQL
SMB 3.02 Windows 8.1/2012R2 Улучшения безопасности и быстродействия
Автоматическая балансировка в кластере
SMB 3.1.1 Windows 10/2016 Поддержка шифрования AES–GCM
Проверка целостности до аутентификации с использованием хеша SHA512
Обязательные безопасные «переговоры» при работе с клиентами SMB 2.x и выше

Считаем условно пострадавших

Посмотреть используемую в текущий момент версию протокола довольно просто, используем для этого командлет Get–SmbConnection :



Вывод командлета при открытых сетевых ресурсах на серверах с разной версией Windows.


Из вывода видно, что клиент, поддерживающий все версии протокола, использует для подключения максимально возможную версию из поддерживаемых сервером. Разумеется, если клиент поддерживает только старую версию протокола, а на сервере она будет отключена – соединение установлено не будет. Включить или выключить поддержку старых версий в современных системах Windows можно при помощи командлета Set–SmbServerConfiguration , а посмотреть состояние так:


Get–SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol


Выключаем SMBv1 на сервере с Windows 2012 R2.



Результат при подключении с Windows 2003.


Таким образом, при отключении старого, уязвимого протокола можно лишиться работоспособности сети со старыми клиентами. При этом помимо Windows XP и 2003 SMB v1 используется и в ряде программных и аппаратных решений (например NAS на GNU\Linux, использующий старую версию samba).


Под спойлером приведу список производителей и продуктов, которые полностью или частично перестанут работать при отключении SMB v1.

Производитель Продукт Комментарий
Barracuda SSL VPN
Web Security Gateway backups
Canon Сканирование на сетевой ресурс
Cisco WSA/WSAv
WAAS Версии 5.0 и старше
F5 RDP client gateway
Microsoft Exchange Proxy
Forcepoint (Raytheon) «Некоторые продукты»
HPE ArcSight Legacy Unified Connector Старые версии
IBM NetServer Версия V7R2 и старше
QRadar Vulnerability Manager Версии 7.2.x и старше
Lexmark Прошивки Firmware eSF 2.x и eSF 3.x
Linux Kernel Клиент CIFS С 2.5.42 до 3.5.x
McAfee Web Gateway
Microsoft Windows XP/2003 и старше
MYOB Accountants
NetApp ONTAP Версии до 9.1
NetGear ReadyNAS
Oracle Solaris 11.3 и старше
Pulse Secure PCS 8.1R9/8.2R4 и старше
PPS 5.1R9/5.3R4 и старше
QNAP Все устройства хранения Прошивка старше 4.1
RedHat RHEL Версии до 7.2
Ricoh МФУ, сканирование на сетевой ресурс Кроме ряда моделей
RSA Authentication Manager Server
Samba Samba Старше 3.5
Sonos Беспроводные колонки
Sophos Sophos UTM
Sophos XG firewall
Sophos Web Appliance
SUSE SLES 11 и старше
Synology Diskstation Manager Только управление
Thomson Reuters CS Professional Suite
Tintri Tintri OS, Tintri Global Center
VMware Vcenter
ESXi Старше 6.0
Worldox GX3 DMS
Xerox МФУ, сканирование на сетевой ресурс Прошивки без ConnectKey Firmware

Список взят с сайта Microsoft , где он регулярно пополняется.


Перечень продуктов, использующих старую версию протокола, достаточно велик – перед отключением SMB v1 обязательно нужно подумать о последствиях.

Все-таки отключаем

Если программ и устройств, использующих SMB v1 в сети нет, то, конечно, старый протокол лучше отключить. При этом если выключение на SMB сервере Windows 8/2012 производится при помощи командлета Powershell, то для Windows 7/2008 понадобится правка реестра. Это можно сделать тоже при помощи Powershell:


Set–ItemProperty –Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 –Type DWORD –Value 0 –Force

Или любым другим удобным способом. При этом для применения изменений понадобится перезагрузка.


Для отключения поддержки SMB v1 на клиенте достаточно остановить отвечающую за его работу службу и поправить зависимости службы lanmanworkstation. Это можно сделать следующими командами:


sc.exe config lanmanworkstation depend=bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start=disabled

Для удобства отключения протокола по всей сети удобно использовать групповые политики, в частности Group Policy Preferences. С помощью них можно удобно работать с реестром.



Создание элемента реестра через групповые политики.


Чтобы отключить протокол на сервере, достаточно создать следующий параметр:

    путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters;

    новый параметр: REG_DWORD c именем SMB1;

  • значение: 0.


Создание параметра реестра для отключения SMB v1 на сервере через групповые политики.


Для отключения поддержки SMB v1 на клиентах понадобится изменить значение двух параметров.


Сначала отключим службу протокола SMB v1:

    путь: HKLM:\SYSTEM\CurrentControlSet\services\mrxsmb10;

    параметр: REG_DWORD c именем Start;

  • значение: 4.


Обновляем один из параметров.


Потом поправим зависимость службы LanmanWorkstation, чтоб она не зависела от SMB v1:

    путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation;

    параметр: REG_MULTI_SZ с именем DependOnService;

  • значение: три строки – Bowser, MRxSmb20 и NSI.


И заменяем другой.


После применения групповой политики необходимо перезагрузить компьютеры организации. После перезагрузки SMB v1 перестанет использоваться.

Работает – не трогай

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


Расскажите, а вы уже отключили у себя SMB первой версии? Много было жертв?

Если вы из Windows 10 не можете открыть сетевые папки на других сетевых устройствах (NAS, Samba сервера Linux) или на компьютерах со старыми версиями Windows (Windows 7/ XP /2003), скорее всего проблема связана с тем, что в вашей новой версии Windows 10 отключена поддержка устаревших и небезопасных версий протокола SMB (используется в Windows для доступа к общим сетевым папкам и файлам). Так, начиная с Windows 10 1709, был отключен протокол SMBv1 и анонимный (гостевой) доступ к сетевым папкам по протоколу SMBv2.

Microsoft планомерно отключает старые и небезопасные версий протокола SMB во всех последний версиях Windows. Начиная с Windows 10 1709 и Windows Server 2019 (как в Datacenter так и в Standard ) в операционной системе по умолчанию (помните атаку , которая как раз и реализовалась через дыру в SMBv1).

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

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

Начиная с версии Windows 10 1709 (Fall Creators Update) Enterprise и Education пользователи стали жаловаться, что при попытке открыть сетевую папку на соседнем компьютере стала появляться ошибка:

Вы не можете получить доступ к этой общей папке, так как политики безопасности вашей организации блокируют гостевой доступ без проверки подлинности. Эти политики помогают защитить ваш компьютер от небезопасных или вредоносных устройств в сети. An error occurred while reconnecting Y: to \\nas1\share Microsoft Windows Network: You can’t access this shared folder because your organization’s security policies block unauthenticated guest access. These policies help protect your PC from unsafe or malicious devices on the network.

При это на других компьютерах со старыми версиями Windows 8.1/7 или на Windows 10 с билдом до 1709, эти же сетевые каталоги открываются нормально. Эта проблем связана с тем, что в современных версиях Windows 10 (начиная с 1709) по умолчанию запрещен сетевой доступ к сетевым папкам под гостевой учетной записью по протоколу SMBv2 (и ниже). Гостевой (анонимный) доступ подразумевают доступ к сетевой папке без аутентификации. При доступе под гостевым аккаунтом по протоколу SMBv1/v2 не применяются такие методы защиты трафика, как SMB подписывание и , что делает вашу сессию уязвимой против MiTM (man-in-the-middle) атак.

При попытке открыть сетевую папку под гостем по протоколу SMB2, в журнале клиента SMB (Microsoft-Windows-SMBClient) фиксируется ошибка:

Source: Microsoft-Windows-SMBClient Event ID: 31017 Rejected an insecure guest logon.

В большинстве случае с этой проблемой можно столкнуться при использовании старых версий NAS (обычно для простоты настройки на них включают гостевой доступ) или при доступе к сетевым папкам на старых версиях Windows 7/2008 R2 или Windows XP /2003 с настроенным (гостевым) доступом (см. в разных версиях Windows).

В этом случае Microsoft рекомендует изменить настройки на удаленном компьютере или NAS устройстве, который раздает сетевые папки. Желательно переключить сетевой ресурс в режим SMBv3. А если поддерживается только протокол SMBv2, настроить доступ с аутентификацией. Это самый правильный и безопасный способ исправить проблему.

В зависимости от устройства, на котором хранятся сетевые папки, вы должны отключить на них гостевой доступ.


Есть другой способ – изменить настройки вашего SMB клиента и разрешить доступ с него на сетевые папки под гостевой учетной записью.

Чтобы разрешить гостевой доступ с вашего компьютера, откройте редактор групповых политик (gpedit.msc) и перейдите в раздел: Конфигурация компьютера -> Административные шаблоны -> Сеть -> Рабочая станция Lanman (Computer Configuration ->Administrative templates -> Network (Сеть) -> Lanman Workstation ). Включите политику Enable insecure guest logons (Включить небезопасные гостевые входы) .

Т.е. из сообщения об ошибке четко видно, что сетевая папка поддерживает только SMBv1 протокол доступа. В этом случае нужно попытаться перенастроить удаленное SMB устройство для поддержки как минимум SMBv2 (правильный и безопасный путь).

Если сетевые папки раздает Samba на Linux, вы можете указать минимально поддерживаемую версию SMB в файле smb.conf так:

Server min protocol = SMB2_10 client max protocol = SMB3 client min protocol = SMB2_10 encrypt passwords = true restrict anonymous = 2

В Windows 7/Windows Server 2008 R2 вы можете отключить SMBv1 и разрешить SMBv2 так:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol"
Set-SmbServerConfiguration –EnableSMB2Protocol $true

Если ваше сетевое устройство (NAS, Windows XP, Windows Server 2003), поддерживает только протокол SMB1, в Windows 10 вы можете включить отдельный компонент SMB1Protocol-Client. Но это не рекомендуется!!!

Запустите консоль PowerShell и проверьте, что SMB1Protocol-Client отключен (State: Disabled):

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

Включите поддержку протокола SMBv1 (потребуется перезагрузка):

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

Также вы можете включить/отключить дополнительные компоненты Windows 10 (в том числе SMBv1) из меню optionalfeatures.exe -> SMB 1.0/CIFS File Sharing Support

В Windows 10 1709 и выше клиент SMBv1 автоматически удаляется, если он не использовался более 15 дней (за это отвечает компонент SMB 1.0/CIFS Automatic Removal).

В этом примере я включил только SMBv1 клиент. Не включайте компонент SMB1Protocol-Server, если ваш компьютер не используется устаревшими клиентами в качестве сервера для хранения общих папок.

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


В диалоговом окне Новые свойства реестра выберите следующее:


  • Действие: Создать

  • Куст : HKEY_LOCAL_MACHINE

  • Путь к разделу: SYSTEM\CurrentControlSet\Services\Lanman Server\Parameters

  • Имя параметра: SMB1

  • Тип значения: REG_DWORD.

  • Значение: 0

Это отключит серверные компоненты SMB версии 1. Эта групповая политика должна быть применена ко всем необходимым рабочим станциям, серверам и контроллерам домена в домене.

Примечание. Фильтры WMI могут быть также настроены для исключения не поддерживаемых операционных систем или выбранных исключений, таких как Windows XP.

Внимание! Будьте осторожны при внесении изменений на контроллерах, где для устаревших систем, таких как Windows XP или Linux более поздней версии, и сторонних систем (которые не поддерживают протоколы SMB версия 2 или SMB версии 3) требуется доступ к SYSVOL или другим общим папкам, в которых SMB версии 1 был отключен.


Отключение клиента SMB версия 1 с групповой политикой

Для отключения клиента SMB версии 1 ключ службы раздела реестра необходимо обновить для отключения запуска MRxSMB10 , и затем зависимость в MRxSMB10 должна быть удалена из записи для LanmanWorkstation , чтобы она могла быть запущена стандартным способом без запроса MRxSMB10 при первом запуске.

Это обновление заменяет значения по умолчанию в следующих двух элементах реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\services\mrxsmb10

Параметр: Пуск REG_DWORD: 4 = отключено

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Services\LanmanWorkstation

Параметр: DependOnService REG_MULTI_SZ: “Bowser”,”MRxSmb20″,”NSI”

Примечание. По умолчанию содержит MRxSMB10, который в настоящее время исключен как зависимость

Для настройки с использованием групповой политики:


  1. Откройте Консоль управления групповыми политиками . Щелкните правой кнопкой мыши "Объект групповой политики (GPO)", который должен содержать новый предпочтительный элемент, затем нажмите Изменить .

  2. В дереве консоли в разделе Конфигурация компьютера разверните папку Настройки , затем разверните папку Параметры Windows .

  3. Щелкните правой кнопкой мыши узел Реестр , нажмите Новый и выберите Элемент реестра .

В диалоговом окне Новые свойства реестра выберите следующее:


  • Действие: Обновление

  • Куст : HKEY_LOCAL_MACHINE

  • Путь к разделу: SYSTEM\CurrentControlSet\services\mrxsmb 10

  • Имя параметра: Start

  • Тип значения: REG_DWORD.

  • Значение данных : 4

Затем удалите зависимость в MRxSMB10 , которая была отключена

В диалоговом окне Новые свойства реестра выберите следующее:


  • Действие: Замените

  • Куст : HKEY_LOCAL_MACHINE

  • Путь к разделу: SYSTEM\CurrentControlSet\Services\Lanman Workstation

  • Имя параметра: DependOnService

  • Тип парамтера REG_MULTI_SZ

  • Значение данных :

    • Bowser

    • MRxSmb20



Примечание. У эти трех строк, не будет маркеров (см. ниже)

Значения по умолчанию содержат MRxSMB10 в большом количестве версий Windows, поэтому замена их многозначной строкой приведет к удалению MRxSMB10 как зависимости для LanmanServer и переходу от четырех значений по умолчанию к только трем значениям, описанным выше.

Примечание. При использовании Консоли управления групповыми политиками не нужно использовать кавычки или запятые. Просто введите каждую запись отдельной строкой, как указано выше

Требуется перезагрузка:

После применения политики и ввода параметров реестра SMB версия 1 будет отключена после перезагрузки системы.

Аннотация

Если все параметры находятся в одном Объекте групповой политики (GPO), то Управление групповыми политиками отобразит параметры ниже.

Тестирование и проверка

После настройки дайте разрешение политике выполнить репликацию и обновление. Поскольку это необходимо для тестирования, запустите gpupdate /force из строки CMD.EXE и затем просмотрите целевые машины, чтобы параметры реестра были применены правильно. Убедитесь, что SMB версия 2 и SMB версия 3 работают для всех систем в среде.

Внимание! Не забудьте перезагрузить целевые системы.

Этой осенью Microsoft планирует полностью отключить протокол SMBv1 в Windows 10 .

Сетевой протокол SMB первой версии был разработан Microsoft уже пару десятков лет назад. Компания четко осознает, что дни данной технологии уже давно сочтены.

Тем не менее, данное изменение коснется только новые установки Windows 10. Если вы просто выполните обновление до Windows 10 Fall Creators Update , протокол все еще останется в системе.

В тестовой сборке Windows 10 Insider Preview build 16226 SMBv1 уже полностью отключен. В версиях Домашняя и Pro по умолчанию удален серверный компонент, но клиент SMB1 по-прежнему остается в системе. Это означает, что вы можете подключаться к устройствам по SMB1, но никто не сможет подключиться к вашей машине по нему. В версиях Enterprise и Education SMB1 отключен полностью.

Нед Пайл (Ned Pyle) из Microsoft пояснил, что основной причиной для данного решения стало повышение уровня безопасности:

“Это главная, но не единственная причина. Старый протокол был заменен более функциональным SMB2, которые предоставляет более широкие возможности. Версия 2.02 поставляется с Windows Server 2008 и является минимальной рекомендуемой версией SMB. Чтобы получить максимальную безопасность и функциональность, стоит использовать версию SMB 3.1.1. SMB 1 уже давно морально устарел”.

Хотя SMBv1 все еще останется на устройствах, обновленных до Windows 10 Fall Creators Update, его можно отключить вручную.

Как отключить SMB1 в Windows 10

  1. Наберите в поиске мню Пуск Панель управления и перейдите в "Программы и компоненты".
  2. В левом меню выберите опцию “Включение и отключение компонентов Windows”.
  3. Уберите галочку около объекта “Поддержка общего доступа к файлам SMB 1.0/CIFS ”.

или с помощью PowerShell:

  1. Щелкните правой кнопкой мыши по меню Пуск, выберите опцию Windows PowerShell (администратор)
  2. Выполните команду Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

SMB или Server Message Block это протокол обмена по сети, предназначенный для совместного использования файлов, принтеров и других различных устройств. Существует три версии SMB – SMBv1, SMBv2 и SMBv3. Из соображений безопасности Microsoft рекомендует отключить SMB версии 1, так как он устарел и использует технологию, которой почти 30 лет. Чтобы избежать заражения вирусами-вымогателями типа WannaCrypt нужно отключить SMB1 и установить обновления для операционной системы. Этот протокол используется Windows 2000, Windows XP, Windows Server 2003 и Windows Server 2003 R2 – поэтому сетевой файловый доступ к данным версиям ОС будет не доступен. Тоже самое относится к некоторым сетевым хранилищам, сканерам и т.п.

Отключение SMB1 из Панели управления

Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows

Отключаем ‘Поддержка общего доступа к файлам SMB 1.0/CIFS’

Отключение SMB1 через Powershell

Откройте консоль Powershell с правами администратора и введите следующую команду:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

Отключить SMB1 с помощью реестра Windows

Также можно отключить SMBv1 запустив regedit.exe и перейдя к следующему разделу:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Создайте в этом разделе DWORD SMB1 со значением 0 .

Значения для включения и отключения SMB1:

  • 0 = Выключено
  • 1 = Включено

После этого необходимо установить обновление MS17-010. Обновление вышло подо все версии Windows, включая не поддерживаемые больше Windows XP и Windows Server 2003.

И в заключении хочется сказать, что, не смотря на установленный антивирус и регулярные обновления операционной системы, если Вам дороги ваши данные, необходимо в первую очередь думать о резервном копировании.

Почему и как необходимо отключить SMB1 в Windows 10/8/7

Похожие публикации