Главнейшая дорога человеческого воспитания есть убеждение (К.Д. Ушинский).

SMB

SMB (Server Message Block) — это сетевой протокол, предназначенный прежде всего для совместного использования файлов, каталогов, принтеров и других сетевых ресурсов. С его помощью один компьютер может обращаться к ресурсам другого компьютера через сеть практически так же, как к локальным ресурсам. Протокол используется в первую очередь в Windows-инфраструктуре, но поддерживается и Linux, macOS, NAS-устройствами и большим количеством другого сетевого программного обеспечения.

На практике пользователь может даже не замечать, что работает именно с SMB. Например, когда в проводнике Windows открывается адрес вида \\server\documents, компьютер устанавливает сетевое соединение с SMB-сервером и получает доступ к опубликованному ресурсу. Файлы при этом физически находятся на удалённом сервере, а операции чтения, записи, создания и удаления выполняются через сетевые запросы.

Современные версии SMB представляют собой значительно более развитый протокол по сравнению с ранними реализациями. Microsoft описывает SMB 2 и SMB 3 как протоколы для доступа к файловым и принтерным службам, а также к именованным каналам для межпроцессного взаимодействия. SMB является состояниевым протоколом: клиент устанавливает соединение, создаёт аутентифицированный контекст и затем выполняет различные операции в рамках этого соединения.

Для чего нужен SMB

Основная задача SMB — организовать взаимодействие между сетевым клиентом и сервером, предоставляющим определённые ресурсы. Чаще всего речь идёт о файлах и каталогах, но возможности протокола этим не ограничиваются.

С помощью SMB можно:

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

Как работает SMB

В упрощённом виде взаимодействие SMB можно представить как работу клиента и сервера. Клиентом является компьютер или приложение, которому необходим доступ к ресурсу. Сервером выступает система, предоставляющая этот ресурс.

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

Далее клиент может отправлять серверу различные команды. Например, он может запросить открытие файла, чтение определённого диапазона данных, запись информации, создание каталога или закрытие файла.

Упрощённая последовательность выглядит следующим образом:

  1. клиент находит SMB-сервер;
  2. устанавливается сетевое соединение;
  3. клиент и сервер согласуют диалект SMB;
  4. происходит установление сессии и аутентификация;
  5. клиент подключается к конкретному сетевому ресурсу;
  6. выполняются операции с файлами, каталогами или другими ресурсами;
  7. соединение закрывается либо сохраняется для дальнейшей работы.

Что такое SMB-сервер и SMB-клиент

SMB-сервер — это программная или аппаратная система, которая предоставляет ресурсы через SMB. Это может быть компьютер с Windows Server, обычный Windows-компьютер с включённым общим доступом, Linux-сервер с Samba, NAS или специализированное файловое устройство.

SMB-клиент — система или программа, которая обращается к этим ресурсам. Например, проводник Windows может выступать SMB-клиентом при открытии сетевой папки. Linux также может работать как SMB-клиент, подключаясь к ресурсам Windows или другого SMB-сервера.

Важно понимать, что SMB — это именно протокол, а не конкретная программа. Например, Samba является реализацией SMB для Unix-подобных систем. Поэтому утверждение «Samba и SMB — одно и то же» технически неверно: SMB — протокол, а Samba — программный комплекс, реализующий его и связанные с ним функции.

Что такое сетевой ресурс SMB

Сервер обычно не предоставляет клиенту всю файловую систему целиком. Вместо этого он публикует отдельные ресурсы, которые в Windows часто называются общими папками или shares.

Например, на сервере может существовать физический каталог:

/srv/company/documents

Администратор может опубликовать его по SMB с именем documents. Пользователь Windows в таком случае обращается к ресурсу примерно так:

\\fileserver\documents

Имя fileserver обозначает SMB-сервер, а documents — опубликованный ресурс. При этом фактическое расположение каталога на сервере пользователю знать необязательно.

Один сервер может предоставлять большое количество SMB-ресурсов с разными правилами доступа.

SMB и версии протокола

SMB развивался на протяжении нескольких десятилетий. Поэтому под названием SMB фактически понимается семейство версий и диалектов протокола.

Исторически большое распространение получил SMB1, который также связан с названием CIFS. Позднее появился SMB2, представляющий собой существенную переработку протокола. Затем был разработан SMB3 с дополнительными возможностями для производительности, отказоустойчивости и безопасности.

Современная документация Samba указывает SMB2 и SMB3 как актуальные уровни протокола, при этом автоматическое согласование позволяет клиенту и серверу определить совместимый вариант. В актуальной конфигурации Samba минимальным серверным протоколом по умолчанию является SMB2_02, а максимальным — SMB3.

У SMB3 существует несколько диалектов, включая SMB 3.0, SMB 3.0.2 и SMB 3.1.1. В SMB 3.1.1 были добавлены современные механизмы согласования алгоритмов шифрования и целостности, усилена защита установления соединения, а также предусмотрены возможности сжатия сообщений и работы через дополнительные транспортные механизмы.

Почему SMB1 считается устаревшим

SMB1 создавался в эпоху, когда компьютерные сети значительно отличались от современных. Впоследствии протокол был расширен и заменён более современными версиями SMB2 и SMB3.

Главная проблема старого протокола заключается не только в возрасте, но и в его архитектурных ограничениях и безопасности. Поэтому современные системы стараются использовать SMB2 или SMB3 и не включать SMB1 без необходимости.

В Samba автоматическое согласование протокола позволяет не задавать старую версию вручную в обычной конфигурации. В документации отдельно отмечается, что возвращаться к SMB1 имеет смысл только при необходимости совместимости с устаревшими клиентами или серверами.

Если старое устройство работает исключительно с SMB1, проблема обычно заключается именно в совместимости устаревшего оборудования или программного обеспечения. Включение SMB1 следует рассматривать как отдельное исключение, а не как стандартный вариант настройки современной сети.

SMB и CIFS — это одно и то же?

Термины SMB и CIFS часто встречаются рядом, но полностью отождествлять их не стоит. CIFS исторически использовался для обозначения расширенной реализации SMB, связанной с определённым поколением протокола.

В старой документации Samba можно встретить обозначение NT1, которое связано с SMB1 и традиционно называется CIFS. Современные реализации используют SMB2 и SMB3, поэтому термин SMB сегодня является более подходящим для обозначения актуального протокольного семейства.

Как происходит подключение к SMB

Подключение к SMB-ресурсу состоит из нескольких логических этапов. Сначала клиент должен связаться с сервером. Затем необходимо согласовать параметры протокола и создать сессию.

После аутентификации клиент подключается к конкретному ресурсу. В терминологии SMB этот этап связан с подключением к шару, то есть опубликованному ресурсу сервера.

После этого можно выполнять операции с объектами файловой системы. Клиент может открывать файлы, читать и записывать данные, изменять атрибуты, создавать каталоги и выполнять другие предусмотренные протоколом действия.

SMB является состояниевым протоколом, поэтому сервер и клиент поддерживают определённый контекст соединения и сессии. Это отличает его от очень простой схемы «отправил один запрос — получил один независимый ответ».

SMB-аутентификация и права доступа

Наличие сетевого соединения с SMB-сервером ещё не означает наличие доступа ко всем файлам. Сервер должен определить, кто именно обращается к ресурсу и какие действия этому пользователю разрешены.

В зависимости от инфраструктуры могут использоваться локальные учетные записи, доменная аутентификация и механизмы Active Directory. После успешной аутентификации сервер сопоставляет пользователя с разрешениями, установленными для конкретного ресурса и файловой системы.

Таким образом, при попытке открыть файл могут одновременно учитываться:

  • учётная запись пользователя;
  • членство пользователя в группах;
  • разрешения самого SMB-ресурса;
  • права файловой системы;
  • ACL и дополнительные правила безопасности;
  • ограничения, установленные администратором сервера.

SMB и права Windows

Одним из важных преимуществ SMB является возможность работать с моделью разрешений, привычной для Windows. В корпоративных сетях пользователю необязательно предоставлять доступ непосредственно к каждому отдельному файлу. Вместо этого права могут назначаться группам.

Например, ресурс может быть доступен группе бухгалтерии на чтение и запись, группе руководителей — на чтение и изменение, а остальным пользователям — полностью закрыт.

При использовании Linux-сервера с Samba дополнительно возникает связь между моделью разрешений SMB и Unix-представлением прав доступа. Поэтому администратор должен учитывать оба уровня.

Порт SMB

В современных сетях основным вариантом работы SMB является непосредственная передача через TCP/IP. Для SMB через Direct TCP используется TCP-порт 445. Microsoft указывает Direct TCP среди транспортов, поддерживаемых SMB2, наряду с некоторыми другими транспортными механизмами.

Старые реализации могли использовать NetBIOS over TCP/IP, связанный с портом 139 и механизмами, описанными в RFC 1001 и RFC 1002. Эти технологии относятся к более ранним вариантам сетевой архитектуры SMB.

Поэтому в современной локальной сети при диагностике SMB-соединения в первую очередь проверяют доступность TCP-порта 445.

SMB и безопасность

Поскольку SMB обеспечивает доступ к данным, безопасность протокола имеет большое значение. Неправильно настроенный файловый сервер может предоставить пользователям больше прав, чем предполагалось, или открыть доступ к конфиденциальной информации.

Современные версии SMB предусматривают механизмы защиты целостности и конфиденциальности данных. В частности, SMB3 поддерживает шифрование трафика. В документации Samba указано, что нативное шифрование SMB доступно начиная с SMB 3.0, а для SMB3.1.1 предусмотрены современные алгоритмы согласования шифрования и целостности.

При настройке SMB-сервера необходимо учитывать несколько основных принципов:

  • не использовать SMB1 без крайней необходимости;
  • ограничивать доступ к SMB-серверу на уровне межсетевого экрана;
  • не предоставлять сетевые папки в Интернет без необходимости;
  • использовать современные механизмы аутентификации;
  • ограничивать права пользователей и групп;
  • контролировать настройки SMB signing и шифрования;
  • регулярно обновлять операционную систему и реализацию SMB.

SMB signing

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

Это особенно важно для корпоративных сетей, где между клиентом и сервером могут существовать различные сетевые сегменты и потенциальные угрозы перехвата или изменения трафика.

Подпись и шифрование решают разные задачи. Подпись помогает контролировать целостность и подлинность сообщений, а шифрование скрывает содержимое передаваемых данных от постороннего наблюдателя.

Шифрование SMB

SMB3 добавил возможность шифровать сетевой трафик непосредственно на уровне протокола. Это позволяет защищать содержимое SMB-сессий без необходимости полностью полагаться на внешний VPN-канал.

В Samba соответствующие параметры позволяют управлять тем, будет ли шифрование только предлагаться, использоваться при необходимости или требоваться обязательно. При обязательном режиме клиенты, которые не способны работать с требуемым шифрованием, не получают доступ к соответствующему ресурсу.

Выбор режима зависит от архитектуры сети, используемых клиентов и требований безопасности. Включение современных механизмов защиты особенно важно при работе с конфиденциальными данными.

SMB Multichannel

В SMB3 появилась возможность использовать несколько сетевых каналов для одной SMB-сессии. Такой механизм называется SMB Multichannel.

Он позволяет клиенту и серверу использовать несколько сетевых соединений, если инфраструктура и реализации поддерживают соответствующую функцию. Это может быть полезно для повышения пропускной способности и отказоустойчивости сетевого доступа.

Актуальная документация Samba указывает поддержку SMB3 Multichannel в серверном компоненте, причём для Linux и FreeBSD соответствующая возможность включена по умолчанию в современных версиях Samba.

SMB и сетевой диск

Одним из наиболее привычных пользователю вариантов применения SMB является подключение сетевого диска. Windows может сопоставить SMB-ресурс с буквой диска, например Z:.

После этого пользователь видит ресурс практически так же, как локальный диск. Однако операции фактически выполняются через сеть.

Это удобно для офисов и домашних сетей, поскольку документы можно хранить централизованно. При этом производительность зависит от скорости сети, характеристик сервера, дисковой подсистемы и особенностей конкретного SMB-клиента.

SMB в Linux

Хотя SMB тесно связан с Windows, Linux активно использует этот протокол. Для реализации SMB-сервера часто применяется Samba, а для подключения к удалённым SMB-ресурсам существуют клиентские инструменты и средства монтирования.

Например, Linux-система может подключить Windows-шару к локальному каталогу и предоставить приложениям доступ к ней через привычный путь файловой системы.

Это позволяет использовать SMB в смешанной инфраструктуре, где серверы работают на Linux, а рабочие станции — на Windows, или наоборот.

SMB и Samba

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

Например, если на Linux-сервере установлен Samba, он может предоставлять каталог по SMB. Windows-компьютер подключается к этому каталогу как SMB-клиент. Таким образом, протокол обеспечивает взаимодействие, а Samba выступает одной из программных реализаций серверной и клиентской части.

Официальная документация Samba содержит отдельные материалы по SMB, CIFS, конфигурации протокола и его реализации.

Где используется SMB

SMB получил широкое распространение благодаря тому, что подходит как для небольшой локальной сети, так и для крупной корпоративной инфраструктуры.

Типичные варианты использования включают:

  • домашние файловые серверы;
  • офисные файловые хранилища;
  • NAS-устройства;
  • серверы Windows;
  • Linux-серверы с Samba;
  • корпоративные системы хранения документов;
  • смешанные Windows/Linux-сети;
  • системы виртуализации и инфраструктурные сервисы, использующие SMB-хранилища.

Преимущества SMB

Главное преимущество SMB заключается в широкой распространённости и развитой функциональности. Протокол поддерживается большим количеством операционных систем и сетевых устройств, поэтому его удобно использовать в неоднородной инфраструктуре.

К основным преимуществам можно отнести:

  • широкую поддержку в Windows;
  • наличие реализаций для Linux и других ОС;
  • поддержку файловых и принтерных ресурсов;
  • механизмы аутентификации и авторизации;
  • интеграцию с доменными системами;
  • современные механизмы шифрования и защиты целостности;
  • поддержку высокопроизводительных возможностей SMB3.

Ограничения и особенности SMB

Несмотря на широкое применение, SMB нельзя считать универсальным протоколом для любых задач. Он прежде всего ориентирован на сетевые файловые и связанные с ними сервисы.

Кроме того, производительность SMB зависит от сетевой задержки, пропускной способности канала, производительности дисков, параметров сервера и клиента. Работа с большим количеством небольших файлов может заметно отличаться по скорости от передачи одного крупного файла.

Ещё одна особенность заключается в совместимости версий. Старое устройство может поддерживать только SMB1, тогда как современный сервер по соображениям безопасности работает с SMB2 или SMB3. В такой ситуации необходимо искать обновление или другой способ интеграции, а не без необходимости переводить всю инфраструктуру на устаревший протокол.

Выводы

SMB — это сетевой протокол для доступа к файлам, каталогам, принтерам и другим ресурсам. Он лежит в основе привычной для пользователей Windows работы с сетевыми папками и широко применяется в локальных и корпоративных сетях.

Современный SMB существенно отличается от ранних реализаций. SMB2 стал крупной переработкой протокола, а SMB3 добавил дополнительные возможности для производительности, отказоустойчивости и безопасности. В частности, современные версии поддерживают механизмы шифрования, подписи, Multichannel и другие функции.

При этом важно различать SMB и Samba. SMB — это протокол, а Samba — программный комплекс, который позволяет Linux и другим Unix-подобным системам работать с SMB-ресурсами.

Для современной инфраструктуры основными версиями следует считать SMB2 и SMB3. SMB1 относится к устаревшему поколению протокола и должен использоваться только в тех случаях, когда это действительно необходимо для совместимости со старым оборудованием или программным обеспечением.

