Протокол 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 →