В связи с недавной эпидемией шифровальщика 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 и работы в нем. Первая версия протокола, также известная как CIFS (Common Internet File System), была создана еще в 1980-х годах, а вот вторая версия появилась только с Windows Vista, в 2006. Третья версия протокола вышла с Windows 8. Параллельно с Microsoft протокол создавался и обновлялся в его открытой имплементации Samba.  В каждой новой версии протокола добавлялись разного рода улучшения, направленные на увеличение быстродействия, безопасности и поддержки новых функций. Но при этом оставалась поддержка старых протоколов для совместимости. Разумеется, в старых версиях было и есть достаточно уязвимостей, одной из которых и пользуется WannaCry. Посмотреть используемую в текущий момент версию протокола довольно просто, используем для этого командлет Get–SmbConnection:  Вывод командлета при открытых сетевых ресурсах на серверах с разной версией Windows. Из вывода видно, что клиент, поддерживающий все версии протокола, использует для подключения максимально возможную версию из поддерживаемых сервером. Разумеется, если клиент поддерживает только старую версию протокола, а на сервере она будет отключена – соединение установлено не будет. Включить или выключить поддержку старых версий в современных системах Windows можно при помощи командлета Set–SmbServerConfiguration, а посмотреть состояние так:  Выключаем SMBv1 на сервере с Windows 2012 R2.  Результат при подключении с Windows 2003. Таким образом, при отключении старого, уязвимого протокола можно лишиться работоспособности сети со старыми клиентами. При этом помимо Windows XP и 2003 SMB v1 используется и в ряде программных и аппаратных решений (например NAS на GNU\Linux, использующий старую версию samba). Список взят с сайта Microsoft, где он регулярно пополняется. Перечень продуктов, использующих старую версию протокола, достаточно велик – перед отключением SMB v1 обязательно нужно подумать о последствиях. Если программ и устройств, использующих SMB v1 в сети нет, то, конечно, старый протокол лучше отключить. При этом если выключение на SMB сервере Windows 8/2012 производится при помощи командлета Powershell, то для Windows 7/2008 понадобится правка реестра. Это можно сделать тоже при помощи Powershell: Или любым другим удобным способом. При этом для применения изменений понадобится перезагрузка. Для отключения поддержки SMB v1 на клиенте достаточно остановить отвечающую за его работу службу и поправить зависимости службы lanmanworkstation. Это можно сделать следующими командами: Для удобства отключения протокола по всей сети удобно использовать групповые политики, в частности Group Policy Preferences. С помощью них можно удобно работать с реестром.  Создание элемента реестра через групповые политики. Чтобы отключить протокол на сервере, достаточно создать следующий параметр: путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters; новый параметр: REG_DWORD c именем SMB1;  Создание параметра реестра для отключения SMB v1 на сервере через групповые политики. Для отключения поддержки SMB v1 на клиентах понадобится изменить значение двух параметров. Сначала отключим службу протокола SMB v1: путь: HKLM:\SYSTEM\CurrentControlSet\services\mrxsmb10; параметр: REG_DWORD c именем Start;   Обновляем один из параметров. Потом поправим зависимость службы LanmanWorkstation, чтоб она не зависела от SMB v1: путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation; параметр: REG_MULTI_SZ с именем DependOnService;  И заменяем другой. После применения групповой политики необходимо перезагрузить компьютеры организации. После перезагрузки SMB v1 перестанет использоваться. Как ни странно, эта старая заповедь не всегда полезна – в редко обновляемой инфраструктуре могут завестись шифровальщики и трояны. Тем не менее, неаккуратное отключение и обновление служб могут парализовать работу организации не хуже вирусов. Расскажите, а вы уже отключили у себя SMB первой версии? Много было жертв?