В Windows Server 2012 R2 была представлена новая версия протокола SMB 3 (технически это SMB 3.02, т.к. версия SMB 3.0 появлялась еще в Windows Server 2012), а драйвер устаревшего протокола SMB 1.0 теперь можно отключать, и блокировать загрузку его компонентов. Вследствии отсутствия поддержки SMB 1.0 устаревшие (Windows XP, Server 2003 ) и совместимые клиенты (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, старые версии Linux) не смогут получить доступ к файлам, расположенным файловом сервере под управлением Windows 2012 R2 / 2016.
Версии протокола SMB в Windows
SMB (Server Message Block, иногда называется LAN-Manager) это сетевой протокол для удаленного доступа к файлам, принтерам и другим сервисам. Для подключения используется порт TCP 445. Различные версии протокола SMB появлялись в следующих версиях Windows:
- CIFS — Windows NT 4.0
- SMB 1.0 — Windows 2000
- SMB 2.0 — Windows Server 2008 и WIndows Vista SP1
- SMB 2.1 — Windows Server 2008 R2 и Windows 7
- SMB 3.0 — Windows Server 2012 и Windows 8 (появилась поддержка SMB шифрования)
- SMB 3.02 — Windows Server 2012 R2 и Windows 8.1
- SMB 3.1.1 – Windows Server 2016 и Windows 10
При сетевом взаимодействии по протоколу SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая одновременно и клиентом, и сервером.
Ниже представлена сводная таблица, по которой можно определить версию протокола SMB, которая выбирается при взаимодействии разных версий Windows:
Операционная система | Win 10, Server 2016 | Windows 8.1, Server 2012 R2 | Windows 8, Server 2012 | Windows 7, Server 2008 R2 | Windows Vista, Server 2008 | Windows XP, Server 2003 и ниже |
Windows 10 , Windows Server 2016 | SMB 3.1.1 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8.1 , Server 2012 R2 | SMB 3.02 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8 , Server 2012 | SMB 3.0 | SMB 3.0 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 7, Server 2008 R2 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows Vista, Server 2008 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 1.0 |
Windows XP, 2003 и ниже | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
К примеру, при подключении клиентского компьютера с Windows 7 к файловому серверу с Windows Server 2012 R2 будет использоваться протокол SMB 2.1.
Get-SmbConnection
Чтобы на стороне сервера вывести список используемых клиентами версий протокола SMB и количество клиентов, используемых ту или иную версию протокола SMB, выполните команду:
Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique
В нашем примере имеется 825 клиентов, подключенных к серверу с помощью SMB 2.1 (Win 7 / 2008 r2) и 12 клиентов через SMB 3.02 (Win 8.1/ 2012 r2.
Согласно таблице Windows XP, Windows Server 2003 для доступа к общим файлам и папкам на сервере могут использовать только SMB 1.0, который в новых версиях Windows Server (2012 R2 / 2016) может быть отключен. Таким образом, если в вашей инфраструктуре одновременно используются компьютеры с Windows XP (снятой с поддержки), Windows Server 2003 / R2 и сервера с Windows Server 2012 R2 / Server 2016, нужно понимать, что устаревшие клиенты не смогут получить доступ к файлам и папкам на файловом сервере с новой ОС. А в том случае, если в Windows Server 2016 / 2012 R2 с отключенным SMB 1.0 используется в качестве контроллера домена, то это означает, что клиенты на Windows XP / Server 2003 не смогут выполнить логон скрипты (NETLOGON) и некоторые групповые политики, хранящиеся в сетевых папках на контроллерах домена (например, при использовании централизованного хранилища admx-шаблонов). На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 появляется ошибка:
Об опасности использования SMB1
На данный момент протокол SMB 1.0 является устаревшим и в нем присутствует большое количество критических уязвимостей (вспомните историю с эпидемиями вирусов-шифровальщиков wannacrypt и petya, которые использовали уязвимость именно в протоколе SMBv1). Microsoft и другие IT компании настоятельно рекомендуют отказаться от его использования.
В том случае, если в вашей сети остались клиенты с Windows XP и Windows Server 2003 их нужно как можно скорее мигрировать на более новые версии ОС Microsoft или тщательно изолировать.
Протокол SMB 1.0 в Windows Server 2012 R2
Если открыть список компонентов Windows Server 2012 R2, среди них можно увидеть функцию с именем SMB 1.0/CIFS File Sharing Support, которая не установлена. Но сам драйвер SMB 1.0 при этом работает. При установке данной роли в системе появляется служба Обозревателя компьютеров (Computer Browser). Это клиент SMB 1.0, без которого с данного сервера не получится подключиться к другим компьютерам, которые поддерживают только этот протокол.
Совет. Если в сети не требуется поддерживать старую версию SMB 1.0 для компьютеров с Windows XP или Windows Server 2003, этот функционал с целью уменьшения нагрузки на систему и повышений безопасности можно отключить командой:
Remove-WindowsFeature FS-SMB1
Затем в настройках сервера нужно полностью отключить SMB 1.0 командой:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
В Windows Server 2012 по-умолчанию загружаются драйверы как SMB 1, так и SMB 2. Чтобы удостоверится в этом, откроем свойства системной службы Server (LanmanServer) и на вкладке Dependencies убедимся, что на сервере одновременно работают драйвера Server SMB 1.xxx Driver и SMB 2.xxx Driver.
Если открыть свойства службы LanmanServer на Windows 2012 R2 мы увидим, что драйвер, обеспечивающий поддержку SMB 1.0, исключен из зависимостей.
Но это не говорит о том, что драйвер SMB 1.0 не работает. Проверить, включен ли протокол SMB 1.0 на стороне сервера можно командой:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
Как вы видите, протокол SMB1 в WS 2012 R2 включен несмотря на отсутствие компонента SMB 1.0/CIFS File Sharing Support и зависимостей в службе LanmanServer.
В том случае, если устаревшие клиенты (XP / Server 2003 и т.д.) потеряли SMB доступ к файловым серверам / контроллерам домена на Windows Server 2012 R2 можно активировать поддержку SMB 1 следующим образом. Сначала включите протокол в настройках сервера:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Затем включите зависимости протокола SMB 1.0 в Windows Server 2012 R2 через реестр. Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer и измените значение параметра DependOnService с SamSS Srv2 на SamSS Srv.
После этого сервер нужно перезагрузить и убедится, что драйвер SMB 1.0 вновь работает.
Эту операцию нужно выполнить на всех файловых серверах и контроллерах домена, к которым подключаются устаревшие версии клиентов.
Протокол SMB 1.0 в Windows Server 2016
В Windows Server 2016 поддержка протокола SMB 1.0 на стороне клиента также включается в виде отдельного компонента, который можно найти в списке мастера установки Add/Remove Features. Данный компонент называется SMB 1.0 / CIFS File Sharing Support.
Отключить поддержку SMB v1 и полностью удалить компонент можно командами:
Remove-WindowsFeature FS-SMB1
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Начиная с Windows Server 2016 1709 (и Windows 10 Fall Creators ), компонент SMBv1 (как клиент, так и сервер) по-умолчанию отключен (отключен также гостевой доступ по протоколу SMBv2). Для доступа к старым системам, использующим устаревшую версию протокола его нужно устанавливать отдельно. Нужно установить компонент SMB 1.0/CIFS File Sharing Support и включить SMB 1.0 командами:
Add-WindowsFeature FS-SMB1
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Коллеги, у меня файл-сервер и КД на 2012R2. Машины с XP без проблем подключаются к обоим, как через Сетевое окружение в проводнике, так и сетевым диском. Единственно бывают проблемы если комп из рабочей группы пытается лезть на доменные сервера, но там скорее с ОС на компе косяки (предыдущий админ любил всякие сборки). Как это происходит тогда? Может на XP SMB патчем каким обновили?
В зависимостях службы Server (LanmanServer) есть упоминание SMB 1.x драйвера (как на втором скриншоте)?
Нет (не знаю как скрин приклеить), там только Server SMB 2.xxx Driver
с 2003 сервер без всяких шаманств шары на 2012R2 видны и доступны.