Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти вопросы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
В компьютерных сетях блок сообщений сервера ( SMB ), одна из версий которого также была известна как Common Internet File System ( CIFS / sɪfs / ), [ 1 ] [ 2] представляет собой коммуникационный протокол [3] для предоставления общего доступа . к файлам и принтерам между узлами в сети. Он также предоставляет механизм аутентифицированного межпроцессного взаимодействия (IPC). В большинстве случаев SMB используется на компьютерах под управлением Microsoft Windows ., где он был известен как «Сеть Microsoft Windows» до появления Active Directory . Соответствующими службами Windows являются LAN Manager Server для серверного компонента и LAN Manager Workstation для клиентского компонента. [4]
Блок сообщений сервера обеспечивает совместное использование файлов, просмотр сети, печать и межпроцессное взаимодействие (IPC) по сети.
Протокол 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 95, Windows 98 и Windows Me. NetBEUI больше не поддерживается в Windows XP и более поздних версиях. Однако протокол SMB также можно использовать без отдельного транспортного протокола непосредственно через TCP, порт 445. NetBIOS также поддерживался для нескольких устаревших протоколов, таких как IPX/SPX .
Система SMB Inter-Process Communication (IPC) предоставляет именованные каналы и была одним из первых общедоступных для программистов механизмов межпроцессного взаимодействия, который предоставляет службам средства для наследования аутентификации, выполняемой при первом подключении клиента [ требуется пояснение ] к SMB-сервер. [ нужна ссылка ]
Некоторые службы, работающие через именованные каналы, например, использующие собственную реализацию Microsoft DCE/RPC через SMB, известную как MSRPC через SMB, также позволяют клиентским программам MSRPC выполнять аутентификацию, которая переопределяет авторизацию, предоставляемую сервером SMB, но только в контексте клиентской программы MSRPC, которая успешно выполняет дополнительную проверку подлинности.
Подписание SMB : Windows NT 4.0 Service Pack 3 и более поздние версии имеют возможность использовать криптографию для цифровой подписи SMB-соединений. Наиболее распространенным официальным термином является «подписание SMB». Другими официально используемыми терминами являются «подписи безопасности [SMB]», «порядковые номера SMB» [5] и «подпись сообщений SMB». [6] Подписание SMB можно настроить отдельно для входящих соединений SMB (обрабатываемых службой «LanManServer») и исходящих соединений SMB (обрабатываемых службой «LanManWorkstation»). Настройка по умолчанию в Windows 98 и более поздних версиях — подписывать исходящие соединения всякий раз, когда сервер также поддерживает это, и отступать .на неподписанный SMB, если оба партнера разрешают это. Настройка по умолчанию для контроллеров домена Windows, начиная с Windows Server 2003 и более поздних версий, не разрешает откат для входящих подключений. [7] Эту функцию также можно включить для любого сервера под управлением Windows NT 4.0 с пакетом обновления 3 или более поздней версии. Это защищает от атак «человек посередине» на клиентов, получающих свои политики с контроллеров домена при входе в систему. [8]
SMB поддерживает уступающую блокировку — особый тип механизма блокировки — файлов для повышения производительности.
SMB служит основой для реализации распределенной файловой системы Microsoft .
Барри Фейгенбаум первоначально разработал SMB в IBM в начале 1983 года с целью превратить локальный доступ к файлам DOS INT 21h в сетевую файловую систему. [9] Microsoft внесла значительные изменения в наиболее часто используемую версию. Microsoft объединила протокол SMB с продуктом LAN Manager , который она начала разрабатывать для OS/2 вместе с 3Com примерно в 1990 году, и продолжала добавлять функции в протокол в Windows для рабочих групп ( около 1992 года ) и в более поздних версиях Windows.
Первоначально SMB был разработан для работы поверх API NetBIOS /NetBEUI (обычно реализуемого с помощью NBF , NetBIOS поверх IPX/SPX или NBT ). Начиная с Windows 2000 , SMB работает по умолчанию с тонким слоем, подобным пакету сообщений сеанса службы сеансов NBT, поверх TCP , используя TCP-порт 445, а не TCP-порт 139 — функция, известная как «прямой хост SMB». . [10]
Windows Server 2003 и более старые устройства NAS изначально используют SMB1/CIFS. 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. [11]
В 1996 году, когда Sun Microsystems объявила о WebNFS , [12] Microsoft выступила с инициативой переименовать SMB в Common Internet File System (CIFS) [9] и добавила дополнительные функции, включая поддержку символических ссылок , жестких ссылок , больших размеров файлов и первоначальная попытка поддержки прямых подключений через TCP-порт 445 без использования NetBIOS в качестве транспорта (в значительной степени экспериментальная попытка, которая потребовала дальнейшей доработки). Microsoft представила некоторые частичные спецификации в виде Internet-Drafts в IETF , [13] хотя срок их подачи истек.
Microsoft «добавила SMB1 в список устаревших Windows Server 2012 R2 в июне 2013 года». [14] В Windows Server 2016 и некоторых версиях Windows 10 Fall Creators Update по умолчанию не установлен SMB1. [15]
Microsoft представила новую версию протокола (SMB 2.0 или SMB2) в Windows Vista в 2006 году [16] и Server 2008 . Хотя протокол является частным, его спецификация была опубликована, чтобы позволить другим системам взаимодействовать с операционными системами Microsoft, использующими новый протокол. [17]
SMB2 уменьшает «болтливость» протокола SMB 1.0, уменьшая количество команд и подкоманд с более чем сотни до девятнадцати. [18] Он имеет механизмы конвейерной обработки , то есть отправки дополнительных запросов до получения ответа на предыдущий запрос, тем самым повышая производительность по каналам с высокой задержкой . Он добавляет возможность объединять несколько действий в один запрос, что значительно сокращает количество обращений клиента к серверу и обратно, в результате повышая производительность . [18] SMB1 также имеет механизм объединения, известный как AndX, для объединения нескольких действий, но клиенты Microsoft редко используют AndX. [ нужна ссылка ]Он также вводит понятие «устойчивых файловых дескрипторов»: они позволяют подключению к серверу SMB выдерживать кратковременные сбои в работе сети, типичные для беспроводной сети, без необходимости нести накладные расходы на повторное согласование нового сеанса.
SMB2 включает поддержку символических ссылок . Другие улучшения включают кэширование свойств файлов, улучшенную подпись сообщений с помощью алгоритма хеширования HMAC SHA-256 и лучшую масштабируемость за счет увеличения числа пользователей, общих ресурсов и открытых файлов на сервере, среди прочего. [18] Протокол SMB1 использует 16-битные размеры данных, что, среди прочего, ограничивает максимальный размер блока до 64 КБ. SMB2 использует 32- или 64-битные поля хранения и 128-битные в случае дескрипторов файлов , тем самым устраняя прежние ограничения на размеры блоков, что повышает производительность при передаче больших файлов по быстрым сетям. [18]
Windows Vista/ Server 2008 и более поздние операционные системы используют SMB2 при обмене данными с другими машинами, которые также могут использовать SMB2. SMB1 по-прежнему используется для соединений со старыми версиями Windows, а также с решениями NAS различных производителей. Samba 3.5 также включает экспериментальную поддержку SMB2. [19] Samba 3.6 полностью поддерживает SMB2, за исключением изменения пользовательских квот с помощью инструментов управления квотами Windows. [20]
Когда был представлен SMB2, он дал ряд преимуществ по сравнению с SMB1 для сторонних разработчиков протоколов SMB. SMB1, первоначально разработанный IBM , был реконструирован и позже стал частью большого количества операционных систем, отличных от Windows, таких как Xenix , OS/2 и VMS ( Pathworks ). X/Open частично стандартизировала его; Microsoft представила Internet-Drafts, описывающие SMB2, в IETF , частично в ответ на официальную стандартизацию IETF версии 4 сетевой файловой системы в декабре 2000 года как IETF RFC 3010. [21]; однако срок действия этих Internet-Drafts, связанных с SMB, истек без получения какого-либо одобрения IETF для отслеживания стандартов или любого другого одобрения IETF. (Исторические подробности см . на http://ubiqx.org/cifs/Intro.html .) SMB2 также представляет собой относительно чистый разрыв с прошлым. Код Microsoft SMB1 должен работать с большим количеством клиентов и серверов SMB. SMB1 предлагает множество версий информации для команд (выбор структуры, возвращаемой для конкретного запроса), потому что такие функции, как поддержка Unicode , были модифицированы позднее. SMB2 включает значительно сокращенное тестирование совместимости для разработчиков протокола. Код SMB2 имеет значительно меньшую сложность, поскольку существует гораздо меньше вариаций (например, пути кода, отличные от Unicode, становятся избыточными, поскольку SMB2 требует поддержки Unicode).
Apple перешла на SMB2 (со своего собственного Apple Filing Protocol , теперь устаревшего), начиная с OS X (MacOS) 10.9. [22] Однако этот переход был сопряжен с проблемами совместимости. [23] [24] Поддержка SMB2 не по умолчанию фактически появилась в OS X 10.7, когда Apple отказалась от Samba в пользу собственной реализации SMB под названием SMBX. [22] Apple переключилась на собственную реализацию SMBX после того, как Samba приняла GPLv3 . [25] [26] MacOS также поддерживает сетевую файловую систему IETF (NFS) в течение многих лет (и продолжает это делать с 2021 года).
Клиентская файловая система CIFS ядра Linux поддерживает SMB2, начиная с версии 3.7. [27]
В SMB 2.1, представленном в Windows 7 и Server 2008 R2, представлены незначительные улучшения производительности благодаря новому механизму уступающей блокировки. [28]
SMB 3.0 (ранее называвшийся SMB 2.2) [29] был представлен в Windows 8 [29] и Windows Server 2012 . [29] Он принес несколько существенных изменений, предназначенных для добавления функциональности и повышения производительности SMB2, [30] особенно в виртуализированных центрах обработки данных :
Он также представляет несколько улучшений безопасности, таких как сквозное шифрование и новый алгоритм подписи на основе AES . [35] [36]
SMB 3.0.2 (известный в то время как 3.02) был представлен в Windows 8.1 и Windows Server 2012 R2; [37] [38] в этих и более поздних версиях более ранняя версия SMB 1 может быть дополнительно отключена для повышения безопасности. [39] [40]
SMB 3.1.1 был представлен в Windows 10 и Windows Server 2016 . [41] Эта версия поддерживает шифрование AES-128 GCM в дополнение к шифрованию AES-128 CCM , добавленному в SMB3, и реализует проверку целостности перед аутентификацией с использованием хэша SHA-512 . SMB 3.1.1 также делает безопасное согласование обязательным при подключении к клиентам, использующим SMB 2.x и выше. [ нужна ссылка ]
В этом разделе не цитируются никакие источники . ( февраль 2019 г. ) |
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 для разрешения имен было объявлено корпорацией Майкрософт устаревшим, а иерархический динамический DNS теперь настроен как протокол разрешения имен по умолчанию для всех операционных систем Windows. Разрешение (коротких) имен NetBIOS с помощью DNS требует, чтобы клиент DNS расширял короткие имена, обычно добавляя суффикс DNS для конкретного подключения к своим запросам поиска DNS. WINS по-прежнему можно настроить на клиентах в качестве вторичного протокола разрешения имен для взаимодействия с устаревшими средами и приложениями Windows. Кроме того, DNS-серверы Microsoft могут перенаправлять запросы на разрешение имен на устаревшие WINS-серверы, чтобы поддерживать интеграцию разрешения имен с устаревшими (до Windows 2000) средами, которые не поддерживают DNS.
Разработчики сети обнаружили, что задержка оказывает значительное влияние на производительность протокола SMB 1.0, что он работает хуже, чем другие протоколы, такие как FTP . Мониторинг показывает высокую степень «болтливости» и игнорирование сетевой задержки между хостами. [18] Например, VPN -подключение через Интернет часто вызывает задержку в сети. Microsoft объяснила, что проблемы с производительностью возникают в первую очередь из-за того, что SMB 1.0 — это блочный, а не потоковый протокол, который изначально был разработан для небольших локальных сетей ; у него размер блока ограничен 64 КБ, подпись SMB создает дополнительные накладные расходы, аРазмер окна TCP не оптимизирован для каналов WAN. [42] Решения этой проблемы включают обновленный протокол SMB 2.0, [43] Offline Files , масштабирование окна TCP и устройства ускорения WAN от различных сетевых поставщиков, которые кэшируют и оптимизируют SMB 1.0 [44] и 2.0. [45]
Microsoft добавила несколько расширений к собственной реализации SMB. Например, был добавлен NTLM , за которым следуют протоколы аутентификации NTLMv2, чтобы устранить уязвимость в системе безопасности исходной аутентификации LAN Manager . Аутентификация LAN Manager была реализована на основе исходного требования устаревшей спецификации SMB об использовании паролей IBM «LAN Manager», но реализовывала DES ошибочным образом , что позволяло взламывать пароли. [46] Позднее была добавлена аутентификация Kerberos . Протоколы входа в домен NT 4.0 изначально использовали 40-битное шифрование за пределами США ., из-за экспортных ограничений на более сильное 128-битное шифрование [47] (впоследствии снятые в 1996 году, когда президент Билл Клинтон подписал Исполнительный указ 13026 [48] ). Поддержка уступающей блокировки менялась с каждым выпуском сервера.
Этот раздел необходимо обновить . ( апрель 2016 г. ) |
В 1991 году Эндрю Триджелл начал разработку Samba, бесплатной программной повторной реализации (с использованием обратного проектирования ) сетевого протокола SMB/CIFS для Unix-подобных систем, первоначально для реализации сервера SMB, позволяющего ПК-клиентам запускать DEC Pathworks . клиент для доступа к файлам на машинах SunOS . [9] [49] Из-за важности протокола SMB для взаимодействия с широко распространенной платформой Microsoft Windows , Samba стала популярной бесплатной программной реализацией совместимого клиента и сервера SMB, позволяющей использовать операционные системы, отличные от Windows, такие как Unix-подобные . операционных систем для взаимодействия с Windows.
Начиная с версии 3 (2003 г.), Samba предоставляет службы файлов и печати для клиентов Microsoft Windows и может интегрироваться с серверным доменом Windows NT 4.0 либо в качестве основного контроллера домена (PDC), либо в качестве члена домена. Установки Samba4 могут действовать как контроллер домена Active Directory или рядовой сервер на функциональных уровнях домена Windows 2008 и леса . [50]
Менеджеры пакетов в дистрибутивах Linux могут искать пакет cifs-utils . Пакет предоставлен мейнтейнерами Samba.
NSMB ( Netsmb и SMBFS ) — это семейство встроенных в ядро реализаций SMB-клиента и сервера в операционных системах BSD. Впервые он был добавлен в FreeBSD 4.4 Борисом Поповым, и теперь он встречается в большом количестве других систем BSD, включая NetBSD и macOS . [51] С тех пор реализации значительно разошлись. [52]
Версия NSMB для macOS отличается общепринятой схемой представления символических ссылок. Этот формат «Minshall-French» показывает символические ссылки в виде текстовых файлов с .symlink
расширением и Xsym\n
магическим числом, всегда длиной 1067 байт. Этот формат также используется для хранения символических ссылок на простых SMB-серверах или в неподдерживаемых файловых системах. Samba поддерживает этот формат с mfsymlink
опцией. [53] Похоже, что Docker в Windows тоже его использует. [ нужна ссылка ]
NQ — это семейство портативных клиентов и серверов для малого и среднего бизнеса, разработанных Visuality Systems , израильской компанией, основанной в 1998 году Сэмом Видерманом, бывшим генеральным директором Siemens Data Communications. Семейство NQ включает в себя встроенный стек SMB (написанный на C), SMB-клиент Pure 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. [54]
Tuxera SMB — это проприетарная реализация сервера SMB, разработанная Tuxera , которая может работать как в ядре, так и в пользовательском пространстве . [55] Он поддерживает SMB 3.1.1 и предыдущие версии.
Аналогичным образом в 2009 году была разработана реализация CIFS/SMB (версии 1.0, 2.0, 2.1 и NFS 3.0), которая предоставила многопротокольную платформу с идентификацией для сетевого доступа к файлам, используемым в продуктах хранения OEM , созданных на устройствах на базе Linux/Unix. Платформу можно использовать для традиционных устройств NAS, облачного шлюза и облачного кэширования для обеспечения безопасного доступа к файлам по сети. Аналогично был куплен EMC Isilon в 2012 году.
CIFSD — это реализация сервера CIFS/SMB в ядре с открытым исходным кодом для ядра Linux. Он имеет следующие преимущества по сравнению с реализациями в пользовательском пространстве: он обеспечивает более высокую производительность и упрощает реализацию некоторых функций, таких как SMB Direct. Он поддерживает SMB 3.1.1 и предыдущие версии.
В протоколе SMB уступающая блокировка — это механизм, предназначенный для повышения производительности за счет контроля кэширования сетевых файлов клиентом. [56] В отличие от традиционных блокировок , OpLock не является строгой блокировкой файлов и не используется для обеспечения взаимного исключения.
Существует четыре типа оппортунистических блокировок:
Клиенты, удерживающие OpLock, на самом деле не блокируют файл, вместо этого они уведомляются через прерывание , когда другой клиент хочет получить доступ к файлу способом, несовместимым с их блокировкой. Запрос другого клиента задерживается на время обработки прерывания.
За прошедшие годы в реализации Microsoft протокола или компонентов, на которые он напрямую опирается, было много уязвимостей безопасности. [58] [59] Уязвимости безопасности других поставщиков заключаются прежде всего в отсутствии поддержки более новых протоколов аутентификации, таких как NTLMv2 и Kerberos , в пользу таких протоколов, как NTLMv1, LanMan или незашифрованных паролей. Отслеживание атак в режиме реального времени [60] показывает, что SMB является одним из основных векторов атак для попыток вторжения, [61] например , атака Sony Pictures в 2014 году [62] и атака программы- вымогателя WannaCry.от 2017 г. [63] В 2020 г. были обнаружены две уязвимости высокой степени серьезности в SMB, получившие название SMBGhost ( CVE-2020-0796 ) и SMBleed ( CVE-2020-1206 ), которые при объединении в цепочку могут обеспечить RCE (удаленное выполнение кода) привилегия злоумышленника. [64]
Этот раздел нуждается в дополнении : WSPP [1] , PFIF [2] . Вы можете помочь, дополнив его . ( январь 2014 г. ) |
Спецификации для SMB являются проприетарными и изначально закрытыми, что вынуждает других поставщиков и проекты перепроектировать протокол, чтобы взаимодействовать с ним. Протокол SMB 1.0 был в конечном итоге опубликован через некоторое время после того, как он был реконструирован, тогда как протокол SMB 2.0 с самого начала был доступен в Центре разработчиков открытых спецификаций Microsoft MSDN. [65] Существует ряд спецификаций, относящихся к протоколу SMB:
Подписи безопасности (порядковые номера SMB)
В этой статье рассматривается [...] подписывание сообщений Server Message Block (SMB).
По умолчанию подпись SMB требуется для входящих сеансов SMB на контроллерах домена под управлением Windows Server 2003.
Этот механизм безопасности в протоколе SMB помогает избежать таких проблем, как фальсификация пакетов и атаки типа «человек посередине». [...] Подписание SMB доступно во всех поддерживаемых в настоящее время версиях Windows, но по умолчанию оно включено только на контроллерах домена. Это рекомендуется для контроллеров домена, поскольку SMB — это протокол, используемый клиентами для загрузки информации о групповой политике. Подписание SMB позволяет гарантировать, что клиент получает подлинную групповую политику.