В компьютерных сетях, Блок сообщений сервера (SMB ), одна версия которого также была известна как Общая файловая система Интернета (CIFS ), это протокол связи для обеспечения общего доступа к файлам, принтерам и последовательным портам между узлами в сети. Он также обеспечивает механизм межпроцессного взаимодействия с аутентификацией. В большинстве случаев SMB используется на компьютерах под управлением Microsoft Windows, где он был известен как «Сеть Microsoft Windows» до появления Active Directory. Соответствующие службы Windows : LAN Manager Server для компонента server и рабочая станция LAN Manager для компонента client.
Блок сообщений сервера обеспечивает совместное использование файлов, просмотр сети, услуги печати и межпроцессное взаимодействие по сети.
Протокол SMB использует протоколы нижнего уровня для транспорта.
Протокол Microsoft SMB часто использовался с NetBIOS через TCP / IP (NBT) через UDP, используя номера портов 137 и 138, а также номера портов TCP 137 и 139. NBT для использования NetBIOS поддерживается в Windows Server 2003, Windows XP, Windows 2000, Windows NT и Windows Me / 98/95. NetBIOS не поддерживается в Windows Vista, Windows Server 2008 и последующих версиях Windows. Комбинация SMB / NBT обычно используется для обратной совместимости.
Протокол NetBIOS через NetBEUI обеспечивает поддержку NetBIOS для протокола NetBEUI. Этот протокол также называется кадры NetBIOS (NBF). NBF поддерживается в Windows 2000, Windows NT и Windows Me / 98/95. NetBEUI больше не поддерживается в Windows XP и более поздних версиях. Однако протокол SMB также может использоваться без отдельного транспортного протокола непосредственно через TCP, порт 445. NetBIOS также поддерживался несколькими устаревшими протоколами, такими как IPX / SPX.
. Система межпроцессного взаимодействия SMB (IPC) обеспечивает именованные каналы и был одним из первых межпроцессных механизмов, обычно доступных программистам, который предоставляет сервисам средства для наследования аутентификации, выполняемой при первом подключении клиента к серверу SMB.
Некоторые службы, которые работают через именованные каналы, например те, которые используют собственную реализацию Microsoft DCE / RPC через SMB, известную как MSRPC через SMB, также позволяют клиентским программам MSRPC выполнять аутентификацию, который отменяет авторизацию, предоставленную сервером SMB, но только в контексте клиентской программы MSRPC, которая успешно выполняет дополнительную аутентификацию.
Подпись SMB: Windows NT 4.0 с пакетом обновления 3 и выше имеет возможность использовать шифрование для цифровой подписи подключений SMB. Самый распространенный официальный термин - «подписание SMB». Другие официально использованные термины: «Подписи безопасности [SMB]», «Порядковые номера SMB» и «Подписание сообщений SMB». Подпись SMB может быть настроена индивидуально для входящих соединений SMB (обрабатываемых службой LanManServer) и исходящих соединений SMB (обрабатываемых службой LanManWorkstation). По умолчанию в Windows 98 и более поздних версиях используется условно подписать исходящие соединения, если сервер также поддерживает это, и откатить к неподписанному SMB, если это позволяют оба партнера. Настройка по умолчанию для контроллеров домена Windows начиная с Windows Server 2003 и более поздних версий - не разрешать откат для входящих подключений. Эту функцию также можно включить для любого сервера под управлением Windows NT 4.0 с пакетом обновления 3 или более поздней версии. Это защищает от атак типа "злоумышленник посередине" против клиентов, извлекающих свои политики с контроллеров домена при входе в систему.
SMB поддерживает гибкую блокировку - особый тип механизма блокировки - для файлов с целью повышения производительности.
SMB служит основой для реализации Распределенной файловой системы Microsoft.
изначально был разработан SMB в IBM в начале 1983 года с целью превратить DOS INT 21h доступ к локальным файлам в сетевой файловой системе. Microsoft внесла значительные изменения в наиболее часто используемую версию. Microsoft объединила протокол SMB с продуктом LAN Manager, который она начала разрабатывать для OS / 2 с 3Com примерно в 1990 году, и продолжила добавлять функции в протокол. в Windows для рабочих групп (c.1992) и в более поздних версиях Windows.
SMB изначально был разработан для работы поверх NetBIOS / NetBEUI API (обычно реализуется с помощью NBF, NetBIOS поверх IPX / SPX или NBT ). Начиная с Windows 2000, SMB по умолчанию работает с тонким слоем, аналогичным пакету сообщений сеанса службы сеансов NBT, поверх TCP, используя TCP-порт 445, а не TCP. порт 139 - функция, известная как «прямой хост SMB».
Windows Server 2003 и более старые устройства NAS изначально используют SMB1 / CIFS. SMB1 / CIFS - чрезвычайно болтливый протокол, поскольку он неэффективно использует сетевые ресурсы, особенно при передаче по дорогостоящим каналам глобальной сети. По оценкам Microsoft, SMB1 / CIFS составляет менее 10% сетевого трафика в средней корпоративной сети, но это по-прежнему значительный объем трафика. Одним из подходов к снижению неэффективности протокола является использование продуктов WAN Acceleration, таких как продукты Riverbed, Silver Peak или Cisco Systems. Лучший подход - просто отказаться от SMB1 / CIFS путем обновления серверной инфраструктуры, которая его использует. Сюда входят как устройства NAS, так и Windows Server 2003. В настоящее время наиболее эффективным методом определения трафика SMB1 / CIFS является использование инструмента сетевого анализатора, такого как Wireshark и т. Д., Для определения «говорящих» SMB1 / CIFS и последующего вывода из эксплуатации. или обновите их со временем. Microsoft также предоставляет инструмент аудита в Windows Server 2016, который можно использовать для отслеживания говорящих SMB1 / CIFS.
В 1996 году, когда Sun Microsystems анонсировала WebNFS, Microsoft выступила с инициативой по переименованию SMB в общую файловую систему Интернета (CIFS) и добавлены дополнительные функции, включая поддержку символических ссылок, жестких ссылок, файлов большего размера и первоначальную попытку поддержки прямых подключений через порт TCP 445, не требуя NetBIOS в качестве транспорта (в значительной степени экспериментальная работа, потребовавшая дальнейшей доработки). Microsoft представила некоторые частичные спецификации как Интернет-проекты в IETF, хотя срок действия этих представлений истек.
Microsoft «добавила SMB1 в список устаревших Windows Server 2012 R2 в июне 2013 года». В Windows Server 2016 и некоторых версиях Windows 10 Fall Creators Update по умолчанию SMB1 не установлен.
Microsoft представила новую версию протокола (SMB 2.0 или SMB2) с Windows Vista в 2006 году и Server 2008. Хотя протокол является проприетарным, его спецификация была опубликована, чтобы позволить другим системам взаимодействовать с операционными системами Microsoft, которые используют новый протокол.
SMB2 снижает «болтливость» протокола SMB 1.0 за счет уменьшения количества команд и подкоманды от сотни до девятнадцати. Он имеет механизмы для конвейерной обработки, то есть отправки дополнительных запросов до того, как поступит ответ на предыдущий запрос, тем самым повышая производительность по каналам с высокой задержкой. Он добавляет возможность объединять несколько действий в один запрос, что значительно сокращает количество круговых обращений, необходимых клиенту для обращения к серверу, в результате повышая производительность. SMB1 также имеет механизм сложения, известный как AndX, для объединения нескольких действий, но клиенты Microsoft редко используют AndX. Он также вводит понятие «надежных дескрипторов файлов»: они позволяют подключению к серверу SMB выдерживать кратковременные сбои в работе сети, что типично для беспроводной сети, без дополнительных затрат на повторное согласование нового сеанса.
SMB2 включает поддержку символических ссылок. Другие улучшения включают кэширование свойств файлов, улучшенное подписание сообщений с помощью алгоритма хеширования HMAC SHA-256 и лучшую масштабируемость за счет увеличения числа пользователей, общих ресурсов и открытых файлов на сервере, среди прочего. Протокол SMB1 использует 16-битные размеры данных, что, помимо прочего, ограничивает максимальный размер блока до 64 КБ. SMB2 использует 32- или 64-битные поля хранения и 128 бит в случае файловых дескрипторов, тем самым снимая предыдущие ограничения на размеры блоков, что повышает производительность при передаче больших файлов по быстрым сетям.
Windows Vista / Server 2008 и более поздние операционные системы используют SMB2 при обмене данными с другими машинами, которые также могут использовать SMB2. SMB1 продолжает использоваться для соединений со старыми версиями Windows, а также с решениями NAS различных поставщиков. Samba 3.5 также включает экспериментальную поддержку SMB2. Samba 3.6 полностью поддерживает SMB2, за исключением изменения пользовательских квот с помощью инструментов управления квотами Windows.
Когда был представлен SMB2, он принес ряд преимуществ по сравнению с SMB1 для сторонних разработчиков протоколов SMB. SMB1, первоначально разработанный IBM, был реконструирован, а позже стал частью широкого спектра операционных систем, отличных от Windows, таких как Xenix, OS / 2 и VMS (Pathworks ). X / Open частично стандартизировал его; у него также был проект стандартов IETF, срок действия которого истек. (Исторические подробности см. На http://ubiqx.org/cifs/Intro.html.) SMB2 также является относительно полным разрывом с прошлым. Код SMB1 от Microsoft должен работать с большим количеством клиентов и серверов SMB. SMB1 содержит множество версий информации для команд (выбор структуры, возвращаемой для конкретного запроса), поскольку такие функции, как поддержка Unicode, были модернизированы позже. SMB2 предполагает значительно сокращенное тестирование совместимости для разработчиков протокола. Код SMB2 имеет значительно меньшую сложность, поскольку существует гораздо меньшая изменчивость (например, пути кода, отличные от Unicode, становятся избыточными, поскольку SMB2 требует поддержки Unicode).
Apple также переходит на SMB2 (со своего собственного Apple Filing Protocol, теперь устаревшего) с OS X 10.9. Однако этот переход был чреват проблемами совместимости. Поддержка SMB2 по умолчанию появилась в OS X 10.7, когда Apple отказалась от Samba в пользу собственной реализации SMB под названием SMBX. Apple перешла на собственную реализацию SMBX после того, как Samba приняла GPLv3.
Клиентская файловая система CIFS ядра Linux имеет поддержку SMB2, начиная с версии 3.7.
SMB 2.1, представленный в Windows 7 и Server 2008 R2, привнес незначительные улучшения производительности с новым механизмом гибкой блокировки.
SMB 3.0 (ранее назывался SMB 2.2) с Windows 8 и Windows Server 2012. Он внес несколько существенных изменений, которые призваны добавить функциональность и улучшить производительность SMB2, в частности, в виртуализированных центрах обработки данных :
Он также вводит несколько улучшений безопасности, таких как сквозное шифрование и новое Алгоритм подписи на основе AES.
SMB 3.0.2 (в то время известный как 3.02) был представлен в Windows 8.1 и Windows Server 2012 R2; в этих и более поздних выпусках более раннюю версию SMB 1 можно дополнительно отключить для повышения безопасности.
SMB 3.1.1 был представлен в Windows 10 и Windows Server 2016. Эта версия поддерживает шифрование AES-128 GCM в дополнение к шифрованию AES-128 CCM, добавленному в SMB3, и реализует проверку целостности перед аутентификацией с использованием SHA -512 хеш. SMB 3.1.1 также делает обязательным безопасное согласование при подключении к клиентам, использующим SMB 2.x и выше.
SMB работает по принципу клиент-сервер, когда клиент выполняет конкретные запросы, а сервер отвечает соответственно. Один раздел протокола SMB специально занимается доступом к файловым системам, так что клиенты могут делать запросы к файловому серверу ; но некоторые другие разделы протокола SMB специализируются на межпроцессном взаимодействии (IPC). Общий ресурс межпроцессного взаимодействия (IPC) или ipc $ - это общий сетевой ресурс на компьютерах под управлением Microsoft Windows. Этот виртуальный общий ресурс используется для облегчения связи между процессами и компьютерами по SMB, часто для обмена данными между компьютерами, которые прошли проверку подлинности.
Разработчики оптимизировали протокол SMB для использования в локальной подсети, но пользователи также заставили SMB работать для доступа к различным подсетям в Интернете - эксплойты с использованием совместного использования файлов или совместное использование печати в средах MS Windows обычно ориентировано на такое использование.
Серверы SMB делают свои файловые системы и другие ресурсы доступными для клиентов в сети. Клиентским компьютерам может потребоваться доступ к совместно используемым файловым системам и принтерам на сервере, и в этой основной функции SMB стал наиболее известным и широко используемым. Однако аспект файлового сервера SMB мало что значил бы без набора протоколов доменов NT, которые, по крайней мере, обеспечивают аутентификацию на основе доменов в стиле NT. Почти все реализации серверов SMB используют аутентификацию домена NT для проверки прав доступа пользователей к ресурсам.
Использование протокола SMB часто коррелирует со значительным увеличением трафика широковещательной передачи в сети. Однако сам SMB не использует широковещательные рассылки - проблемы широковещания, обычно связанные с SMB, на самом деле возникают из-за протокола определения местоположения служб NetBIOS. По умолчанию сервер Microsoft Windows NT 4.0 использовал NetBIOS для рекламы и поиска служб. NetBIOS функционирует путем широковещательной передачи служб, доступных на определенном хосте, через равные промежутки времени. Хотя это обычно является приемлемым значением по умолчанию в сети с меньшим количеством хостов, увеличение широковещательного трафика может вызвать проблемы по мере увеличения количества хостов в сети. Реализация инфраструктуры разрешения имен в форме Windows Internet Naming Service (WINS) или системы доменных имен (DNS) решает эту проблему. WINS был частной реализацией, используемой в сетях Windows NT 4.0, но вызывал свои собственные проблемы и сложности при проектировании и обслуживании сети Microsoft.
С момента выпуска Windows 2000 использование WINS для разрешения имен не рекомендовано Microsoft, а иерархический Динамический DNS теперь настроен как протокол разрешения имен по умолчанию для всех операционных систем Windows. Разрешение (коротких) имен NetBIOS с помощью DNS требует, чтобы DNS-клиент разворачивал короткие имена, обычно путем добавления суффикса DNS для конкретного соединения к своим запросам поиска DNS. WINS по-прежнему можно настроить на клиентах в качестве вторичного протокола разрешения имен для взаимодействия с устаревшими средами и приложениями Windows. Кроме того, DNS-серверы Microsoft могут пересылать запросы разрешения имен на устаревшие WINS-серверы, чтобы поддерживать интеграцию разрешения имен с устаревшими (до Windows 2000) средами, которые не поддерживают DNS.
Разработчики сети обнаружили, что задержка оказывает значительное влияние на производительность протокола SMB 1.0, поскольку он работает хуже, чем другие протоколы, такие как FTP. Мониторинг показывает высокую степень «болтливости» и игнорирование сетевых задержек между хостами. Например, соединение VPN через Интернет часто вызывает задержку в сети. Microsoft объяснила, что проблемы с производительностью возникают главным образом из-за того, что SMB 1.0 является блочным, а не протоколом потоковой передачи, который изначально был разработан для небольших локальных сетей ; он имеет размер блока, ограниченный 64 КБ, подписывание SMB создает дополнительные накладные расходы, а размер окна TCP не оптимизирован для каналов WAN. Решения этой проблемы включают обновленный протокол SMB 2.0, автономные файлы, масштабирование окна TCP и ускорение WAN устройств от различных сетевых поставщиков, которые кэшируют и оптимизируют SMB 1.0 и 2.0.
Microsoft добавила несколько расширений в свою собственную реализацию SMB. Например, он добавил NTLM, а затем протоколы аутентификации NTLMv2, чтобы устранить слабые места в безопасности в исходной аутентификации LAN Manager. Аутентификация LAN Manager была реализована на основе требования оригинальной устаревшей спецификации SMB использовать пароли IBM «LAN Manager», но реализована DES некорректным способом, что позволяло взламывать пароли. Позже была добавлена аутентификация Kerberos. Протоколы входа в домен NT 4.0 изначально использовали 40-битное шифрование за пределами США из-за экспортных ограничений на более сильное 128-битное шифрование (впоследствии отмененное в 1996 г., когда президент Билл Клинтон подписал Указ 13026 ). Поддержка оппортунистических блокировок менялась с каждым выпуском сервера.
В 1991 году Эндрю Триджелл начал разработку Samba, повторной реализации бесплатного программного обеспечения (с использованием обратного проектирования ) сетевого протокола SMB / CIFS для Unix-подобных систем, первоначально для реализации сервера SMB, чтобы клиенты ПК, работающие с клиентом DEC Pathworks, могли доступ к файлам на машинах SunOS. Из-за важности протокола SMB для взаимодействия с широко распространенной платформой Microsoft Windows Samba стала популярной бесплатной реализацией совместимого клиента и сервера SMB, позволяющей использовать операционные системы, отличные от Windows., например, Unix-подобные операционные системы, для взаимодействия с Windows.
Начиная с версии 3 (2003), Samba предоставляет файловые службы и службы печати для клиентов Microsoft Windows и может интегрироваться с серверным доменом Windows NT 4.0 в качестве основного контроллера домена (PDC) или как член домена. Установки Samba4 могут выступать в качестве контроллера домена Active Directory или рядового сервера на функциональных уровнях домена Windows 2008 и леса.
Менеджеры пакетов в дистрибутивах Linux могут искать cifs-utils пакет. Пакет предоставлен разработчиками Samba.
NSMB (Netsmb и SMBFS) - это семейство встроенных в ядро клиентских и серверных реализаций SMB в операционных системах BSD. Впервые он был добавлен во FreeBSD 4.4 Борисом Поповым, а теперь встречается во многих других системах BSD, включая NetBSD и macOS. С тех пор реализации значительно разошлись.
Версия NSMB для macOS примечательна своей теперь распространенной схемой представления символических ссылок. В этом «миншалло-французском» формате символические ссылки отображаются в виде текстовых файлов с расширением .symlink
и магическим числом Xsym \ n
, всегда длиной 1067 байт. Этот формат также используется для хранения символических ссылок на простых серверах SMB или в неподдерживаемых файловых системах. Samba поддерживает этот формат с помощью параметра mfsymlink
. Docker в Windows, похоже, тоже его использует.
NQ - это семейство портативных реализаций SMB-клиента и сервера, разработанное Visuality Systems, израильской компанией, основанной в 1998 году Сэм Видерман, бывший генеральный директор Siemens Data Communications. Семейство NQ включает встроенный стек SMB (написанный на C), клиент SMB на чистом Java и реализацию SMB-сервера хранилища. Все решения поддерживают последнюю версию диалекта SMB 3.1.1. NQ для Linux, NQ для WinCE, iOS, Android, VxWorks и другие операционные системы реального времени поддерживаются конфигурируемым решением NQ.
MoSMB - это проприетарная реализация SMB для Linux и других Unix-подобных систем, разработанная Ryussi Technologies. Он поддерживает только SMB 2.x и SMB 3.x.
Tuxera SMB - это проприетарная реализация сервера SMB, разработанная Tuxera, которую можно запускать либо в ядро или пользовательское пространство. Он поддерживает SMB 3.1.1 и предыдущие версии.
Аналогичным образом разработали реализацию CIFS / SMB (версии 1.0, 2.0, 2.1 и NFS 3.0) еще в 2009 году, которая предоставила многопротокольную платформу с поддержкой идентификации для сетевого доступа к файлам, используемым в OEM-продукты для хранения данных, построенные на устройствах на базе Linux / Unix. Платформа может использоваться для традиционных NAS, облачных шлюзов и устройств облачного кэширования для обеспечения безопасного доступа к файлам в сети. Аналогичным образом был приобретен EMC Isilon в 2012 году.
CIFSD - это реализация встроенного сервера CIFS / SMB с открытым исходным кодом для ядра Linux. Он имеет следующие преимущества по сравнению с реализациями в пользовательском пространстве: он обеспечивает лучшую производительность и упрощает реализацию некоторых функций, таких как SMB Direct. Он поддерживает SMB 3.1.1 и предыдущие версии.
В протоколе SMB гибкая блокировка - это механизм, предназначенный для повышения производительности за счет управления кэшированием сетевых файлов клиентом. В отличие от традиционных блокировок, OpLocks не являются строго блокировкой файлов и не используются для обеспечения взаимного исключения.
Существует четыре типа гибких блокировок:
Клиенты, удерживающие OpLock, на самом деле не удерживают блокировку файла, вместо этого они получают уведомление через перерыв, когда другой клиент хочет получить доступ к файлу способом, несовместимым с их блокировкой. Запрос другого клиента задерживается, пока обрабатывается перерыв.
За прошедшие годы в реализации протокола или компонентов, на которые он напрямую полагается, Microsoft обнаружила множество уязвимостей. Уязвимости системы безопасности других производителей заключаются в основном в отсутствии поддержки новых протоколов аутентификации, таких как NTLMv2 и Kerberos в пользу протоколов, таких как NTLMv1, LanMan или пароли в виде открытого текста. Отслеживание атак в реальном времени показывает, что SMB является одним из основных векторов атак для попыток вторжения, например, атака Sony Pictures 2014 г. и атака программы-вымогателя WannaCry 2017 г. были обнаружены две уязвимости SMB высокой степени серьезности, названные SMBGhost (CVE-2020-0796 ) и SMBleed (CVE-2020-1206 ), которые при объединении в цепочку могут предоставить злоумышленнику привилегию RCE (удаленное выполнение кода).
Спецификации SMB являются частными и изначально были закрыты, что вынуждает других поставщиков и проекты перепроектировать протокол для взаимодействия с ним. Протокол SMB 1.0 был в конечном итоге опубликован через некоторое время после его реинжиниринга, тогда как протокол SMB 2.0 с самого начала был предоставлен в Центре разработчиков открытых спецификаций Microsoft MSDN. Существует ряд спецификаций, относящихся к протоколу SMB: