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

Протокол SMB/CIFS

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

История

Происхождение SMB

Протокол SMB был разработан в 1983 году компанией IBM в рамках проекта по созданию сетевой операционной системы PC Network. Первоначально он предназначался для организации совместного доступа к файлам и принтерам в локальных сетях на базе DOS. В 1987 году Microsoft выпустила собственную реализацию SMB для OS/2 и LAN Manager, после чего протокол стал активно развиваться корпорацией.

Развитие CIFS

В 1996 году Microsoft представила расширенную версию протокола под названием CIFS (Common Internet File System). Целью было упрощение интеграции SMB с интернет-протоколами (TCP/IP) и повышение производительности при работе через глобальные сети. CIFS стал стандартом де-факто для файлового обмена в Windows-сетях, однако со временем его недостатки (низкая безопасность, ограниченная масштабируемость) привели к необходимости модернизации.

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

  • SMB 1.0 (1980-е) — базовая версия, использовавшаяся в Windows 95/98/Me и NT. Отличалась низкой безопасностью и уязвимостью к атакам, таким как EternalBlue (использован в атаке WannaCry в 2017 году).
  • SMB 2.0 (2006, Windows Vista) — кардинальная переработка: уменьшено количество команд, введена поддержка подписывания пакетов, улучшена производительность.
  • SMB 2.1 (2009, Windows 7) — добавлена поддержка больших MTU (Jumbo frames) и улучшенная работа с Wi-Fi.
  • SMB 3.0 (2012, Windows 8/Server 2012) — внедрено шифрование на уровне протокола, поддержка многоканальности (SMB Multichannel), отказоустойчивость (SMB Transparent Failover) и интеграция с RDMA (Remote Direct Memory Access).
  • SMB 3.1.1 (2015, Windows 10/Server 2016) — усилена безопасность: обязательное шифрование, аутентификация с использованием протокола AES-128-GCM, защита от атак типа «человек посередине».
  • SMB over QUIC (2022, Windows Server 2022) — реализация SMB поверх протокола QUIC (UDP), предназначенная для безопасного файлового доступа через интернет без необходимости VPN.

Архитектура протокола

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

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

Компоненты

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

Основные команды

Протокол включает набор команд для управления файлами и ресурсами:

  • SMB_COM_CREATE — создание или открытие файла.
  • SMB_COM_READ — чтение данных из файла.
  • SMB_COM_WRITE — запись данных в файл.
  • SMB_COM_CLOSE — закрытие файла.
  • SMB_COM_DELETE — удаление файла.
  • SMB_COM_TRANSACTION — выполнение транзакций (например, для работы с именованными каналами).

Безопасность

Аутентификация

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

  • NTLM (NT LAN Manager) — устаревший протокол, основанный на хэшировании паролей. Уязвим к атакам перебора и ретрансляции.
  • Kerberos — более современный протокол, используемый в доменных средах Active Directory. Обеспечивает взаимную аутентификацию и защиту от подделки.
  • Сертификаты — в SMB over QUIC аутентификация выполняется с помощью TLS-сертификатов.

Шифрование

Начиная с SMB 3.0, протокол поддерживает сквозное шифрование данных на уровне сессии (AES-128-CCM или AES-128-GCM). Это предотвращает перехват трафика даже в незащищённых сетях. В версии 3.1.1 шифрование стало обязательным для всех соединений.

Подписывание пакетов

SMB 2.0 и выше включают опцию цифровой подписи каждого пакета (SMB Signing), что защищает от атак типа «человек посередине» (MITM). Подпись вычисляется на основе сессионного ключа и содержимого пакета.

Применение

В операционных системах

  • Microsoft Windows — SMB является основным протоколом для файловых служб (File Server), общего доступа к принтерам и межпроцессного взаимодействия (IPC$). Используется в службах Active Directory, групповых политиках и удалённом управлении.
  • Linux и macOS — реализация Samba позволяет UNIX-подобным системам выступать в роли SMB-клиентов и серверов, обеспечивая совместимость с Windows-сетями.
  • Виртуализация — протокол используется в гипервизорах (например, Hyper-V) для хранения образов виртуальных машин на SMB-шарах.

В корпоративных сетях

SMB/CIFS широко применяется для организации файловых хранилищ (NAS), сетевых дисков и централизованного хранения данных. В современных дата-центрах SMB 3.0 позволяет достигать высокой производительности за счёт многоканальности и RDMA, конкурируя с NFS (Network File System).

В облачных сервисах

Некоторые облачные провайдеры (например, Azure Files) предоставляют доступ к файловым ресурсам через SMB 3.0, что позволяет интегрировать облачные хранилища в локальные Windows-сети.

Критика и ограничения

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

Протокол SMB 1.0 считается устаревшим и небезопасным. Он содержит множество уязвимостей, включая возможность удалённого выполнения кода (RCE). Наиболее известная атака — WannaCry (2017), использовавшая эксплойт EternalBlue для распространения через SMB 1.0. В ответ Microsoft рекомендовала отключить SMB 1.0 во всех версиях Windows, начиная с Windows 10 Fall Creators Update (2017).

Сложность конфигурации

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

Производительность в глобальных сетях

SMB изначально проектировался для локальных сетей с низкой задержкой. При работе через WAN (глобальные сети) с высокой задержкой и потерями пакетов производительность может снижаться. Протокол SMB over QUIC частично решает эту проблему за счёт использования UDP и мультиплексирования.

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

  • Порт 445 (TCP) для SMB был официально зарегистрирован IANA в 1996 году.
  • Протокол SMB используется не только для файлового доступа, но и для управления сетевыми принтерами, а также для передачи сообщений через именованные каналы (Named Pipes).
  • Реализация Samba, созданная Эндрю Триджеллом в 1992 году, стала первой открытой реализацией SMB для UNIX-систем.
  • В 2019 году Microsoft выпустила обновление, полностью отключающее SMB 1.0 по умолчанию в Windows 10 Home и Pro.

См. также

  • NFS (Network File System)
  • Samba
  • Active Directory
  • EternalBlue
  • WannaCry

Источники

  • Microsoft Corporation. «SMB Protocol Overview». MSDN Documentation.
  • Tridgell, A. «Samba: An Introduction». Samba.org.
  • ITU-T. «X.225: Open Systems Interconnection — Connection-oriented Session Protocol».
  • Национальный институт стандартов и технологий (NIST). «Guide to Securing SMB/CIFS».
  • Спецификация Microsoft SMB 3.0 (MS-SMB2).

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

На главную BFOmetr →