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

Server Message Block

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

История

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

Протокол SMB был первоначально разработан в 1983 году Барри Файнбергом из IBM для операционной системы IBM PC Network. Первоначально он предназначался для работы в среде DOS и обеспечивал базовые функции общего доступа к файлам и принтерам. В середине 1980-х годов Microsoft совместно с Intel и IBM значительно расширила протокол, добавив поддержку новых функций, таких как именованные каналы и почтовые слоты. Эта версия стала известна как «Core Protocol» и была реализована в Microsoft LAN Manager.

Версия SMB 1.0 (CIFS)

В 1996 году Microsoft представила расширенную версию протокола, названную Common Internet File System (CIFS), которая фактически стала SMB версии 1.0. CIFS добавила поддержку работы через TCP/IP, разрешение имён через NetBIOS over TCP/IP (NBT) и улучшенную обработку ошибок. Эта версия стала стандартом де-факто для файлового обмена в локальных сетях Windows 9x и Windows NT. Однако она имела серьёзные недостатки в безопасности и производительности, особенно при работе через глобальные сети (WAN).

SMB 2.0 и 2.1

В 2006 году с выходом Windows Vista и Windows Server 2008 была представлена версия SMB 2.0. Она была полностью переработана: количество команд было сокращено с более чем 100 в SMB 1.0 до 19, что значительно упростило протокол. Были введены такие новшества, как:

  • Команды с составными операциями: объединение нескольких запросов в один пакет для снижения сетевого трафика.
  • Постоянные дескрипторы файлов: возможность восстановления соединения после временного разрыва.
  • Поддержка символических ссылок.
  • Улучшенное кэширование и блокировка файлов.

Версия 2.1, выпущенная с Windows 7 и Windows Server 2008 R2, добавила поддержку механизма «больших MTU» (Jumbo Frames) для улучшения производительности при передаче больших объёмов данных.

SMB 3.0 (SMB Direct и SMB Multichannel)

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

  • SMB Direct (RDMA): использование технологии Remote Direct Memory Access для передачи данных с минимальной загрузкой ЦП и высокой пропускной способностью.
  • SMB Multichannel: возможность использования нескольких сетевых интерфейсов одновременно для увеличения пропускной способности и обеспечения отказоустойчивости.
  • SMB Transparent Failover: обеспечение непрерывной работы сервера при отказе узла в кластере.
  • Шифрование SMB: встроенная возможность шифрования данных на уровне протокола, не требующая использования IPsec.
  • VSS для SMB: поддержка теневых копий томов (Volume Shadow Copy Service) для общего доступа к файлам.

SMB 3.1.1

Версия SMB 3.1.1 была выпущена с Windows 10 и Windows Server 2016. Она включает улучшения безопасности, в том числе:

  • Обязательное шифрование: возможность настройки обязательного шифрования для всех SMB-соединений.
  • Предварительная аутентификация: улучшенная защита от атак типа «человек посередине» (MITM) и атак с понижением версии протокола.
  • Поддержка алгоритма хеширования SHA-512 для целостности пакетов.

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

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

SMB работает по модели «клиент-сервер». Клиентское устройство (например, компьютер пользователя) отправляет запросы на сервер (файловый сервер, сетевой принтер). Сервер обрабатывает запрос и возвращает ответ. Протокол использует механизм «запрос-ответ» (request-response), где каждый запрос клиента ожидает подтверждения от сервера.

Стек протоколов

SMB может работать поверх нескольких транспортных протоколов:

  • NetBIOS over TCP/IP (NBT): используется в старых версиях (SMB 1.0/CIFS) для разрешения имён и установки соединения через порты 137 (UDP), 138 (UDP) и 139 (TCP).
  • Прямое размещение через TCP/IP: начиная с SMB 2.0, протокол может работать напрямую через TCP-порт 445, что устраняет зависимость от NetBIOS.
  • RDMA (SMB Direct): для высокоскоростной передачи данных в современных версиях.

Основные операции

Клиент может выполнять следующие операции:

  • Открытие, чтение, запись, закрытие файлов.
  • Создание и удаление каталогов.
  • Поиск файлов.
  • Управление блокировками файлов (file locking) для обеспечения целостности данных.
  • Печать документов на сетевых принтерах.
  • Межпроцессное взаимодействие через именованные каналы (named pipes).

Аутентификация и безопасность

Для доступа к ресурсам SMB требуется аутентификация. Протокол поддерживает несколько механизмов:

  • NTLM (NT LAN Manager): устаревший, но широко распространённый протокол аутентификации, использующий хеши паролей.
  • Kerberos: современный протокол аутентификации, используемый в доменных средах Active Directory. Он обеспечивает более высокий уровень безопасности и поддержку единого входа (SSO).
  • Шифрование SMB: начиная с SMB 3.0, данные могут шифроваться на уровне протокола, что защищает их от перехвата даже в незащищённых сетях.

Применение

Файловые серверы

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

Сетевые принтеры

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

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

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

Виртуализация

В современных дата-центрах SMB 3.0 и выше используется для хранения файлов виртуальных машин (VHDX) на Hyper-V. Это позволяет использовать функции SMB, такие как SMB Multichannel и Transparent Failover, для обеспечения высокой доступности и производительности.

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

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

Протокол SMB 1.0 (CIFS) имеет множество критических уязвимостей, связанных с его архитектурой. Наиболее известные атаки:

  • EternalBlue (MS17-010): эксплойт, использованный в атаках программ-вымогателей WannaCry и NotPetya в 2017 году. Он позволял удалённо выполнять код на уязвимой системе, используя ошибку в реализации SMB 1.0.
  • SMB Relay: атака, при которой злоумышленник перехватывает аутентификационные данные NTLM и использует их для доступа к другим ресурсам.
  • Pass-the-Hash: использование хеша пароля вместо самого пароля для аутентификации.

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

Из-за высокого риска атак корпорация Microsoft настоятельно рекомендует отключить поддержку SMB 1.0 на всех системах, где это возможно. В Windows 10 и Windows Server 2016 и более новых версиях SMB 1.0 не устанавливается по умолчанию. Также рекомендуется:

  • Использовать Kerberos вместо NTLM.
  • Включить шифрование SMB (начиная с SMB 3.0).
  • Использовать брандмауэры для ограничения доступа к порту 445 из недоверенных сетей.
  • Регулярно обновлять операционную систему для устранения известных уязвимостей.

Реализации на других платформах

Samba

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

macOS

Начиная с Mac OS X 10.9 (Mavericks), Apple заменила собственную реализацию SMB на SMB2/3, основанную на коде Samba. Это обеспечило лучшую совместимость с Windows-сетями.

Другие системы

Реализации SMB существуют для многих операционных систем, включая IBM AIX, HP-UX, Solaris и даже для встраиваемых систем.

Будущее протокола

SMB продолжает развиваться. В Windows Server 2022 и Windows 11 была представлена версия SMB 3.1.1 с улучшенной поддержкой QUIC (SMB over QUIC). Это позволяет устанавливать SMB-соединения через интернет без необходимости настройки VPN, используя порт 443 и TLS 1.3 для шифрования. Это делает протокол более пригодным для удалённой работы и облачных сценариев.

Источники

  1. Microsoft Docs: «Server Message Block (SMB) Protocol Overview».
  2. Microsoft Security Response Center: «MS17-010: Security Update for Microsoft Windows SMB Server».
  3. Samba Official Documentation: «Samba: An Introduction».
  4. IBM Corporation: «IBM PC Network Technical Reference Manual» (1984).
  5. Книга: «Windows Internals, Part 1» (7th Edition) by Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich, David A. Solomon.
  6. RFC 1001, RFC 1002: «Protocol standard for a NetBIOS service on a TCP/UDP transport».

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

На главную BFOmetr →