Файловый доступ. Протоколы SMB/CIFS
Совместный доступ к файлам необходим для любой организации или команды, работающей над общими проектами.
От офисных сотрудников до разработчиков программного обеспечения — каждому нужен надежный механизм обмена данными и файлами. Именно тут вступают в игру протоколы SMB и CIFS, термины, разница между которыми скорее историческая, нежели функциональная.
Разберемся подробнее, что представляют собой эти протоколы и какова их взаимосвязь.
1. SMB vs CIFS
Итак, SMB (Server Message Block) — сетевой протокол, работающий на прикладном уровне коммуникационной модели OSI (Open Systems Interconnection).
Протокол SMB активно применяется для передачи файлов между пользователями и файловыми серверами, синхронизации данных между различными компьютерами и репликации файлов. Помимо функций, связанных с управлением файлами, SMB поддерживает отправку сообщений, печать документов и отображение списка доступных компьютеров в сети.
Разработанный IBM в 1983 году, SMB эволюционировал и совершенствовался, и прошел через три основных версии развития:
- SMBv1 — первая версия, предложенная IBM и впоследствии развитая Microsoft.
- SMBv2 — улучшенная версия, появившаяся с выходом Windows Vista, ускорившая передачу данных и повысившая безопасность.
- SMBv3 — современная и самая надежная версия, введённая в Windows 8, обеспечивающая поддержку шифрования и резервирование соединений.
Теперь про CIFS. Common Internet File System — специализированная версия SMB, разработанная Microsoft в 1996 году после выпуска Windows 95. Фактически, CIFS является вариантом реализации SMBv1 с небольшими дополнениями. Важное нововведение — возможность прямых подключений через TCP и порт 445 без использования NetBIOS.
Таким образом, CIFS — это просто адаптация оригинальной концепции SMB на определенном этапе развития.
2. Особенности и различия в версиях SMB
Рассмотрим детальнее, чем отличаются версии SMB, какими возможностями обладают и для каких целей предназначены.
SMBv1
Первая версия протокола, которая страдает от ряда ограничений и уязвимостей безопасности. Его изначально небезопасная архитектура реализации привела к громким атакам: вспомним вирус крипто-вымогатель WannaCry, беспощадно заразивший в 2017 году операционные семейства Microsoft Windows. С тех пор от использования SMBv1 отказались в пользу более безопасных и эффективных версий.
SMBv2
Microsoft выпустила SMB 2.0 (или SMB2) в 2006 году вместе с Windows Vista. Эта версия SMB более надежна, чем SMB 1.0/CIFS, и это не CIFS. Количество команд, необходимых для передачи файлов, сокращено с более чем 100 до 20. Производительность повышена благодаря механизмам конвейерной обработки: появилась возможность отправки дополнительного запроса до получения ответа на предыдущий!
SMBv3
Впервые была представлена в Windows 8 и Windows Server 2012, причем сначала эта версия протокола называлась SMB 2.2, но впоследствии в Windows 8 она была переименована в SMB 3.0.
В версии протокола SMB 3.0 добавлены следующие фичи:
- SMB Direct (прямой доступ к памяти)
- SMB Multichannel и SMB Transport Failover
- Поддержка сквозного шифрования
- Существенно улучшена безопасность
- Повышена эффективность сети за счет сокращения времени ожидания
SMB 3.0.2 (3.02)
Релиз вышел вместе с Windows 8.1 и Windows Server 2012 R2. В этой версии впервые появилась возможность отключения совместимости с SMB 1.0 для повышения уровня безопасности.
SMB 3.1.1
Эта версия стала доступна начиная с Windows 10 и Windows Server 2016. Здесь существенно доработана безопасность: улучшенное шифрование (AES 128 GCM и AES 128 CCM) и хеширование SHA-512 для проверки целостности перед аутентификацией. Кроме того, именно в SMB 3.1.1 реализована защита от атак «человек посередине», при которой злоумышленник тайным путем получает доступ к передаваемым данным.
3. Принцип работы SMB
Протокол SMB функционирует по принципу «клиент—сервер», когда пользователи (клиенты) с помощью IP-адреса или имени хоста подключаются к серверу. Перед началом взаимодействия клиент и сервер согласуют параметры подключения, необходимые для дальнейшей передачи данных. После этого начинается процесс обмена пакетами данных.
Пакеты могут быть классифицированы следующим образом:
- Пакеты управления сеансом: устанавливают/останавливают подключения к общим файловым ресурсам;
- Пакеты доступа к файлам: осуществляют доступ к общим файловым ресурсам и манипулируют файлами;
- Пакеты общих сообщений: поддерживают механизмы уведомления и коммуникации между компонентами сети.
SMB открывает сеанс после установления соединения и завершения аутентификации. Все сообщения SMB могут передаваться в рамках этого сеанса. При запуске сеанса клиент SMB отправляет список своих возможностей (зависят от версии клиента SMB).
Исторически сложилось так, что SMB мог функционировать несколькими способами.
1) Напрямую по протоколу TCP/IP с использованием порта 445 и без NetBIOS. Это самый распространенный метод.
2) Через NetBIOS. Давно устаревший формат, который применялся во времена до Windows Server 2000, когда трафик проходил через NetBIOS API с использованием портов 137, 138 и 139.
Как мы понимаем, в настоящее время главный путь – это прямой доступ через TCP/IP, позволяющий обеспечить гибкость и удобство работы.
4. Поддержка многопользовательского режима
У систем Windows есть свои собственные SMB-клиент и сервер. Однако клиентские версии Windows имеют ограничение по количеству пользователей, которые могут подключаться к хосту, в отличие от серверных версий Windows, не имеющих таких ограничений.
- Windows XP и Vista – максимум возможно 10 одновременных подключений.
- Windows 7 и Windows 10 – максимум возможно 20 одновременных подключений.
Эту информацию важно учитывать при настройке общего доступа к файлам.
5. Реализация SMB в Linux
Linux также имеет поддержку SMB благодаря настройке Samba, являющейся бесплатной реализацией SMB-сервера. Samba позволяет интегрировать Linux к домену Active Directory (AD), выполняя функции контроллера домена. Также доступна бесплатная клиентская поддержка SMB для Linux и других платформ.
О Sambа мы расскажем в нашем отдельном материале, где раскроем особенности работы этого, так называемого, свободного приложения.
6. Использование SMB в различных версиях Windows
Поскольку в различных версиях используются разные варианты протокола SMB, это может затруднять понимание совместимости. Для упрощения мы объединили все в единую таблицу, в которой наглядно показано, какие типы SMB поддерживаются каждой конкретной версией ОС.
Вывод
В современных сетях SMB является одним из основных протоколов для обмена данными между операционными системами Windows и Linux. Широкая поддержка и функциональность делают SMB незаменимым инструментом для совместного использования ресурсов от небольших до крупномасштабных корпоративных сетей. Что касается CIFS, хотя он устарел и умер, но все равно оставил значимый след в цифровом мире.