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 →