Открыть сервис

SMB

SMB (от англ. Server Message Block — протокол серверных сообщений) — это сетевой протокол прикладного уровня, предназначенный для предоставления общего доступа к файлам, принтерам, последовательным портам и другим ресурсам в компьютерной сети. Протокол работает по модели «клиент-сервер» и позволяет приложениям читать, записывать и управлять файлами на удалённых серверах, а также взаимодействовать с сетевыми службами. SMB является основным протоколом для организации файловых служб в операционных системах Microsoft Windows, но также поддерживается в Linux, macOS и других Unix-подобных системах через реализацию Samba.

История

Разработка в IBM и Microsoft

Первая версия протокола SMB была создана в 1983 году сотрудником IBM Барри Фейгенбаумом (Barry Feigenbaum) для операционной системы DOS. В 1985 году Microsoft, Intel и IBM совместно опубликовали спецификацию SMB для использования в сетях NetBIOS. В 1990-х годах Microsoft значительно расширила протокол, включив в него поддержку Windows для рабочих групп и Windows NT. В 1996 году компания переименовала протокол в CIFS (Common Internet File System) в рамках попытки стандартизировать его для использования через Интернет, однако название не прижилось, и в дальнейшем термин «SMB» вернулся.

Версии протокола

Протокол SMB прошёл несколько ключевых версий:

  • SMB 1.0 (CIFS) — базовая версия, использовавшаяся в Windows 95/98/Me и Windows NT 4.0. Отличалась низкой безопасностью и отсутствием шифрования.
  • SMB 2.0 — выпущена в 2006 году вместе с Windows Vista. Включала значительные улучшения производительности, уменьшение количества команд и поддержку символических ссылок.
  • SMB 2.1 — появилась в Windows 7, добавила механизм аренды (leasing) для уменьшения сетевого трафика.
  • SMB 3.0 — представлена в Windows 8 и Windows Server 2012. Включала шифрование на уровне протокола, поддержку многоканальной передачи (SMB Multichannel), отказоустойчивость (SMB Transparent Failover) и улучшенную поддержку виртуализации.
  • SMB 3.1.1 — версия, выпущенная в Windows 10 и Windows Server 2016. Добавила предварительную аутентификацию, усиленное шифрование AES-128-GCM и защиту от атак типа «человек посередине».

Отказ от SMB 1.0

Из-за критических уязвимостей безопасности, в частности, уязвимости EternalBlue, использованной в атаке программы-вымогателя WannaCry в 2017 году, Microsoft рекомендовала отключить SMB 1.0 во всех поддерживаемых версиях Windows. Начиная с Windows 10 версии 1709, поддержка SMB 1.0 не устанавливается по умолчанию, а в Windows 11 она полностью удалена.

Архитектура и принцип работы

Модель взаимодействия

SMB работает по принципу «клиент-сервер». Клиент (например, Windows Explorer или приложение) отправляет запросы на сервер (файловый сервер или сетевое хранилище), который обрабатывает их и возвращает ответы. Протокол использует транспортный уровень TCP/IP (порт 445 для SMB напрямую, или порт 139 для NetBIOS поверх TCP/IP). В современных реализациях SMB 2.x и 3.x используется исключительно порт 445.

Команды и операции

Протокол определяет набор команд (операций), таких как:

  • SMB_COM_CREATE — создание или открытие файла/каталога;
  • SMB_COM_READ — чтение данных из файла;
  • SMB_COM_WRITE — запись данных в файл;
  • SMB_COM_CLOSE — закрытие файла;
  • SMB_COM_TRANSACTION — выполнение транзакций с именованными каналами.

В SMB 2.x количество команд было сокращено до 19, что повысило производительность и упростило реализацию.

Механизмы безопасности

  • Аутентификация: SMB поддерживает несколько протоколов аутентификации, включая NTLM (NT LAN Manager) и Kerberos. В доменных средах Active Directory рекомендуется использовать Kerberos.
  • Шифрование: начиная с SMB 3.0, доступно шифрование данных на уровне протокола (AES-128-CCM или AES-128-GCM). Это защищает трафик от перехвата.
  • Подпись (SMB Signing): позволяет проверять целостность сообщений с помощью цифровых подписей, предотвращая атаки типа «человек посередине».
  • Предварительная аутентификация (SMB 3.1.1): защищает от атак на основе повторного воспроизведения (replay attacks).

Классификация и реализации

Реализации для Windows

В операционных системах Microsoft Windows SMB является встроенным компонентом. Файловый сервер Windows Server использует SMB для предоставления общих папок и принтеров. В Windows 10/11 протокол используется для работы с сетевыми дисками, домашними группами (до Windows 10 версии 1803) и функциями вроде «Удалённый рабочий стол» (через SMB-транспорт).

Samba

Samba — это свободная реализация протокола SMB для Unix-подобных систем (Linux, macOS, BSD). Она позволяет таким системам выступать в роли клиентов и серверов SMB, взаимодействуя с Windows-сетями. Samba поддерживает версии SMB 1.0, 2.0, 2.1, 3.0 и 3.1.1 (в зависимости от версии пакета). Она широко используется в корпоративных средах для интеграции Linux-серверов в домены Active Directory.

Другие реализации

  • Netatalk — реализация протокола Apple Filing Protocol (AFP) для Unix, но также может использовать SMB для совместимости.
  • Tuxera SMB — коммерческая реализация для встраиваемых систем.
  • SMB2 для ядра Linux — модуль ядра Linux, позволяющий монтировать SMB-ресурсы напрямую.

Применение

Файловые службы

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

Печать и другие ресурсы

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

Виртуализация и облачные технологии

В гипервизорах, таких как Microsoft Hyper-V и VMware vSphere, SMB 3.0 используется для хранения виртуальных машин и дисков (VHDX) на удалённых файловых серверах. Это обеспечивает гибкость и отказоустойчивость без необходимости использования дорогих SAN-решений. SMB также применяется в облачных хранилищах, например, Azure Files, который предоставляет файловые ресурсы через протокол SMB.

Домашние сети

В домашних условиях SMB используется для обмена файлами между компьютерами с Windows, а также для доступа к медиатекам на сетевых хранилищах (NAS). Многие домашние маршрутизаторы и NAS-устройства (например, от Synology, QNAP, WD) поддерживают SMB для предоставления доступа к файлам по сети.

Критика и проблемы безопасности

Уязвимости SMB 1.0

Наибольшая критика связана с уязвимостями SMB 1.0. Этот протокол не поддерживает шифрование, подпись сообщений является необязательной, а аутентификация NTLMv1 уязвима для атак перебора. В 2017 году уязвимость EternalBlue (CVE-2017-0144) в SMB 1.0 позволила распространять программу-вымогатель WannaCry, затронувшую сотни тысяч компьютеров по всему миру. В результате Microsoft и другие организации настоятельно рекомендовали отключить SMB 1.0.

Атаки на SMB

  • Pass-the-Hash (PtH): злоумышленник перехватывает хэш пароля, используемый для аутентификации NTLM, и использует его для доступа к ресурсам.
  • Relay-атаки: атакующий перехватывает SMB-трафик и перенаправляет его на другой сервер, получая доступ к ресурсам.
  • DoS-атаки: отправка большого количества запросов может привести к отказу в обслуживании файлового сервера.

Рекомендации по безопасности

  • Отключить SMB 1.0 на всех системах, где это возможно.
  • Использовать шифрование SMB (SMB Encryption) и подпись сообщений.
  • Применять аутентификацию Kerberos в доменных средах.
  • Ограничивать доступ к SMB-ресурсам с помощью брандмауэров и списков контроля доступа (ACL).
  • Регулярно обновлять операционные системы и реализацию Samba.

Интересные факты

  • Протокол SMB изначально разрабатывался для работы поверх NetBIOS, но в современных версиях используется исключительно TCP/IP.
  • В Windows 10 и 11 встроена поддержка SMB over QUIC, позволяющая подключаться к файловым серверам через Интернет с использованием протокола QUIC (на базе UDP), что повышает производительность и безопасность.
  • Samba, реализующая SMB, является одним из старейших открытых проектов, начавшимся в 1992 году.
  • В 2020 году Microsoft выпустила обновление, которое автоматически отключает SMB 1.0 в Windows 10, если он не используется в течение 15 дней.

Источники

  • Microsoft Docs: «SMB Protocol Overview»
  • RFC 1001, RFC 1002 — NetBIOS over TCP/IP
  • CIFS Technical Reference (Microsoft, 1996)
  • Samba Project Documentation
  • «EternalBlue: The Exploit That Shook the World» — анализ уязвимости CVE-2017-0144
  • «SMB 3.0: A Protocol for Modern Storage» — техническая статья Microsoft

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →