SMB — сетевой файловый протокол¶
SMB (Server Message Block) — сетевой протокол прикладного уровня, предназначенный для совместного доступа к файлам, принтерам и другим ресурсам между компьютерами в локальной сети. Протокол работает поверх TCP/IP (в современных реализациях) или NetBIOS (в исторических) и позволяет клиентам читать и записывать файлы на удалённых серверах, обращаться к сетевым принтерам, обмениваться сообщениями между процессами. SMB является одним из основных протоколов организации файловых сервисов в корпоративных сетях и активно используется в средах с операционными системами Windows, а также в UNIX-подобных системах через свободные реализации.
¶История
Протокол был разработан компанией IBM в 1980-х годах для организации совместного доступа к файлам и принтерам в сетях на базе OS/2. Первоначально SMB работал поверх транспортного уровня NetBIOS и использовал порты 137–139. В 1990-х годах Microsoft, ставшая основным разработчиком протокола, интегрировала SMB в линейку операционных систем Windows NT, сделав его центральным компонентом службы «Общая папка» (File and Printer Sharing).
В 1996 году Microsoft представила спецификацию SMB, позже переименованную в CIFS (Common Internet File System) — попытку адаптировать протокол для работы через Интернет. CIFS оказалась не слишком удачной: протокол был тяжеловесным и медленным. В 2006 году вышла версия SMB 2.0, разработанная для Windows Vista, которая существенно упростила командную структуру и повысила производительность. Последующие версии — SMB 2.1, SMB 3.0, SMB 3.1.1 — добавили поддержку шифрования, многоузловые кластеры (Scale-Out File Server), устойчивость к сбоям сети и аутентификацию Kerberos.
¶Принцип работы
SMB использует клиент-серверную модель. Сервер экспортирует ресурсы (каталоги, принтеры), клиент подключается к ним и выполняет операции: открытие файла, чтение, запись, поиск, блокировка. Обмен сообщениями происходит по модели запрос-ответ: клиент отправляет SMB-запрос, сервер возвращает ответ.
В современных версиях SMB работает поверх TCP на порту 445. Этот порт появился в Windows 2000, когда Microsoft отказалась от транспортного уровня NetBIOS в пользу прямой инкапсуляции SMB в TCP-пакеты (Direct hosting). Порты 137–139 остались для совместимости со старыми системами.
¶Версии протокола
| Версия | Год | Операционная система | Основные особенности |
|---|---|---|---|
| SMB 1.0 / CIFS | 1996 | Windows 95/98/NT | Работа через NetBIOS, низкая производительность |
| SMB 2.0 | 2006 | Windows Vista | Упрощённые команды, оптимизация для медленных сетей |
| SMB 2.1 | 2010 | Windows 7 | Многоузловые кластеры, оптимизация памяти |
| SMB 3.0 | 2012 | Windows 8 / Server 2012 | Шифрование AES-128-CCM, отказоустойчивость |
| SMB 3.1.1 | 2015 | Windows 10 / Server 2016 | Протокол SMB over QUIC, защита от атак |
¶Реализации
Помимо проприетарной реализации Microsoft, существует свободная реализация Samba, разрабатываемая с 1992 года. Samba позволяет UNIX- и Linux-серверам предоставлять файловые ресурсы по протоколу SMB и подключаться к SMB-ресурсам Windows. Samba входит в состав большинства дистрибутивов Linux и используется для построения файловых серверов, интеграции Linux-машин в домены Active Directory.
¶Безопасность
SMB 1.0 считается уязвимым протоколом. В 2017 году уязвимость EternalBlue в реализации SMB 1.0 Microsoft была использована вредоносным программным обеспечением WannaCry и NotPetya для массового шифрования файлов и распространения по сети. После этого Microsoft выпустила патчи и рекомендовала отключить SMB 1.0. В современных версиях Windows 10 и Windows 11 SMB 1.0 по умолчанию отключён.
Для защиты трафика SMB в версии 3.0 и выше предусмотрено шифрование AES-128-CCM, а аутентификация выполняется через Kerberos. Рекомендуется ограничивать доступ к порту 445 на сетевых периметрах и использовать SMB 3.1.1.
¶Применение
SMB является стандартом де-факто для организации файловых сервисов в корпоративных сетях на базе Windows. Протокол поддерживается сетевыми файловыми системами NAS-устройств (Synology, QNAP), виртуальными платформами (Hyper-V, VMware), системами резервного копирования. В Linux-средах SMB используется Samba для интеграции с Windows-инфраструктурой.
Источники:
- Microsoft Docs. SMB Protocol Overview.
- Samba Project Documentation. https://www.samba.org
- Microsoft Security Response Center. MS17-010: Security Update for SMB Server.
- RFC 1002, RFC 2113 (NetBIOS over TCP/IP).
