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, 2000 | Windows NT 4.0, 2000, Server 2003 | Устаревшая, небезопасная, использует NetBIOS |
| SMB 2.0 | Windows Vista, 7 | Windows Server 2008, 2008 R2 | Сокращение команд, пакетирование, подписывание |
| SMB 2.1 | Windows 7, 8 | Windows Server 2008 R2, 2012 | Аренда файлов, улучшение производительности |
| SMB 3.0 | Windows 8, 8.1 | Windows Server 2012, 2012 R2 | Шифрование, Multichannel, RDMA, отказоустойчивость |
| SMB 3.1.1 | Windows 10, 11 | Windows Server 2016, 2019, 2022 | AES-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 →