Протокол smb windows server

SMB протокол, обзор версий, описание технологии

Подключение всех технологических устройств к общей локальной сети (автономная альтернатива Интернету) обычно является чисто технической задачей благодаря компьютерным сетям . Участники сети могут легко обмениваться файлами через LAN или WLAN, управлять серверами или использовать типичные сетевые устройства, такие как принтеры или маршрутизаторы.

Однако для того, чтобы взаимодействие между отдельными компонентами работало, необходимы четкие соглашения, представленные в форме протоколов. Например, одним из самых важных и старых сетевых протоколов является протокол SMB. Мы подробно разберём его это в этой статье.

Что такое SMB (блок сообщений сервера)?

SMB (Server Message Block) — это протокол клиент/сервер, который управляет доступом к файлам и целым каталогам , а также к другим сетевым ресурсам, таким как принтеры, маршрутизаторы или интерфейсы, открытые для сети. Обмен информацией между различными процессами системы (также известный как межпроцессное взаимодействие) может осуществляться на основе протокола SMB.

Разработанный ИТ-группой IBM в 1983 году, за последние десятилетия были выпущены различные версии и реализации протокола. SMB впервые стал доступен для широкой публики как часть сетевой операционной системы OS/2 LAN Manager и ее преемника LAN Server . Основным применением протокола с тех пор была операционная система Windows, поскольку ее сетевые службы обратно совместимы с SMB. Это позволяет устройствам с более новыми выпусками легко взаимодействовать с устройствами, на которых установлена ​​более старая операционная система Microsoft. Более того, проект бесплатного программного обеспечения Samba предлагает решение, которое позволяет использовать Server Message Block в дистрибутивах Linux и Unix, что позволяет кроссплатформенное общение через SMB.

Для реализации протокола SMB в Windows NT 4.0 Microsoft использовала название Common Internet File System (CIFS), которое впоследствии использовалось как синоним семейства протоколов SMB. Сегодня CIFS является особенно распространенным термином для первой версии SMB 1.0.

Как работает SMB?

Протокол Server Message Block позволяет клиенту связываться с другими участниками той же сети, позволяя ему получать доступ к файлам или службам, открытым для него в сети. Чтобы это работало, другая система также должна реализовать сетевой протокол и получать и обрабатывать соответствующий клиентский запрос с помощью приложения сервера SMB . Но обе стороны должны сначала установить соединение, поэтому сначала они обмениваются соответствующими сообщениями. В IP-сетях SMB использует протокол управления передачей (TCP), который обеспечивает трехстороннее рукопожатие между клиентом и сервером перед окончательным установлением соединения. Последующий перенос данных регулируется положениями протокола TCP.

TCP — порт 445 предназначен для установления соединения и передачи данных через TCP / SMB. Разрешение адресов обычно происходит через систему доменных имен (DNS) или через Link Local Multicast Name Resolution (LLMNR) в небольших сетях.

Протокол SMB: обзор версий

Как уже упоминалось, с тех пор, как SMB был впервые выпущен в 1983 году, в сетевой стандарт были внесены многочисленные изменения, отраженные в различных версиях протокола . Они начинаются с SMB 1.0 и заканчиваются текущей версией SMB 3.1.1, которую Microsoft представила вместе с Windows 10. В следующих разделах резюмируются основные этапы разработки протокола Server Message Block.

SMB 1.0 (CIFS)

Первая версия протокола сетевой связи часто приравнивается к варианту Common Internet File System (CIFS), описанному ранее. Однако последнее на самом деле относится только к аспекту первой редакции протокола — особенно для реализации протокола в устройствах с Windows NT 4.0. В этом первом варианте связь по-прежнему осуществлялась через интерфейс NetBIOS, а также через UDP-порты 137 (разрешение имен) и 138 (передача пакетов), а также через TCP-порт 139 (установка и транспортировка соединения). Зависимость от NetBIOS прекратилась с выходом Windows 2000 ; протокол, официально обозначенный как SMB 1.0, теперь позволяет прямое соединение через TCP (порт 445).

SMB 2.0

Первая большая редакция Server Message Block была предоставлена ​​Microsoft в ноябре 2006 года вместе с операционной системой Windows Vista . Несмотря на то, что протокол — теперь известный как SMB 2.0 — продолжал оставаться проприетарным , компания-производитель программного обеспечения также впервые выпустила спецификацию, позволяющую другим системам взаимодействовать с операционными системами Windows. Наиболее важные изменения во второй версии протокола включали следующее:

  • Уменьшение количества команд и подкоманд с более 100 до 19
  • Оптимизированная производительность благодаря новой функции очереди для запросов SMB
  • Поддержка символических ссылок (подключения к файлам или каталогам)
  • Промежуточное хранение / кеширование свойств файла
  • Улучшено подписывание сообщений (алгоритм HMAC SHA-256)
  • Лучшая масштабируемость благодаря большему максимальному количеству клиентов, общих объектов и одновременно открытых файлов
Читайте также:  Windows 10 удаление файлов минуя корзину

По соображениям совместимости первая версия протокола была сохранена. Microsoft также придерживалась этой меры в последующих версиях.

SMB 2.1

Версия 2.1 протокола SMB тесно связана с Windows 7. Пересмотренная версия второй редакции протокола была выпущена вместе с операционной системой в 2007 году и, помимо ряда незначительных оптимизаций производительности, она предоставила новые механизмы блокировки для регулирования доступа к файлам. более эффективно (чтение, запись, удаление и т. д.).

SMB 3.0

Windows 8 была выпущена в 2012 году, а вместе с новой версией операционной системы Microsoft появилась новая версия Server Message Block. Первоначально это называлось SMB 2.2, но позже было изменено на обозначение SMB 3.0, которое применяется и сегодня. Эта версия протокола также направлена ​​на повышение производительности и безопасности соединений SMB, особенно в виртуализированных центрах обработки данных. Следующие новые функции были ключевыми для этого улучшения:

  • Возможность удаленного доступа к хранилищу благодаря SMB через RDMA (Remote Direct Memory Access)
  • Многоканальная функция позволяет настраивать несколько подключений на сеанс SMB
  • Прозрачная защита от сбоев
  • Сквозное шифрование

SMB 3.1.1

SMB 3.1.1 (опубликованный в 2015 году с Windows 10) расширил серию протоколов проверкой целостности перед аутентификацией на основе хэш-значений SHA-256. Кроме того, в системе используется шифрование AES-128 в режиме счетчика Галуа (GCM). Для всех устройств связи с SMB 2.0 или выше SMB 3.1.1 делает безопасное соединение обязательным.

Таблица версий SMB

Версия SMB Поддерживается с Новые особенности
CIFS Windows NT 4.0 Связь через интерфейс NetBIOS
SMB 1.0 Windows 2000 Прямое подключение через TCP
SMB 2.0 Windows Vista, Windows Server 2008, Samba 3.5 Различные улучшения производительности, улучшенная подпись сообщений, функция кеширования свойств файла
SMB 2.1 Windows 7, Windows Server 2008 R2 Механизмы блокировки
SMB 3.0 Windows 8, Windows Server 2012, Samba 4.0 Многоканальные соединения, сквозное шифрование, удаленный доступ к хранилищу
SMB 3.0.2 Windows 8.1, Windows Server 2012 R2
SMB 3.1.1 Windows 10, Windows Server 2016, Samba 4.3 Проверка целостности, шифрование AES-128 с режимом Галуа / счетчика (GCM)

Какие аспекты безопасности важно учитывать при использовании SMB?

В течение многих лет Microsoft считала важным в своих системах, чтобы старые версии Server Message Block также поддерживались более новыми выпусками для обеспечения бесперебойной связи между старыми и новыми устройствами. Но обеспечение совместимости с тех пор связано с повышенным риском безопасности. Это связано с тем, что SMB 1.0 имеет ряд уязвимостей по сравнению с последующими протоколами, которые, например, делают компьютер уязвимым для DoS-атак.

Особенно в сетях высок риск атаки на основе протокола SMB. Все версии SMB обычно активируются из соображений совместимости — например, поскольку это требуется для подключенных принтеров или других сетевых устройств. Даже если старая версия протокола практически больше не используется, она остается легкой мишенью для злоумышленников, которые могут переключить связь на SMB 1.0 и атаковать целевую систему без серьезных препятствий. Вот почему с Windows 10 Microsoft решила больше не поддерживать первую версию и автоматически деактивировать ее, когда она не используется.

Где используется или реализуется SMB

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

Помимо реализаций Server Message Block в различных выпусках Windows, протокол был интегрирован во множество других программных проектов, чтобы обеспечить связь за пределами семейства Microsoft. Наиболее известные реализации SMB включают следующее:

  • Samba : Программный проект Samba, вероятно, является самым известным примером реализации SMB за пределами Windows. Еще в 1991 году программист Эндрю Триджелл начал разработку бесплатного программного обеспечения, которое обеспечивает связь в системах Unix / Linux через Server Message Block.
  • Netsmb: Netsmb относится к реализациям клиента и сервера SMB непосредственно в ядре операционных систем BSD. Впервые они были выпущены для ОС FreeBSD 4.4, но теперь доступны для ряда систем BSD, включая NetBSD и macOS.
  • YNQ : YNQ (ранее NQ) — это библиотека SMB, которая реализует технологию Server Message Block во встроенных системах без Windows и, таким образом, обеспечивает взаимодействие с устройствами на базе Windows. YNQ разрабатывается израильской софтверной компанией Visuality Systems Ltd. с 1998 года.
  • FreeNAS : любой, кто хочет запустить свой собственный NAS — сервер, поддерживающий протокол SMB, найдет подходящее решение в FreeNAS с открытым исходным кодом . Программное обеспечение NAS основано на FreeBSD и файловой системе OpenZFS.
  • ConnectedNAS : ConnectedNAS, программное обеспечение, разработанное Connected Way, служит SMB-сервером и клиентом для устройств Android . Пользователи платного приложения могут легко обмениваться данными между мобильным устройством и другими устройствами SMB — как в частном порядке, так и внутри компании. По соображениям безопасности ConnectedNAS поддерживает SMB только начиная с версии 2.

Поддержка 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

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 и количество клиентов, используемых ту или иную версию протокола 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, без которого с данного сервера не получится подключиться к другим компьютерам, которые поддерживают только этот протокол.

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

Читайте также:  Ftp сервер для linux установка
Оцените статью