У 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 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.
Порада. Визначити версію протоколу 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
Починаючи з 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