FAQ

Что такое SMB простыми словами?

SMB — это сетевой протокол, с помощью которого компьютеры могут обращаться к файлам, папкам, принтерам и другим ресурсам, расположенным на другом компьютере или сетевом устройстве.

Для чего нужен протокол SMB?

Основное назначение SMB — сетевой доступ к файлам и каталогам. Кроме того, протокол поддерживает принтеры, именованные каналы и другие сетевые ресурсы.

SMB — это программа?

Нет. SMB является протоколом, то есть набором правил сетевого взаимодействия. Программами являются его реализации, например Samba в Linux и соответствующие компоненты Windows.

Что такое Samba и чем она отличается от SMB?

Samba — программный комплекс с поддержкой SMB. SMB определяет правила взаимодействия клиента и сервера, а Samba реализует эти правила в программном обеспечении.

Какой порт использует SMB?

В современных сетях основным является TCP-порт 445 для SMB через Direct TCP. Старые конфигурации могли использовать NetBIOS over TCP/IP и порт 139.

Что такое SMB1?

SMB1 — ранняя версия протокола, исторически связанная с CIFS. В современных системах она считается устаревшей, поэтому обычно используются SMB2 и SMB3.

Чем SMB2 отличается от SMB1?

SMB2 является существенно переработанной версией протокола с другой структурой сообщений и более современным механизмом взаимодействия. Он стал основой последующего развития SMB.

Что такое SMB3?

SMB3 — семейство современных диалектов SMB, в котором появились дополнительные возможности для безопасности, производительности и отказоустойчивости, включая нативное шифрование и Multichannel.

Безопасен ли SMB?

Современные версии SMB предусматривают механизмы аутентификации, подписи и шифрования. Однако безопасность зависит и от конфигурации сервера, прав пользователей, сетевого экрана и архитектуры сети.

Можно ли использовать SMB в Linux?

Да. Linux поддерживает работу с SMB-ресурсами как в качестве клиента, так и в качестве сервера. Для серверной части широко используется Samba.

Можно ли открыть SMB-папку в Windows?

Да. Обычно сетевой ресурс открывается через адрес вида \\server\share, где server — имя или адрес сервера, а share — имя опубликованного ресурса.

Нужно ли отключать SMB1?

Если в инфраструктуре нет устройств, которым необходим SMB1, использование современных SMB2/SMB3 предпочтительнее. SMB1 следует сохранять только при наличии обоснованной необходимости совместимости.

Дополнительная информация:

  • Официальная документация Microsoft по SMB 2 и SMB 3: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/5606ad47-5ee0-437a-817e-70c366052962
  • Обзор протокола SMB 2 и SMB 3 — Microsoft Learn: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/4287490c-602c-41c0-a23e-140a1f137832
  • Транспорт SMB2 — Microsoft Learn: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/1dfacde4-b5c7-4494-8a14-a09d3ab4cc83
  • Официальная документация Samba: https://www.samba.org/samba/docs/
  • Документация Samba по smb.conf и версиям SMB: https://www.samba.org/samba/docs/current/man-html/smb.conf.5
  • RFC 1001 — NetBIOS Service on a TCP/UDP Transport: https://www.rfc-editor.org/rfc/rfc1001
  • RFC 1002 — NetBIOS Service on a TCP/UDP Transport: https://www.rfc-editor.org/rfc/rfc1002
Как смонтировать общие ресурсы SMB в Ubuntu?

Как смонтировать общие ресурсы SMB в Ubuntu?

SMB — это клиент-серверный протокол обмена файлами, который расшифровывается как Server Message Block, который был изобретен IBM в 1984 году с целью предоставления компьютерам доступа к файлам для чтения или записи на удаленном хосте с помощью LAN (локальной сети). Протокол SMB, который делает доступными файлы или каталоги, к которым осуществляется доступ на удаленном узле, называется общими
Прокрутить страницу до начала