Server Message Block

Материал из Википедии — свободной энциклопедии
(перенаправлено с «SMB»)
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 18 мая 2022 года; проверки требуют3 правки.
Перейти к навигацииПерейти к поиску

SMB (сокр. отангл. Server Message Block) —сетевой протоколприкладного уровня для удалённого доступа кфайлам,принтерам и другим сетевым ресурсам, а также длямежпроцессного взаимодействия. Первая версия протокола, также известная как Common Internet File System (CIFS) (Единая файловая система Интернета), была разработана компаниямиIBM,Microsoft,Intel и3Com в 1980-х годах; вторая (SMB 2.0) была создана Microsoft и появилась вWindows Vista. В настоящее время SMB связан главным образом с операционными системамиMicrosoft Windows, где используется для реализации «Сети Microsoft Windows» (англ. Microsoft Windows Network) и «Совместного использования файлов и принтеров» (англ. File and Printer Sharing).

Содержание

История

[править |править код]

Первая версия протокола была разработана сотрудникомIBM Бэрри Файгенбаумом (англ. Barry Feigenbaum) в1983 году[1][2]. Изначально SMB был реализован черезNetBIOS (поверхNBF,IPX/SPX илиNetBIOS over TCP/IP) и использовался в сетяхMS-NET иLAN Manager дляDOS, а также вWindows for Workgroups. Microsoft регулярно дополняла протокол новыми возможностями; так, вторая версия Microsoft Networks SMB File Sharing Protocol Extensions появилась в1988 году, 3-я версия — в1989 году, версия 3.4 — в 1992[3].

В1992 году появиласьSamba —свободная реализация протокола SMB дляUNIX-подобных операционных систем (изначально дляSunOS). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провестиобратную разработку протокола.

В1996 году Microsoft стала использовать новое название для дополненной версии протокола, которая использовалась вWindows NT 4.0 —CIFS (англ. Common Internet File System); новое имя прижилось, SMB и CIFS фактически стали синонимами[2]. Microsoft некоторое время пыталась превратить CIFS в международный стандарт черезIETF, но после2000 года прекратила работу по стандартизации.

ВWindows 2000 впервые появился SMB непосредственно поверхTCP (без NetBIOS); для этого используетсяпорт 445 (SMB черезNBT использовал порт 139).

ВWindows Vista появилась новая версия протокола —SMB 2.0. Протокол был значительно упрощён (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования возможно совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера[4]. SMB 2 использует тот же порт (445) как и SMB, но другой заголовокпакетов (0xFF 'S' 'M' 'B' в SMB,0xFE 'S' 'M' 'B' в SMB 2)[5].

ВWindows 8 появилась новая версия протокола —SMB 3.0. Новые возможностиизложены на сайте разработчиков.

В 2008 году под давлениемЕврокомиссии Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайтеMSDN[6].

Принцип работы

[править |править код]

SMB — это протокол, основанный на технологииклиент-сервер, который предоставляет клиентским приложениям простой способ для чтения и записи файлов, а также запроса служб у серверных программ в различных типах сетевого окружения. Серверы предоставляют файловые системы и другие ресурсы (принтеры, почтовые сегменты, именованные каналы и т. д.) для общего доступа в сети. Клиентские компьютеры могут иметь у себя свои носители информации, но также имеют доступ к ресурсам, предоставленным сервером для общего пользования.

Клиенты соединяются с сервером, используя протоколыTCP/IP (а, точнее,NetBIOS черезTCP/IP),NetBEUI илиIPX/SPX. После того, как соединение установлено, клиенты могут посылать команды серверу (эти команды называются SMB-команды или SMBs), который даёт им доступ к ресурсам, позволяет открывать, читать файлы, писать в файлы и вообще выполнять весь перечень действий, которые можно выполнять с файловой системой. Однако в случае использования SMB эти действия совершаются через сеть.

Как было сказано выше, SMB работает, используя различныепротоколы. Всетевой модели OSI протокол SMB используется как протокол Application/Presentation уровня и зависит от низкоуровневых транспортных протоколов. SMB может использоваться черезTCP/IP,NetBEUI иIPX/SPX. ЕслиTCP/IP илиNetBEUI будут заняты, то будет использоваться NetBIOS API. SMB также может посылаться через протоколDECnet. Digital (нынеCompaq) сделала это специально для своего продукта PATHWORKS. NetBIOS в случае использования через TCP/IP имеет различные названия.Microsoft называет его в некоторых случаяхNBT, а в некоторыхNetBT. Также встречается названиеRFCNB.

С начала существования SMB было разработано множество различных вариантов протокола для обработки всё возрастающей сложности компьютерной среды, в которой он использовался. Договорились, что реальный вариант протокола, который будет использоваться клиентом и сервером, будет определяться командой negprot (negotiate protocol). Этот SMB обязан посылаться первым до установления соединения. Первым вариантом протокола был Core Protocol, известный как SMB-реализация PC NETWORK PROGRAM 1.0. Он должным образом поддерживает весь набор основных операций, который включает в себя:

  • присоединение к файловым и принтерным ресурсам и отсоединение от них;
  • открытие и закрытие файлов;
  • открытие и закрытие принтерных файлов;
  • чтение и запись файлов;
  • создание и удаление файлов и каталогов;
  • поиск каталогов;
  • получение и установление атрибутов файла;
  • блокировка и разблокировка файлов.

Формат заголовка SMB

[править |править код]
8162432 bits
IDF
CommandRCLSReservedERR
ERR (cont)REB/FLGReserved
Reserved
Reserved
Reserved
Tree IDProcess ID
User IDMultiplex ID
WCTVWV
BCCBUF
SMB header structure

Основные элементы структуры заголовка SMB:
   •IDF (Identifier) — Идентификатор протокола: 0xff, 0x53('S'), 0x4d('M'), 0x42('B').
   •Command — команда протокола.
   •RCLS — код класса ошибки.
   •ERR — код ошибки.
   •Tree ID (TID) — идентификатор соединения с сетевым ресурсом.
   •Process ID (PID) — идентификатор клиентского процесса фактического соединения.
   •User ID (UID) — идентификатор пользователя; используется сервером для проверки прав доступа пользователя.
   •Multiplex ID (MID) — идентификатор группы пользователя; используется сервером для проверки прав доступа группы пользователя.
   •WCT — количество параметров, следующих за заголовком.
   •BCC — количество байт данных, следующих за параметрами.

Аутентификация Microsoft SMB Protocol

[править |править код]

Модель механизма защиты, которая используется в Microsoft SMB Protocol, в основном идентична модели любого другого варианта SMB-протокола. Она состоит из двух уровней защиты: user-level (пользовательский уровень) и share-level (уровень совместно используемого ресурса). Под share (опубликованный ресурс) понимается файл, каталог, принтер, любая услуга, которая может быть доступна клиентам по сети.

Аутентификация на уровне user-level означает, что клиент, который пытается получить доступ к ресурсу на сервере, должен иметь username (имя пользователя) и password (пароль). Если данная аутентификация прошла успешно, клиент имеет доступ ко всем доступным ресурсам сервера, кроме тех, что с share-level-защитой. Этот уровень защиты даёт возможность системным администраторам конкретно указывать, какие пользователи и группы пользователей имеют доступ к определённым данным. Он используется вWindows NT,Windows 2000,Windows XP.

Аутентификация на уровне share-level означает, что доступ к ресурсу контролируется паролем, установленным конкретно на этот ресурс. В отличие от user-level, этот уровень защиты не требует имя пользователя для аутентификации и не устанавливается никакая уникальность текущего пользователя. Этот уровень используется в Windows NT, Windows 2000 и Windows XP для обеспечения дополнительного уровня контроля защиты сверх user-level. Операционные системыWindows 95,Windows 98 иWindows ME реализуют защиту только этого уровня.

В обоих этих уровнях защиты используется шифрование. Пароль зашифровывается, прежде чем отправляется на сервер. Типы шифрованияNTLM,NTLMv2 и старые версииLAN Manager (LM) поддерживаются протоколом. Оба метода шифрования используют аутентификацию типа отклик-отзыв, в которой сервер посылает клиенту случайную сгенерированную строку, а клиент возвращает в качестве отзыва обработанную строку, которая доказывает, что клиент имеет достаточный мандат для доступа к данным.

Безопасность

[править |править код]

На протяжении всего срока эксплуатации эталонной реализации протокола от Microsoft специалистами по информационной безопасности выявлялись уязвимости, позволяющие успешно провести сетевую атаку на удалённый узел.[7][8][9] Организация атаки на незащищённые серверы SMB является одной из наиболее привлекательных среди злоумышленников[10]. Так, например, с помощью использования уязвимостей протокола SMB были осуществленывзлом серверов Sony Pictures Entertainment[11] и распространение вредоносного ПОDoublePulsar,WannaCry[12] (уязвимостьEternalBlue) иPetya[13].

См. также

[править |править код]

Примечания

[править |править код]
  1. Christopher R. Hertel. SMB Filesharing URL Scheme (англ.) (8 января 2003). Дата обращения: 21 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  2. 12Andrew Tridgell. Myths About Samba (англ.). Дата обращения: 2 июня 2011. Архивировано изоригинала 3 июня 2012 года.
  3. Dan Shearer. History of SMB (англ.) (16 ноября 1996). Дата обращения: 21 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  4. Joseph Barreto. SMB2, a complete redesign of the main remote file protocol for Windows (англ.) (9 декабря 2008). Дата обращения: 22 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  5. SMB2  (неопр.). Wireshark. Дата обращения: 22 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  6. [MS-CIFS]: Common Internet File System (CIFS) Protocol (англ.). Дата обращения: 11 августа 2015. Архивировано 5 ноября 2015 года.
  7. MS02-070: Flaw in SMB Signing May Permit Group Policy to Be Modified  (неопр.). Microsoft (1 декабря 2007). Дата обращения: 1 ноября 2009. Архивировано 25 июля 2017 года.
  8. MS09-001: Vulnerabilities in SMB could allow remote code execution  (неопр.). Microsoft (13 января 2009). Дата обращения: 1 ноября 2009. Архивировано 5 октября 2009 года.
  9. Microsoft Security Bulletin MS17-010 – Critical  (неопр.). technet.microsoft.com. Дата обращения: 13 мая 2017. Архивировано 21 мая 2017 года.
  10. Alert (TA14-353A) Targeted Destructive Malware  (неопр.). US-CERT. Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
  11. Sony Hackers Used Server Message Block (SMB) Worm Tool  (неопр.). Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
  12. WannaCry Ransomware Attack Hits Victims With Microsoft SMB Exploit.eWeek. Дата обращения: 13 мая 2017.
  13. Petya ransomware virus is back amid cyber attack: Swiss agency.Reuters. Tue Jun 27 14:50:10 UTC 2017.Архивировано 2017-06-27. Дата обращения:2017-06-27.{{cite news}}:Проверьте значение даты:|date= (справка)

Ссылки

[править |править код]
Перейти к шаблону «Компоненты Microsoft Windows»
Основные
Службы
управления
Приложения
Win32
UWP
Исторические
Игры
Ядро ОС
Службы
Файловые
системы
Серверы
Архитектура
Безопасность
Совместимость
Перейти к шаблону «Схемы URI»
СхемыURI
Официальные
Неофициальные
Перейти к шаблону «Файловые системы»
Дисковые
Оптические диски
Флеш-память/SSD
Кластерные
Распределённые
(сетевые)
Специальные
Псевдо- и виртуальные
Шифрованные
Источник —https://ru.wikipedia.org/w/index.php?title=Server_Message_Block&oldid=138976568
Категории:
Скрытые категории: