Безопасные SMB-соединения

Опубликовано: 8 Апреля, 2023


Введение


Блок сообщений сервера (SMB) — это протокол, который долгое время использовался компьютерами Windows для обмена файлами, принтерами и другими ресурсами между компьютерами в сети. Блоки сообщений сервера — это запросы, которые клиент SMB отправляет на сервер, и ответы, которые сервер отправляет обратно клиенту.


Существуют также SMB-клиенты для других операционных систем. Samba — это хорошо известная реализация SMB-сервера для UNIX и Linux, которая позволяет этим операционным системам выступать в качестве файловых серверов и серверов печати для клиентов Windows и Linux. Это бесплатное программное обеспечение, которое входит в состав большинства дистрибутивов Linux. Текущая версия 3.6.5, и вы можете загрузить исходный код с веб-сайта Samba.org.


Microsoft улучшала протокол SMB на протяжении многих лет. В 2006 году они выпустили новую версию SMB 2.0 в сочетании с Vista и SMB 2.1 в Windows 7. Версия 2 была серьезной версией со значительными изменениями, включая совершенно другой формат пакетов. В Windows 8 представлена еще одна новая версия — SMB 3.0. Если вы хотите углубиться в технические особенности протоколов, различия между ними и то, как они работают на уровне протокола, вы можете загрузить этот 394-страничный PDF-документ от Microsoft по спецификации протокола SMB версии 2 и 3.


Каждое воплощение включало улучшения производительности и безопасности, но по пути были обнаружены уязвимости SMB, которые подвергают системы потенциальным атакам. Например, в 2010 году Microsoft выпустила критический бюллетень по безопасности MS10-020 для устранения уязвимости в SMB, которая делает возможным удаленное выполнение кода в различных версиях Windows, от Windows 2000 SP4 до Windows 7 и Server 2008 R2 (включая установку Server Core). ).


Подписание SMB


Одним из механизмов безопасности, который использовался в Windows SMB со времен Windows 98/NT, является подписывание SMB. Подписание SMB поддерживается во всех текущих версиях Windows; лучший способ настроить его — через групповую политику, хотя вы также можете сделать это, отредактировав реестр. По умолчанию на контроллерах домена требуется подписывание SMB. Он включен по умолчанию, но не требуется на клиентах SMB 1 и отключен на серверах SMB 1.


Параметры настройки были упрощены в SMB 2. Параметры «включено» и «отключено» убраны, и вы только указываете, требуется или не требуется подпись SMB. Опять же, настройка по умолчанию для контроллеров домена «требуется». Для других серверов и клиентов SMB 2 значение по умолчанию «не требуется».


Давайте взглянем на параметры групповой политики для настройки подписи SMB в Windows 8 (аналогично предыдущим версиям ОС). Сначала откройте редактор локальной групповой политики. Вы не найдете его, набрав редактор групповой политики или gpedit.msc на стартовом экране Metro; вы просто получите сообщение «Нет приложений, соответствующих вашему запросу», как показано на рис. 1.


Изображение 23146
фигура 1


Чтобы открыть консоль редактора групповой политики в Windows 8, сначала откройте окно «Выполнить» (которое можно найти, введя его имя на начальном экране), а затем введите там gpedit.msc. Теперь перейдите в дереве левой панели к Computer Configuration | Параметры Windows | Настройки безопасности | Местные политики | Параметры безопасности.


На правой панели прокрутите вниз, чтобы найти раздел политик, начинающийся с «Сетевой клиент Microsoft». Здесь вы найдете следующие политики:



  • Подписывайте сообщения цифровой подписью (всегда)
  • Цифровая подпись сообщений (если сервер согласен)
  • Отправить незашифрованный пароль на сторонние SMB-серверы

Вы также найдете похожие политики, начинающиеся с «сетевого сервера Microsoft», как показано на рис. 2.


Изображение 23147
фигура 2


Операционные системы Windows включают как серверный компонент SMB, так и клиентский компонент SMB, и они настраиваются отдельно. Таким образом, компьютер может быть настроен на требование подписи пакетов при работе в качестве сервера SMB, но не при работе в качестве клиента SMB, или наоборот.


Вы увидите, что политика клиента для цифровой подписи сообщений, если сервер согласен, включена, а две другие отключены. Если вы включите политику цифровой подписи сообщений (всегда), клиент потребует подписи пакетов SMB и откажется взаимодействовать с сервером, который не поддерживает подпись.


Как насчет политики отправки незашифрованных паролей на сторонние SMB-серверы? Это сделано для того, чтобы, если в вашей сети есть SMB-серверы, отличные от Microsoft, и они не поддерживают шифрование паролей в процессе аутентификации, вы можете использовать эту политику, чтобы позволить вашему SMB-клиенту на компьютере с Windows взаимодействовать с ними. Вы не увидите соответствующей политики в разделе сетевых серверов Windows. Конечно, отправка паролей в незашифрованном виде представляет большую угрозу безопасности, поэтому лучше оставить эту политику отключенной, если только она вам не требуется.


