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

SMB/CIFS

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

История

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

Первая версия протокола SMB была создана в 1983 году сотрудником IBM Барри Фейгенбаумом (Barry Feigenbaum) для операционной системы DOS. Протокол предназначался для организации файлового обмена в локальной сети (LAN) между компьютерами под управлением IBM PC DOS. В 1987 году Microsoft, IBM и Intel совместно опубликовали спецификацию протокола SMB для сетей Microsoft LAN Manager.

В 1990-х годах Microsoft активно развивала SMB в рамках своих операционных систем, включая Windows for Workgroups, Windows 95 и Windows NT. В 1996 году Microsoft выпустила спецификацию CIFS, которая представляла собой расширенную версию SMB с улучшенной поддержкой работы через интернет, включая поддержку DNS, механизмов блокировки файлов и более эффективного использования пропускной способности сети. CIFS стала стандартной реализацией SMB в Windows 95 и Windows NT 4.0.

Эволюция версий

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

  • SMB 1.0 (CIFS) — первая широко распространённая версия, имевшая серьёзные проблемы с безопасностью и производительностью, особенно при работе через медленные или высоколатентные каналы связи. Включала в себя множество устаревших команд и механизмов, таких как NetBIOS over TCP/IP (NBT).
  • SMB 2.0 — выпущена в 2006 году вместе с Windows Vista. Значительно сократила количество команд (с более чем 100 до 19), повысила эффективность за счёт пакетирования запросов и поддержки долгоживущих сессий. Ввела механизм подписывания (signing) для защиты от атак типа «человек посередине».
  • SMB 2.1 — вышла с Windows 7. Добавила поддержку механизма «аренды» (leasing) для уменьшения числа сетевых запросов при доступе к файлам, а также улучшила производительность при работе с мобильными устройствами.
  • SMB 3.0 — выпущена в 2012 году с Windows Server 2012 и Windows 8. Стала значительным обновлением, включившим поддержку шифрования на уровне протокола, многоканальной передачи данных (SMB Multichannel), отказоустойчивости (SMB Transparent Failover) и использование RDMA (Remote Direct Memory Access) для сверхбыстрой передачи данных.
  • SMB 3.1.1 — текущая версия, выпущенная с Windows 10 и Windows Server 2016. Включает улучшенное шифрование (AES-128-GCM), предварительную аутентификацию (pre-authentication integrity) для защиты от атак типа «man-in-the-middle» и поддержку кластеризации.

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

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

SMB/CIFS работает по принципу «клиент-сервер». Клиент (например, рабочая станция с Windows, Linux или macOS) инициирует соединение с сервером (файловый сервер, NAS-устройство). После установления соединения клиент отправляет запросы на открытие, чтение, запись, закрытие файлов, а также на печать документов или выполнение других команд. Сервер обрабатывает запросы и возвращает результаты.

Транспортный уровень

Изначально SMB 1.0 использовал протокол NetBIOS поверх TCP/IP (порт 139) или NetBEUI. Начиная с SMB 2.0, протокол работает напрямую поверх TCP (порт 445) без необходимости в NetBIOS. Это упростило маршрутизацию и повысило безопасность. Для работы с RDMA (SMB Direct) может использоваться протокол InfiniBand или iWARP.

Основные компоненты

  • SMB-сервер — служба (например, lanmanserver в Windows), которая предоставляет доступ к ресурсам (шарам, shares) — папкам, дискам, принтерам.
  • SMB-клиент — служба (например, lanmanworkstation), которая подключается к серверу и монтирует удалённые ресурсы как локальные диски (например, буква Z:).
  • Аутентификация — SMB поддерживает различные механизмы, включая NTLM (NT LAN Manager) и Kerberos. Kerberos является предпочтительным в средах с Active Directory, так как обеспечивает более высокий уровень безопасности.
  • Авторизация — после аутентификации сервер проверяет права доступа пользователя на основе списков управления доступом (ACL) к файлам и папкам.

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

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

ВерсияОС (клиент)ОС (сервер)Ключевые особенности
SMB 1.0 (CIFS)Windows 95/98/ME, NT 4.0, 2000Windows NT 4.0, 2000, Server 2003Устаревшая, небезопасная, использует NetBIOS
SMB 2.0Windows Vista, 7Windows Server 2008, 2008 R2Сокращение команд, пакетирование, подписывание
SMB 2.1Windows 7, 8Windows Server 2008 R2, 2012Аренда файлов, улучшение производительности
SMB 3.0Windows 8, 8.1Windows Server 2012, 2012 R2Шифрование, Multichannel, RDMA, отказоустойчивость
SMB 3.1.1Windows 10, 11Windows Server 2016, 2019, 2022AES-128-GCM, предварительная аутентификация

Применение

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

Основное применение SMB/CIFS — организация файловых хранилищ в корпоративных и домашних сетях. Протокол поддерживается всеми современными операционными системами:

  • Windows — использует SMB по умолчанию для доступа к сетевым папкам (например, \\server\share).
  • Linux — реализация протокола обеспечивается пакетом Samba, который позволяет Linux-серверу выступать в роли SMB-сервера или клиента.
  • macOS — поддерживает SMB начиная с версии 10.9 Mavericks, заменив устаревший протокол AFP.
  • NAS-устройства — большинство сетевых хранилищ (Synology, QNAP, TrueNAS) используют SMB для предоставления доступа к данным.

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

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

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

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

Безопасность и критика

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

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

  • EternalBlue — эксплойт, использованный в атаках программ-вымогателей WannaCry (2017) и NotPetya. Он позволял удалённо выполнять код на уязвимых системах через SMB 1.0.
  • SMB Relay — атака, при которой злоумышленник перехватывает аутентификационные данные между клиентом и сервером.
  • Отсутствие шифрования — в SMB 1.0 данные передавались в открытом виде, что позволяло их перехватывать.

В связи с этим Microsoft, начиная с Windows 10 Fall Creators Update (2017), отключила SMB 1.0 по умолчанию. Рекомендуется полностью удалить или отключить эту версию на всех современных системах.

Современные меры защиты

Начиная с SMB 3.0, протокол включает встроенные механизмы безопасности:

  • Шифрование (SMB Encryption) — все данные шифруются на уровне протокола с использованием AES-128 или AES-256.
  • Подписывание (SMB Signing) — гарантирует целостность сообщений и защищает от подмены.
  • Предварительная аутентификация — в SMB 3.1.1 предотвращает атаки типа «man-in-the-middle» на этапе установки соединения.
  • SMB over QUIC — в Windows Server 2022 и Windows 11 появилась поддержка работы SMB через протокол QUIC (UDP), что позволяет безопасно подключаться к файловым серверам через интернет без использования VPN.

Критика

Основные претензии к протоколу SMB/CIFS связаны с его исторически сложной архитектурой, избыточностью и проблемами безопасности, особенно в версии 1.0. Критики также отмечают, что протокол является проприетарным и тесно связан с экосистемой Microsoft, что затрудняет его полную и корректную реализацию в сторонних продуктах (например, в Samba). Однако с появлением SMB 3.x и открытием спецификаций Microsoft (в рамках инициативы по совместимости) ситуация улучшилась.

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

  • Происхождение названия: SMB расшифровывается как Server Message Block, что отражает его основную функцию — передачу блоков сообщений между сервером и клиентом.
  • Samba: Самой популярной открытой реализацией SMB/CIFS является пакет Samba, созданный Эндрю Триджеллом (Andrew Tridgell) в 1992 году. Название Samba происходит от названия протокола SMB (SMB + «a»).
  • Отказ от NetBIOS: Переход на прямой TCP/IP (порт 445) в SMB 2.0 позволил упростить настройку брандмауэров и повысить производительность, так как отпала необходимость в дополнительной инкапсуляции.
  • SMB Direct: Технология, использующая RDMA, позволяет достигать скорости передачи данных до 100 Гбит/с и выше с минимальной загрузкой процессора, что критически важно для высокопроизводительных вычислений и работы с базами данных.

Источники

  • Спецификация протокола SMB 2 и SMB 3 от Microsoft (MS-SMB2, MS-SMBD).
  • Документация Microsoft по безопасности SMB (KB 2696547, KB 4012598).
  • Статья «Server Message Block protocol» в Technet.
  • Материалы Samba.org — официальная документация проекта Samba.
  • Книга «Windows Internals» (часть 2, раздел о файловых системах).
  • Статья о WannaCry и EternalBlue из открытых источников (CISA, MITRE ATT&CK).

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

На главную BFOmetr →