В связи с недавной эпидемией шифровальщика 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 первой версии? Много было жертв?

Поделиться с друзьями
-->

Комментарии (21)


  1. imbasoft
    29.06.2017 13:31

    Для legacy систем можно поднять машину «камикадзе», где будет работать SMB1, а в остальной сети лучше отключить.


    1. mickvav
      29.06.2017 13:56

      Вынести в отдельный vlan и чутко следить за трафиком из и в этот vlan.


  1. Beholder
    29.06.2017 13:37

    На Windows 7 службу mrxsmb10 видно в реестре и через sc, но не видно через графический интерфейс (оснастка Services). Почему?


    1. mayorovp
      29.06.2017 14:50

      Потому что это не служба, а драйвер.


  1. SLYzhuk
    29.06.2017 13:57

    Здесь тоже описано:
    https://support.microsoft.com/ru-ru/help/2696547/how-to-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and-windows


  1. karibskii_koks
    29.06.2017 14:31
    +1

    После отключения smbv1 принтеры Kyocera перестали складывать сканы в шару.


    1. ls1
      30.06.2017 08:24

      Попробуйте прошивку новую если есть


  1. kolu4iy
    29.06.2017 14:39

    Ну да, а бд visual foxpro (да-да, мы некрофилы, поверьте — мотивированно) по smb 2.0+ при 1000+ пользователях отчего-то портит файлы, несмотря на все шаманства по отключению oplock и прочим радостям. Так что — нет, не отключили.


    1. kxl
      30.06.2017 22:54

      VFP, 1000+ users… 21 век… я понимаю, что оно работает, но это даже не некрофилия…


  1. lobzanoff
    29.06.2017 16:13

    Хм, в вин10 такого командлета — Get–SmbConnection — не нашлось...


    1. avelor
      29.06.2017 16:31
      +2

      а вы не копипасте:) копипастить команды из интернета вообще чревато.

      get-smbconnection — сравните дефис.


      1. lobzanoff
        29.06.2017 16:36
        +2

        Рукалицо, что еще сказать :)


      1. skylevels
        01.07.2017 11:54

        Не смог по ссылке прочитать, банер хочет мой email, не закрыть. С таких сайтов сразу ухожу.


        1. avelor
          01.07.2017 12:24

          блокировщик успешно режет, у меня баннеров нет. но возьмите ссылку на оригинал http://thejh.net/misc/website-terminal-copy-paste


  1. Taciturn
    29.06.2017 16:42

    Неужели регулярно устанавливать обновления настолько сложно, что легче ломать совместимость?


  1. vesper-bot
    29.06.2017 16:59

    Один из серверов (DC в сети, где больше нет серверов) поймал на себя EternalRocks, который "патчит" уязвимость. Но вирь-патчер это сделал, не проверив версию ОС, в итоге сервер перестал принимать подключения — он был 2003R2 x64 SP1, и, получив в зависимости к lanmanserver отсутствующие в 2003й службы, радостно не сумел его запустить. Вот и все жертвы. :) (Что интересно, мы не нашли, кто в той сети ухитрился запустить у себя EternalRocks, но не запустил WannaCry или другой SMBv1.0 ломальщик. Правда, не очень-то и искали.)


  1. jankovsky
    29.06.2017 18:19

    Напишите еще о том «Как установить Windows 10».


  1. x893
    29.06.2017 18:42
    -1

    Мне вот не очень понятно — микрософт написали код для smb и в нем есть ошибка.
    Нашли её, начали использовать и т.д.
    Теперь берем линукс — там писали код другие люди — и тоже ошибка в smb.
    Что они код скопипастили? Или идой его смотрели в ассемблере?


    1. mayorovp
      29.06.2017 18:50

      Там совсем другая ошибка в SMB, в совсем другом месте. Общего между ними — только интервал между публикациями.


      1. x893
        29.06.2017 19:05
        -1

        Понятно.
        Интересно — после нахождения ошибки в линуксе
        не было пересмотра другого кода того кто сделал ошибку
        может он ещё где-то интересные ошибочки сделал
        (хотя может под этим именем целый отдел работает и закладочки оставляет на будущее).


  1. playnet
    29.06.2017 21:24
    -1

    В табличке «версия 5.0 и старше» читается как 5+, якобынужно ставить именно старые версии. Версии — чем больше число, тем версия старше. Так что лучше исправить на «и старее» или еще лучше на «и более старые»