Підтримка SMB 1.0 в Windows Server 2012 R2 / Windows Server 2016

У 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
  • Про небезпеку використання SMB1
  • Протокол SMB 1.0 в Windows Server 2012 R2
  • Протокол SMB 1.0 в Windows Server 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 2016Windows 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.1SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 8.1 ,
Server 2012 R2
SMB 3.02SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 8 ,
Server 2012
SMB 3.0SMB 3.0SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 7,
Server 2008 R2
SMB 2.1SMB 2.1SMB 2.1SMB 2.1SMB 2.0SMB 1.0
Windows Vista,
Server 2008
SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 1.0
Windows XP, 2003 і нижчеSMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0

Наприклад, при підключенні комп'ютера клієнта з Windows 7 до файловому серверу з Windows Server 2012 R2 буде використовуватися протокол SMB 2.1.

Порада. Визначити версію протоколу SMB, по якій клієнт взаємодіє з сервером можна за допомогою команди допомогою Powershell:

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 з'являється помилка:

The specified network name is no longer available

Про небезпеку використання 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

Примітка. Повна інструкція по відключенню SMB 1.0 в Windows 10 / Server 2016.

Починаючи з 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