Шифрування трафіку в SMB 3.0

У версії протоколу Server Message Block (SMB) 3.0, представленому в Windows Server 2012 / Windows 8, з'явилася можливість шифрувати дані, що передаються по мережі між файловим сервером SMB і клієнтом. Шифрування SMB трафіку дозволяє захистити від перехоплення і модифікації дані, що передаються по недовірених або відкритої мережі. Шифрування даних виконується прозоро з точки зору клієнта і не вимагає істотних організаційних і ресурсних витрат, як при впровадженні VPN, IPSec і PKI інфраструктури. В останній версії протоколу SMB 3.1.1 (Представлений в Windows 10 і Windows Server 2016) використовується тип шифрування AES 128 GCM, а продуктивність алгоритму шифрування істотно збільшена. Крім того здійснюється автоматичне підписування і перевірка цілісності даних.

Розберемося в особливостях впровадження шифрування SMB в Windows Server 2012. У першу чергу потрібно зрозуміти, що в тому випадку, якщо клієнт і сервер підтримують різні версії протоколу SMB, то при встановленні підключення між сервером і клієнтом, для взаємодії вибирається найвища версія SMB, підтримувана одночасно клієнтом і сервером. Це означає, що всі клієнти з ОС нижче Windows 8 / Server 2012, не зможуть взаємодіяти з мережевим каталогом, для якого включено шифрування SMB.

На файловому сервері можна отримати версію протоколу SMB використовується тим чи іншим клієнтом (версія використовуваного протоколу обраного в рамках з'єднання вказані в стовпчику Dialect):

Get-SmbConnection

За замовчуванням, на файловому сервера Windows Server 2012 шифрування для передачі SMB трафіку відключено. Включити шифрування можна як індивідуально для кожної SMB кулі, так і для всього сервера цілком.

Якщо потрібно включити шифрування на конкретного каталогу, на сервері відкрийте консоль Server Manager і перейдіть в розділ File and Storage Services -> Shares. Виберіть потрібну загальну папку і відкрийте її властивості. Потім перейдіть на вкладку Settings, де включите опцію Encrypt Data Access. збережіть зміни.

Крім того, включити SMB шифрування можна з консолі PowerShell. Включаємо шифрування для однієї папки:

Set-SmbShare -Name Install -EncryptData $ true

Або для всіх SMB підключень до сервера (будь то загальні папки або адміністративні ресурси):

Set-SmbServerConfiguration -EncryptData $ true

Після включення SMB шифрування для загальної мережевої папки, все застарілі клієнти (до Windows 8), не зможуть з'єднуватися з Вашим каталогу, тому що не підтримують версію протоколу SMB 3.0. Щоб дозволити доступ таким Windows клієнтам (як правило, такий доступ організовується тимчасово, інакше втрачається сенс від включення шифрування), можна дозволити підключатися до сервера без шифрування:

Set-SmbServerConfiguration -RejectUnencryptedAccess $ false

Порада. Після включення даного режиму, що підключається клієнт в процесі узгодження підтримуваної версії протоколу зможе переключиться на зовсім застарілу версію SMB 1.0, що небезпечно (в Windows Server 2012 R2 протокол SMB 1.0 за замовчуванням вже відключений). У цьому випадку, щоб хоча б частково убезпечити сервер, бажано відключити підтримку SMB 1.0:
Set-SmbServerConfiguration -EnableSMB1Protocol $ false