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 для шифрования. Это делает протокол более пригодным для удалённой работы и облачных сценариев.
Источники
- Microsoft Docs: «Server Message Block (SMB) Protocol Overview».
- Microsoft Security Response Center: «MS17-010: Security Update for Microsoft Windows SMB Server».
- Samba Official Documentation: «Samba: An Introduction».
- IBM Corporation: «IBM PC Network Technical Reference Manual» (1984).
- Книга: «Windows Internals, Part 1» (7th Edition) by Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich, David A. Solomon.
- RFC 1001, RFC 1002: «Protocol standard for a NetBIOS service on a TCP/UDP transport».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →