Подключение всех технологических устройств к общей локальной сети (автономная альтернатива Интернету) обычно является чисто технической задачей благодаря компьютерным сетям. Участники сети могут легко обмениваться файлами через LAN или WLAN, управлять серверами или использовать типичные сетевые устройства, такие как принтеры или маршрутизаторы.
Однако для того, чтобы взаимодействие между отдельными компонентами работало, необходимы четкие соглашения, представленные в форме протоколов. Например, одним из самых важных и старых сетевых протоколов является протокол SMB. Мы подробно разберём его это в этой статье.
Что такое SMB (блок сообщений сервера)?
SMB (Server Message Block) – это протокол клиент/сервер, который управляет доступом к файлам и целым каталогам, а также к другим сетевым ресурсам, таким как принтеры, маршрутизаторы или интерфейсы, открытые для сети. Обмен информацией между различными процессами системы (также известный как межпроцессное взаимодействие) может осуществляться на основе протокола SMB.
Разработанный ИТ-группой IBM в 1983 году, за последние десятилетия были выпущены различные версии и реализации протокола. SMB впервые стал доступен для широкой публики как часть сетевой операционной системы OS/2 LAN Manager и ее преемника LAN Server. Основным применением протокола с тех пор была операционная система Windows, поскольку ее сетевые службы обратно совместимы с SMB. Это позволяет устройствам с более новыми выпусками легко взаимодействовать с устройствами, на которых установлена более старая операционная система Microsoft. Более того, проект бесплатного программного обеспечения Samba предлагает решение, которое позволяет использовать Server Message Block в дистрибутивах Linux и Unix, что позволяет кроссплатформенное общение через SMB.
Для реализации протокола SMB в Windows NT 4.0 Microsoft использовала название Common Internet File System (CIFS), которое впоследствии использовалось как синоним семейства протоколов SMB. Сегодня CIFS является особенно распространенным термином для первой версии SMB 1.0.
Как работает SMB?
Протокол Server Message Block позволяет клиенту связываться с другими участниками той же сети, позволяя ему получать доступ к файлам или службам, открытым для него в сети. Чтобы это работало, другая система также должна реализовать сетевой протокол и получать и обрабатывать соответствующий клиентский запрос с помощью приложения сервера SMB . Но обе стороны должны сначала установить соединение, поэтому сначала они обмениваются соответствующими сообщениями. В IP-сетях SMB использует протокол управления передачей (TCP), который обеспечивает трехстороннее рукопожатие между клиентом и сервером перед окончательным установлением соединения. Последующий перенос данных регулируется положениями протокола TCP.
TCP – порт 445 предназначен для установления соединения и передачи данных через TCP / SMB. Разрешение адресов обычно происходит через систему доменных имен (DNS) или через Link Local Multicast Name Resolution (LLMNR) в небольших сетях.
Протокол SMB: обзор версий
Как уже упоминалось, с тех пор, как SMB был впервые выпущен в 1983 году, в сетевой стандарт были внесены многочисленные изменения, отраженные в различных версиях протокола . Они начинаются с SMB 1.0 и заканчиваются текущей версией SMB 3.1.1, которую Microsoft представила вместе с Windows 10. В следующих разделах резюмируются основные этапы разработки протокола Server Message Block.
SMB 1.0 (CIFS)
Первая версия протокола сетевой связи часто приравнивается к варианту Common Internet File System (CIFS), описанному ранее. Однако последнее на самом деле относится только к аспекту первой редакции протокола – особенно для реализации протокола в устройствах с Windows NT 4.0. В этом первом варианте связь по-прежнему осуществлялась через интерфейс NetBIOS, а также через UDP-порты 137 (разрешение имен) и 138 (передача пакетов), а также через TCP-порт 139 (установка и транспортировка соединения). Зависимость от NetBIOS прекратилась с выходом Windows 2000 ; протокол, официально обозначенный как SMB 1.0, теперь позволяет прямое соединение через TCP (порт 445).
SMB 2.0
Первая большая редакция Server Message Block была предоставлена Microsoft в ноябре 2006 года вместе с операционной системой Windows Vista . Несмотря на то, что протокол – теперь известный как SMB 2.0 – продолжал оставаться проприетарным , компания-производитель программного обеспечения также впервые выпустила спецификацию, позволяющую другим системам взаимодействовать с операционными системами Windows. Наиболее важные изменения во второй версии протокола включали следующее:
- Уменьшение количества команд и подкоманд с более 100 до 19
- Оптимизированная производительность благодаря новой функции очереди для запросов SMB
- Поддержка символических ссылок (подключения к файлам или каталогам)
- Промежуточное хранение / кеширование свойств файла
- Улучшено подписывание сообщений (алгоритм HMAC SHA-256)
- Лучшая масштабируемость благодаря большему максимальному количеству клиентов, общих объектов и одновременно открытых файлов
По соображениям совместимости первая версия протокола была сохранена. Microsoft также придерживалась этой меры в последующих версиях.
SMB 2.1
Версия 2.1 протокола SMB тесно связана с Windows 7. Пересмотренная версия второй редакции протокола была выпущена вместе с операционной системой в 2007 году и, помимо ряда незначительных оптимизаций производительности, она предоставила новые механизмы блокировки для регулирования доступа к файлам. более эффективно (чтение, запись, удаление и т. д.).
SMB 3.0
Windows 8 была выпущена в 2012 году, а вместе с новой версией операционной системы Microsoft появилась новая версия Server Message Block. Первоначально это называлось SMB 2.2, но позже было изменено на обозначение SMB 3.0, которое применяется и сегодня. Эта версия протокола также направлена на повышение производительности и безопасности соединений SMB, особенно в виртуализированных центрах обработки данных. Следующие новые функции были ключевыми для этого улучшения:
- Возможность удаленного доступа к хранилищу благодаря SMB через RDMA (Remote Direct Memory Access)
- Многоканальная функция позволяет настраивать несколько подключений на сеанс SMB
- Прозрачная защита от сбоев
- Сквозное шифрование
SMB 3.1.1
SMB 3.1.1 (опубликованный в 2015 году с Windows 10) расширил серию протоколов проверкой целостности перед аутентификацией на основе хэш-значений SHA-256. Кроме того, в системе используется шифрование AES-128 в режиме счетчика Галуа (GCM). Для всех устройств связи с SMB 2.0 или выше SMB 3.1.1 делает безопасное соединение обязательным.
Таблица версий SMB
Версия SMB | Поддерживается с | Новые особенности |
---|---|---|
CIFS | Windows NT 4.0 | Связь через интерфейс NetBIOS |
SMB 1.0 | Windows 2000 | Прямое подключение через TCP |
SMB 2.0 | Windows Vista, Windows Server 2008, Samba 3.5 | Различные улучшения производительности, улучшенная подпись сообщений, функция кеширования свойств файла |
SMB 2.1 | Windows 7, Windows Server 2008 R2 | Механизмы блокировки |
SMB 3.0 | Windows 8, Windows Server 2012, Samba 4.0 | Многоканальные соединения, сквозное шифрование, удаленный доступ к хранилищу |
SMB 3.0.2 | Windows 8.1, Windows Server 2012 R2 | |
SMB 3.1.1 | Windows 10, Windows Server 2016, Samba 4.3 | Проверка целостности, шифрование AES-128 с режимом Галуа / счетчика (GCM) |
Какие аспекты безопасности важно учитывать при использовании SMB?
В течение многих лет Microsoft считала важным в своих системах, чтобы старые версии Server Message Block также поддерживались более новыми выпусками для обеспечения бесперебойной связи между старыми и новыми устройствами. Но обеспечение совместимости с тех пор связано с повышенным риском безопасности. Это связано с тем, что SMB 1.0 имеет ряд уязвимостей по сравнению с последующими протоколами, которые, например, делают компьютер уязвимым для DoS-атак.
Особенно в сетях высок риск атаки на основе протокола SMB. Все версии SMB обычно активируются из соображений совместимости – например, поскольку это требуется для подключенных принтеров или других сетевых устройств. Даже если старая версия протокола практически больше не используется, она остается легкой мишенью для злоумышленников, которые могут переключить связь на SMB 1.0 и атаковать целевую систему без серьезных препятствий. Вот почему с Windows 10 Microsoft решила больше не поддерживать первую версию и автоматически деактивировать ее, когда она не используется.
Где используется или реализуется SMB
Наиболее важные сценарии применения для SMB уже были представлены в этой статье. Ключевым моментом протокола является доступ к файловым системам, поэтому основные преимущества заключаются в соединениях клиент/сервер между компьютерами и файловыми серверами . Поскольку другие разделы протокола явно нацелены на межпроцессное взаимодействие, простой обмен данными между двумя устройствами или двумя процессами относится к профилю его приложения.
Помимо реализаций Server Message Block в различных выпусках Windows, протокол был интегрирован во множество других программных проектов, чтобы обеспечить связь за пределами семейства Microsoft. Наиболее известные реализации SMB включают следующее:
- Samba : Программный проект Samba, вероятно, является самым известным примером реализации SMB за пределами Windows. Еще в 1991 году программист Эндрю Триджелл начал разработку бесплатного программного обеспечения, которое обеспечивает связь в системах Unix / Linux через Server Message Block.
- Netsmb: Netsmb относится к реализациям клиента и сервера SMB непосредственно в ядре операционных систем BSD. Впервые они были выпущены для ОС FreeBSD 4.4, но теперь доступны для ряда систем BSD, включая NetBSD и macOS.
- YNQ : YNQ (ранее NQ) – это библиотека SMB, которая реализует технологию Server Message Block во встроенных системах без Windows и, таким образом, обеспечивает взаимодействие с устройствами на базе Windows. YNQ разрабатывается израильской софтверной компанией Visuality Systems Ltd. с 1998 года.
- FreeNAS : любой, кто хочет запустить свой собственный NAS – сервер, поддерживающий протокол SMB, найдет подходящее решение в FreeNAS с открытым исходным кодом . Программное обеспечение NAS основано на FreeBSD и файловой системе OpenZFS.
- ConnectedNAS : ConnectedNAS, программное обеспечение, разработанное Connected Way, служит SMB-сервером и клиентом для устройств Android . Пользователи платного приложения могут легко обмениваться данными между мобильным устройством и другими устройствами SMB – как в частном порядке, так и внутри компании. По соображениям безопасности ConnectedNAS поддерживает SMB только начиная с версии 2.