SMB (Server Message Block): определения, задачи и применение

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

Что такое SMB (Server Message Block)?

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

Разработанный IT-группой 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)
  • Улучшенная масштабируемость благодаря большему максимальному количеству клиентов, совместно используемых объектов и одновременно открытых файлов

Из соображений совместимости была сохранена первая версия протокола. 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 (удаленный прямой доступ к памяти).
  • Многоканальная функция позволяет устанавливать несколько соединений для одного сеанса SMB
  • Прозрачная защита от сбоев
  • Сквозное шифрование
Примечание

С SMB 3.0.2 третья версия протокола была реализована без существенных изменений в Windows 8.1.

SMB 3.1.1

SMB 3.1.1 (опубликован в 2015 году с Windows 10) расширил серию протоколов проверкой целостности перед аутентификацией на основе хэш-значений SHA-256. Кроме того, в системе используется шифрование AES-128 с режимом Galois/Counter Mode (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 решила больше не поддерживать активно первую версию и автоматически деактивировать ее, когда она не используется.

Совет

Узнайте, как самостоятельно деактивировать Server Message Block или определенные версии протокола SMB в Windows 10 (и снова активировать его при необходимости) в нашей обширной статье об активации и деактивации SMB.

Где используется или применяется Server Message Block?

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

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

  • Samba: Программный проект Samba, вероятно, является самым известным примером реализации SMB за пределами Windows. Еще в 1991 году программист Эндрю Триджелл начал разработку свободного программного обеспечения, которое обеспечивает связь в системах Unix/Linux через Server Message Block.
  • Netsmb: Netsmb относится к реализациям клиента и сервера SMB непосредственно в ядре операционных систем BSD. Впервые они были выпущены для OS 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.
  • Ноу-хау

    Оцените статью
    cdelat.ru
    Добавить комментарий