Если вы предпочитаете вносить изменения через реестр, в редакторе реестра перейдите к следующим разделам:


Для SMB-клиента:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanWorkStation
Параметры


Для SMB-сервера:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServer
Параметры


Создайте значение DWORD с именем RequireSecuritySignature, как показано на рисунке 3. и установите его значение данных равным 1.


Изображение 23148
Рисунок 3


Шифрование SMB в Windows 8 и Server 2012


Microsoft внесла ряд улучшений безопасности в SMB 3.0, которые будут представлены в клиенте Windows 8 и Windows Server 2012. Для подписывания SMB используется новый алгоритм. SMB 2.x использует HMAC-SHA256. SMB 3.0 использует AES-CMAC. CMAC основан на симметричном блочном шифре (AES), тогда как HMAC основан на хеш-функции (SHA). AES (Advanced Encryption Standard) — это спецификация, принятая правительством США в 2002 году и одобренная Агентством национальной безопасности (АНБ) для шифрования совершенно секретной информации.


SMB 3.0 в Windows 8 и Server 2012 позволяет шифровать данные SMB во время их передачи с гораздо меньшими затратами, чем развертывание других решений для шифрования при передаче, таких как IPsec. Шифрование при передаче защищает сообщения от перехвата, если они перехватываются при прохождении через сеть.


Вы можете включить шифрование SMB для определенных общих ресурсов в Server 2012 через файловые службы и службы хранения в диспетчере серверов. Вы можете сделать это при создании новой общей папки с помощью мастера создания новой общей папки, как показано на рисунке 4.


Изображение 23149
Рисунок 4


Вы также можете включить шифрование для существующей папки. Вот как:



  1. Откройте Диспетчер серверов и на левой панели щелкните Файловые службы и службы хранения.
  2. Нажмите «Общие ресурсы» на левой панели.
  3. На средней панели щелкните правой кнопкой мыши общий ресурс, для которого вы хотите включить шифрование.
  4. Нажмите «Свойства» в контекстном меню, как показано на рис. 5.

Изображение 23150
Рисунок 5



  1. В диалоговом окне «Свойства общего ресурса» выберите «Настройки» и установите флажок «Шифровать доступ к данным».
  2. Нажмите ОК.

Другой способ включить шифрование SMB для общего ресурса — использовать PowerShell. Введите следующее:


Set-SmbShare -Name <имя общего ресурса> -EncryptData $true


Вы также можете использовать PowerShell, чтобы включить шифрование SMB для всех общих ресурсов на сервере:


Set-SmbServerConfiguration-EncryptData $true


Если вы настроите шифрование для всего сервера, как описано выше, флажок «Шифровать доступ к данным» для отдельных общих ресурсов будет отображаться как установленный, а также неактивным, чтобы их нельзя было изменить по отдельности.


После того как вы включили шифрование SMB для общего ресурса, клиентские операционные системы, не поддерживающие SMB 3.0, не смогут получить доступ к этому общему ресурсу, если вы явно не разрешите незашифрованный доступ для этих клиентов. Для этого вам нужно использовать команду PowerShell ниже:


Set-SmbServerConfiguration-RejectUnencryptedAccess $false


Диалектные переговоры


Существует несколько различных «диалектов», на которых говорят протоколы SMB, в зависимости от версии SMB. Когда устанавливается SMB-соединение, клиент и сервер договариваются, чтобы определить диалект самого высокого уровня, который могут поддерживать обе машины. Это делается путем отправки клиентом на сервер сообщения negprot со списком поддерживаемых им диалектов. Сервер отвечает, чтобы сообщить клиенту, какой из диалектов он будет использовать.


Это важно при подключении SMB к другому компьютеру, использующему другой формат пакета протокола. Улучшение безопасности в Windows 8/Server 2012 обнаруживает попытки манипулировать этим согласованием, чтобы заставить системы использовать диалект более низкого уровня. Если такая попытка обнаружена, Windows отключает соединение SMB и регистрирует событие.


Отключить SMB 1.0


Для большей безопасности вы можете отключить SMB 1.0. Делайте это только в том случае, если в вашей сети нет компьютеров с Windows XP (или более ранней версии), которым требуется подключение к серверу SMB, и у вас нет сторонних устройств, которым необходимо обмениваться данными через SMB 1.0. Используйте PowerShell для отключения SMB 1.0 следующим образом:


Set-SmbServerConfiguration-EnableSMB1Protocol $false


Резюме


Протокол Server Message Block был впервые разработан для оригинального IBM PC, затем Microsoft приняла его для Windows и продолжала улучшать на протяжении многих лет. SMB 3.0, который войдет в состав Windows 8 и Windows Server 2012, имеет несколько улучшений безопасности, которые помогут вам сделать SMB-соединения в вашей сети более безопасными и защитить от атак типа «злоумышленник посередине» и прослушивания, связанных с SMB-коммуникациями. В этой статье мы обсудили основы безопасности SMB и показали, как включить и настроить некоторые из этих новых функций безопасности SMB.