Smb cifs amr протоколы для. Боремся с вирусами и инфраструктурой, или отключение SMB v1. Основные возможности SMB

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

Zyxel Keenetic

Подключили и убрали… ну, например, в шкаф.

Конфигурация

Для начала нужно создать массив.
Создадим не сложными манипуляциями RAID на CFI B8253-JDGG с установленными 4ТВ дисками.

На задней части устройства расположены DIP-переключатели и внятная схема аппаратного RAID-контроллера. Я выставил RAID5 на дисках 4 TB. Инициализируем диски просто подключив накопитель к ПК на Win 7. На этом этапе конфигурация DASа закончена. Получили GPT NTFS размером 16ТВ.

Теперь перейдем к конфигурации роутера Zyxel Keenetic
Переходим на WebUI и ставим несколько галок.

Включаем CIFSна роутере, автоматическое монтирование, дабы не отваливалось наше устройство и разрешим доступ без авторизации (дальше докачаем и установим пакет для роутера, который позволит разграничить права доступа по уч. Записям)
Маршрутизатор предоставляет нам возможность настраивать права доступа сетевого диска. Мы можем создавать свои учетные записи сетевого протокола доступа к файлам, принтерам и другим сетевым ресурсам в сетях Windows. Можно настроить права доступа на каждого пользователя и папку. Возможны следующие виды прав доступа:

При подключении DAS’a к роутеру видим наш раздел:

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

Данные компоненты позволили попасть во вкладку «Права доступа»

Создание пользователей тоже предусмотрено и управление доступом.

Раздача прав доступа

Для чего нам вообще подключать DAS к роутеру?
Все просто, в роутере есть встроенный bittorrent клиент, благодаря которому можно сразу качать на DAS фильмы/музыку и т.п. и раздавать все это по сети.
Даем админу права на torrent

Включим файл подкачки, для чего он описано на скриншоте.

Transmission уже установлен в моем роутере, перейдем в браузере 192.168.1.1 :8090/ и авторизуемся под admin

«Скормим» torrent-файл.

Как мы можем наблюдать система работает и установленный на роутер Transmission с успехом смог воспользоваться предоставленной ему внешней емкости для складирования получаемого контента.
И теперь к самому главному, все работает, но какая же скорость чтения/записи при доступе к DAS по сети?
Попробуем записать/загрузить файлик по SAMBA
Результат:

Надо понимать, что полученный скоростной результат обмена по сети прямо зависит от производительности процессора и интерфейса роутера. То есть в данном случае мы видим не скорость DAS CFI, а скорость которую способен «переварить и выдать» Zyxel Keenetic через USB в сеть по SAMBA. Показатели не большие, но для домашнего и бюджетного решения этого достаточно. Не смотря на то, что скорость прямого доступа невелика, хотя тоже приемлема – для получения с DASа потока видео на TV или медиаплеер, или, планшет по квартире через wi-fi - более чем достаточна.

Подключим DAS к ПК по USB3.0 и убедимся в том, что скорость ограничивается пропускной способностью USB интерфейса Zyxel Keenetic.
Результат:

Сам по себе DAS при прямом подключении к ПК у выдает у меня более 200МБ/с при RAID5. Соответственно, с ростом производительности роутеров или просто выборе другого роутера (по мере возможности конечно же проверю и прикреплю UPD), скорость может изменяться и хочется надеяться в лучшую сторону.

Ну и коммерческая сторона собранной системы на момент написания:
CFI-B8253JDGG - от 10 756 рублей, ZyxelKeenetic– 990 рублей. В сумме менее 12 000 рублей. И если сравнить с 4-х дисковым NAS (цена начинается от 18 000 рублей) экономическая выгода налицо.
Решение задачи не единственное, но очень даже работоспособное и занимательное.

Одним из способов доступа с STB к файлам, расположенным на сетевых компьютерах, является протокол общего доступа SMB , который является стандартным протоколом Microsoft Windows и обеспечивает функции «Сети Microsoft Windows» и «Совместного использования файлов и принтеров» .
Samba - свободная реализация протокола SMB для UNIX-подобных и других операционных систем.

Применение протоколов SMB / Samba позволяет осуществлять доступ с STB (работает под управлением ОС Linux) к папкам и файлам, расположенных на сетевых компьютерах (работающих под управлением ОС Linux, Windows и др.). Таким образом, пользователи STB получают возможность проигрывать на STB медиа-файлы (видео, аудио, изображения), которые расположены на сетевых компьютерах, работающих под управлением одного из типов ОС, поддерживающей протоколы SMB или SAMBA.

Протокол SMB / Samba является прикладным протоколом (в терминах сетевой модели OSI). Для обмена данными использует транспортный протокол TCP/IP.
Протокол SMB / Samba использует архитектуру клиент – сервер: в качестве сервера выступает ПК, на котором размещаются определенные сетевые ресурсы (папки) с медиа-файлами, в качестве клиента – STB, с которого медиа-файлы проигрываются.

Сетевые ресурсы отображаются в STB, в меню , в соответствии со стандартной сетевой LAN-архитектурой ОС Windows: Сеть / Рабочая группа / Компьютер / Папка.

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

Предусмотрены два типа сетевого доступа к папкам (тип доступа определяется на стороне компьютера):

  • по паролю - для доступа к сетевой папке со стороны STB используется процедуры Авторизации (необходимо ввести имя (login) определенного пользователя компьютера и его пароль (password);
  • без пароля - доступ к сетевой папке открыт для всех пользователей, без необходимости вводить пароль.

Обнаружение общих сетевых ресурсов на стороне STB происходит автоматически (если это не запрещено на стороне компьютера или кроме случаев, связанных с некорректной работой сети). Соединение с сетевой папкой устанавливается, когда пользователь STB открывает сетевую папку. Если используется доступ к папке по паролю, пользователю выдается запрос, указать login и password .

Также предусмотрена возможность ручного подключения сетевых папок (если они не были обнаружены автоматически). Настройка и доступ к ресурсам сети по протоколу SMB / Samba на STB проводится в меню Home media .

Ниже рассмотрен пример, как подключить сетевую папку ПК с ОС Windows 10для воспроизведения медиа-файлов с STB.
Примечание. Поддержка протокола SMB операционной системой Windows 10 включена по умолчанию.

Пример настройки соединения между STB и ПК с Windows 10

Основные параметры, используемые в примере

Компьютер (файловый сервер):

  • Операционная система - Windows 10 64-bit;
  • Имя компьютера – My _ computer (выбрано для примера);
  • Рабочая группа – WORKGROUP (имя рабочей группы “по умолчанию” в ОС « Windows »);
  • IP- адрес ПК: 192.168.1.186 .
  • Ресурс для «расшаривания» (папка с медиа-файлами) - папка Video _ E 1.
  • Имя пользователя - Usr.

STB (клиент )

  • IP- адрес STB : 192.168.1.230

Проверка доступности сетевого соединения между ПК и STB

Перед настройкой соединения убедитесь в доступности сетевого соединения между ПК и STB – «пропингуйте» STB со стороны ПК.

Настройка на стороне ПК (открытие доступа к папке)

  1. Откройте доступ к папке Video_E1 : Свойства Доступ ⇒ Общий доступ .
  2. Если необходимо предоставлять доступ к папке только для текущего пользователя ПК, оставьте в списке пользователей только текущего пользователя (Usr ). В этом случае доступ к папке будет предоставляться по паролю - для соединения с папкой на STB будут запрошены логин (имя пользователя компьютера) и пароль (пароль пользователя компьютера).

Учтите! Если доступ открыт только текущему пользователю, необходимо использовать определенное значение пароля для учетной записи пользователя. Отсутствие пароля приведет к невозможности доступа к папке!

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

5. На ПК открыть «Центр управления сетями и общим доступом» и настроить параметры общего доступа для трех профилей (Частная, Гостевая или общедоступная и Все сети ):

Частная

Гостевая или общедоступная

Все сети

Соединение с сетевой папкой на стороне STB

  1. Во встроенном портале зайти в Главное окно Home Media Network WORKGROUP

2. В папке WORKGROUP отображаются сетевые компьютеры рабочей группы.
Откройте ярлык необходимого сетевого компьютера - My _ Computer (в папке My _ Computer отображаются папки, для которых установлен общий доступ).

3. Для контроля автоматического определения сетевого ресурса и типа протокола необходимо выделить папку и воспользоваться кнопкой «i» (INFO) на ПДУ:

4. Открыть папку Video_E1 . Внутри папки пройти по пути, по которому находится медиа-файл, который необходимо воспроизвести.

5. Если для папки установлен доступ по паролю, либо по каким-либо причинам STB не может «примонтировать» папку (то есть получить к ней доступ - см. раздел ), то при попытке открыть данную папку открывается окно «Network connection» .

6. Запустить медиа-файл.

Принудительное установление соединения к сетевой папке

В некоторых случаях (при проблемах автоматического соединения) предусмотрена ручная настройка доступа к сетевой папке:
  • Войти Главное окно Home Media Network WORKGROUP
  • Вызвать окно Operations (Операции ) - кнопка Меню на ПДУ.
  • Нажать Mount Share (Подключить ресурс ).
  • В окне "Подключение сетевой папки" ("Connect network folder" ) ввести параметры подключения
    • Адрес сервера (Server Address) – IP-адрес ПК (файлового сервера), на котором размещена требуемая сетевая папки;
    • Папка на сервере (Server folder) – имя «расшаренной» на ПК папки;
    • Локальная папка (Local folder) – имя папки на STB (как правило, совпадает с именем папки на сервере);
    • Тип подключения (Connection type) – SMB.
    • Логин (Login) – совпадает с именем пользователя ПК - вводится, если для папки используется доступ по паролю;
    • Пароль (Password) – пароль доступа к папке - вводится, если для папки используется доступ с паролем.

Отключение сетевой папки, изменение настроек соединения на STB

Для принудительного отключения определенной сетевой папки используйте для этой папки команду Отключить NFS/SMB .

В случае необходимости внести изменения в настройку соединения на стороне, используйте для этой папки команду Редактировать (англ. Edit share) .

Монтирование папки

Установление соединения к определенной папке, описанное в подразделах и , сопровождается автоматическим монтированием папки на STB. Если определенная папка "примонтирована" на STB, ее ярлык появляется на верхнем уровне меню Home media .

Пользователь также может монтировать необходимую папку вручную (это также ведет к соединению с папкой ), для этой цели используется команда Подключить ресурс (англ. Mount share) .
Для "размонтирования" папки в STB (это также ведет к разъединению папки от STB) используется команда Отключить ресурс (англ. Unmount share) .

Проблемы получения доступа к сетевым ресурсам

  1. В окне « Home media» не открываются закладки «Network» , «WorkGroup»:
    • Проверить сетевые настройки и состояние сети на стороне STB и компьютера;
    • Убедиться в том, что на сервере (ПК, с которого настраивается доступ) включена поддержка протокола SMB версии 1 и 2.
    • Перезагрузить STB и ПК.

2. Если разделы «Network» , «WorkGroup» отображаются, но не отображается ярлык необходимого сетевого компьютера:

    • Проверьте, что компьютер отображается в разделе «Сеть» на компьютере;
    • Пропинговать STB со стороны ПК (убедиться, что оба устройства могут взаимодействовать по сети).
    • Перезагрузить компьютер.

3. Если на STB не отображаются доступные папки или доступ к папке закрыт:

    • Проверьте, что папки, к которым открыт доступ, отображаются в разделе «Сеть» на компьютере;
    • Если есть возможность, проверить наличие доступа к папке с других сетевых компьютеров;
    • На компьютере проверить настройки общего доступа в свойствах папки и «Дополнительные параметры общего доступа. Профили» .
    • Перезагрузить STB.

4. Если при открытии сетевой папки на STB предлагается выполнить авторизацию, но для папки доступ по паролю не назначался:

    • Проверить, чтобы в свойствах папки был открыт доступ для пользователя «Все» ;

5. Если при открытии папки на STB предлагается выполнить авторизацию (ввести логин, пароль), но значение пароля не задано (пустой пароль):

    • Установить определенное значение пароля пользователя компьютера;
    • Если доступ не возобновился, перезагрузить STB.

6. Если файл не открывается:

    • проверить, проигрывается ли файл локально на ПК;
    • попытаться запустить с STB другие файлы с той же сетевой папки, с других сетевых папок;
    • попытаться проиграть файл другого формата (желательно, проверить файл, который на STB ранее воспроизводился, например, с USB-носителя). Возможно, данный формат файла не поддерживается плеером STB.

В связи с недавной эпидемией шифровальщика WannaCry, эксплуатирующим уязвимость SMB v1, в сети снова появились советы по отключению этого протокола. Более того, Microsoft настоятельно рекомендовала отключить первую версию SMB еще в сентябре 2016 года. Но такое отключение может привести к неожиданным последствиям, вплоть до курьезов: лично сталкивался с компанией, где после борьбы с SMB перестали играть беспроводные колонки Sonos.


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


SMB (Server Message Block) – сетевой протокол для удаленного доступа к файлам и принтерам. Именно он используется при подключении ресурсов через \servername\sharename. Протокол изначально работал поверх NetBIOS, используя порты UDP 137, 138 и TCP 137, 139. С выходом Windows 2000 стал работать напрямую, используя порт TCP 445. SMB используется также для входа в домен Active Directory и работы в нем.


Помимо удаленного доступа к ресурсам протокол используется еще и для межпроцессорного взаимодействия через «именованные потоки» – named pipes . Обращение к процессу производится по пути \.\pipe\name.

Первая версия протокола, также известная как CIFS (Common Internet File System), была создана еще в 1980-х годах, а вот вторая версия появилась только с Windows Vista, в 2006. Третья версия протокола вышла с Windows 8. Параллельно с Microsoft протокол создавался и обновлялся в его открытой имплементации Samba .


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


Под спойлером вы найдете сводную таблицу изменений в версиях SMB.

Версия Операционная система Добавлено, по сравнению с предыдущей версией
SMB 2.0 Windows Vista/2008 Изменилось количество команд протокола со 100+ до 19
Возможность «конвейерной» работы – отправки дополнительных запросов до получения ответа на предыдущий
Поддержка символьных ссылок
Подпись сообщений HMAC SHA256 вместо MD5
Увеличение кэша и блоков записи\чтения
SMB 2.1 Windows 7/2008R2 Улучшение производительности
Поддержка большего значения MTU
Поддержка службы BranchCache – механизм, кэширующий запросы в глобальную сеть в локальной сети
SMB 3.0 Windows 8/2012 Возможность построения прозрачного отказоустойчивого кластера с распределением нагрузки
Поддержка прямого доступа к памяти (RDMA)
Управление посредством командлетов Powershell
Поддержка VSS
Подпись AES–CMAC
Шифрование AES–CCM
Возможность использовать сетевые папки для хранения виртуальных машин HyperV
Возможность использовать сетевые папки для хранения баз Microsoft SQL
SMB 3.02 Windows 8.1/2012R2 Улучшения безопасности и быстродействия
Автоматическая балансировка в кластере
SMB 3.1.1 Windows 10/2016 Поддержка шифрования AES–GCM
Проверка целостности до аутентификации с использованием хеша SHA512
Обязательные безопасные «переговоры» при работе с клиентами SMB 2.x и выше

Считаем условно пострадавших

Посмотреть используемую в текущий момент версию протокола довольно просто, используем для этого командлет Get–SmbConnection :



Вывод командлета при открытых сетевых ресурсах на серверах с разной версией Windows.


Из вывода видно, что клиент, поддерживающий все версии протокола, использует для подключения максимально возможную версию из поддерживаемых сервером. Разумеется, если клиент поддерживает только старую версию протокола, а на сервере она будет отключена – соединение установлено не будет. Включить или выключить поддержку старых версий в современных системах Windows можно при помощи командлета Set–SmbServerConfiguration , а посмотреть состояние так:


Get–SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol


Выключаем SMBv1 на сервере с Windows 2012 R2.



Результат при подключении с Windows 2003.


Таким образом, при отключении старого, уязвимого протокола можно лишиться работоспособности сети со старыми клиентами. При этом помимо Windows XP и 2003 SMB v1 используется и в ряде программных и аппаратных решений (например NAS на GNU\Linux, использующий старую версию samba).


Под спойлером приведу список производителей и продуктов, которые полностью или частично перестанут работать при отключении SMB v1.

Производитель Продукт Комментарий
Barracuda SSL VPN
Web Security Gateway backups
Canon Сканирование на сетевой ресурс
Cisco WSA/WSAv
WAAS Версии 5.0 и старше
F5 RDP client gateway
Microsoft Exchange Proxy
Forcepoint (Raytheon) «Некоторые продукты»
HPE ArcSight Legacy Unified Connector Старые версии
IBM NetServer Версия V7R2 и старше
QRadar Vulnerability Manager Версии 7.2.x и старше
Lexmark Прошивки Firmware eSF 2.x и eSF 3.x
Linux Kernel Клиент CIFS С 2.5.42 до 3.5.x
McAfee Web Gateway
Microsoft Windows XP/2003 и старше
MYOB Accountants
NetApp ONTAP Версии до 9.1
NetGear ReadyNAS
Oracle Solaris 11.3 и старше
Pulse Secure PCS 8.1R9/8.2R4 и старше
PPS 5.1R9/5.3R4 и старше
QNAP Все устройства хранения Прошивка старше 4.1
RedHat RHEL Версии до 7.2
Ricoh МФУ, сканирование на сетевой ресурс Кроме ряда моделей
RSA Authentication Manager Server
Samba Samba Старше 3.5
Sonos Беспроводные колонки
Sophos Sophos UTM
Sophos XG firewall
Sophos Web Appliance
SUSE SLES 11 и старше
Synology Diskstation Manager Только управление
Thomson Reuters CS Professional Suite
Tintri Tintri OS, Tintri Global Center
VMware Vcenter
ESXi Старше 6.0
Worldox GX3 DMS
Xerox МФУ, сканирование на сетевой ресурс Прошивки без ConnectKey Firmware

Список взят с сайта Microsoft , где он регулярно пополняется.


Перечень продуктов, использующих старую версию протокола, достаточно велик – перед отключением SMB v1 обязательно нужно подумать о последствиях.

Все-таки отключаем

Если программ и устройств, использующих SMB v1 в сети нет, то, конечно, старый протокол лучше отключить. При этом если выключение на SMB сервере Windows 8/2012 производится при помощи командлета Powershell, то для Windows 7/2008 понадобится правка реестра. Это можно сделать тоже при помощи Powershell:


Set–ItemProperty –Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 –Type DWORD –Value 0 –Force

Или любым другим удобным способом. При этом для применения изменений понадобится перезагрузка.


Для отключения поддержки SMB v1 на клиенте достаточно остановить отвечающую за его работу службу и поправить зависимости службы lanmanworkstation. Это можно сделать следующими командами:


sc.exe config lanmanworkstation depend=bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start=disabled

Для удобства отключения протокола по всей сети удобно использовать групповые политики, в частности Group Policy Preferences. С помощью них можно удобно работать с реестром.



Создание элемента реестра через групповые политики.


Чтобы отключить протокол на сервере, достаточно создать следующий параметр:

    путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters;

    новый параметр: REG_DWORD c именем SMB1;

  • значение: 0.


Создание параметра реестра для отключения SMB v1 на сервере через групповые политики.


Для отключения поддержки SMB v1 на клиентах понадобится изменить значение двух параметров.


Сначала отключим службу протокола SMB v1:

    путь: HKLM:\SYSTEM\CurrentControlSet\services\mrxsmb10;

    параметр: REG_DWORD c именем Start;

  • значение: 4.


Обновляем один из параметров.


Потом поправим зависимость службы LanmanWorkstation, чтоб она не зависела от SMB v1:

    путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation;

    параметр: REG_MULTI_SZ с именем DependOnService;

  • значение: три строки – Bowser, MRxSmb20 и NSI.


И заменяем другой.


После применения групповой политики необходимо перезагрузить компьютеры организации. После перезагрузки SMB v1 перестанет использоваться.

Работает – не трогай

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


Расскажите, а вы уже отключили у себя SMB первой версии? Много было жертв?

Компьютерная сеть по определению представляет собой распределенную систему. Ее предназначение — совместная работа пользователей. Такая работа подразумевает доступ к сетевым ресурсам , как то файлы и каталоги, принтеры и т.д. Для пользователя обращение к сетевым ресурсам должно быть прозрачным, т.е.:

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

При этом нужно учитывать и то, что не всякий пользователь должен иметь доступ к конкретному ресурсу, и не всякий ресурс олжен быть доступен всем. Т.е. необходимо обеспечить возможности управления общим доступом как на уровне пользователей, так и на уровне отдельных ресурсов.

Указанные возможности предоставляют специальные протоколы общего доступа. Наиболее распространенными из них являются SMB/CIFS для ОС Windows и NFS, используемый в UNIX-подобных системах.

Протоколы общего доступа

SMB/CIFS

SMB (Server Message Block) — это протокол, предложенный IBM для организации общего доступа к файлам, принтерам, последовательным портам, почтовым ячейкам (mail slots), именованным каналам (named pipes) и API сетевых компьютеров. Протокол SMB может быть использован поверх сетевых протоколов стека TCP/IP, а также поверх ряда других сетевых протоколов.

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

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

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

Протокол SMB представляет четыре вида севисов:

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

Если режим управления сеансами в SMB прозрачен для пользователя, то остальными сервисами пользователь может управлять непосредственно с помощью команды net (см. net /? в консоли ОС Windows).

Рис. 1. NetBIOS/SMB

Для управления сессиями протокол SMB изначально использовал NetBIOS в реализации NetBEUI (NetBIOS Extended User Interface) - расширенный пользовательский интерфейс дейтаграммной передачи NetBIOS, рассчитанный на сети порядка 20-200 рабочих станций. Сети, основанные на протоколе NetBEUI, легко реализуются, но их трудно расширять, так как протокол NetBEUI не маршрутизируемый.

Для использования SMB в сетях с более сложной топологией в NetBIOS была добавлена поддержка транспортных протоколов TCP (NBT, NetBIOS over TCP), IPX, DECNet и Xerox Networking (XNS) ()

Сервисы SMB, работающие в среде TCP/IP, используют различные порты (стандартные названия портов подчеркивают тесную связь SMB с NetBIOS):

Netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp

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

  1. Доступ на уровне ресурсов . Ограничения накладываются серверной стороной на каталоги общего доступа. Каждый сетевой каталог может быть защищен паролем и клиент должен указать этот пароль для получения доступа к файлам из общего каталога.
  2. Доступ на уровне пользователей . Ограничения налагаются на каждый файл в каждом общем каталоге и они основаны на пользовательских правах. Каждый пользователь (клиент) должен войти на сервер под своей учетной записью и пройти аутентификацию. После завершения проверки подлинности клиент получает соответствующий идентификатор пользователя (user ID), который он должен предъявлять для получения доступа к ресурсам сервера.

Привязка к NetBIOS ограничивало использование SMB небольшими локальными сетями. Первая причина — отсутствие в NetBIOS понятия сети как такового и средств перенаправления трафика (маршрутизации). Вторая — в принятой схеме адресации: имя ресурса, по сути, строка из 15 символов, плюс байт типа ресурса: сервер, контроллер домена и т.д. Естественно, такая одноранговая система именования не годится для интернета.

Для устранения этих ограничений в последних версиях SMB использовался протокол NBT (NetBIOS over TCP), работавший поверх стека TCP/IP.

CIFS создавался совместно разра-бот-чика-ми Samba Team, неза-виси-мым сооб-щест-вом и Microsoft. После того как про-то-кол CIFS был пред-став-лен как откры-тый стан-дарт, Microsoft прекратила финан-сирова-ние про-екта и сотрудничество с Samba Team, а поддержка CIFS в переработке Microsoft для совместимости с прежними версиями SMB была включена в ОС Windows 2000.

CIFS (Common Internet File System) - это открытый стандартный протокол (см. CIFS) на основе SMB, который обеспечивает доступ к файлам и сервисам на удаленных компьютерах в сетях TCP/IP. В отличие от SMB, основным транспортом для CIFS является протокол TCP. Для серверов CIFS зарегистрированы порты 445/TCP и 445/UDP (microsoft-ds # Microsoft Naked CIFS , см. /etc/services)

CIFS обеспечивает функциональность похожую на FTP (File Transfer Protocol), но предоставляет клиентам улучшенный (похожий на прямой) контроль над файлами. Основные возможности CIFS приведены в .

Табл. 1. Возможности протокола CIFS

Возможность Описание
Доступ к файловой системе Поддержка файловых операций, таких как открытие, чтение, запись, поиск и закрытие файла или каталога
Блокировка файлов и записей Неблокирующие приложения не имеют доступа к заблокированному файлу или записи.
Безопасное кэширование (опережающее чтение (read-ahead) и отложенная запись (write-behind)) Поддерживается одновременный доступ на чтение/запись файла множеством клиентов
Уведомления об изменении файла Приложения могут регистрироваться на сервере для получения уведомлений об изменениях в файлах или директориях
"Переговоры" о версии протокола Когда клиент и сервер устанавливают первый сетевой контакт, они обмениваются информацией о версии протокола (диалекте), который будет использоваться. Разные диалекты могут включать новые типы сообщений, а также отличия в форматах от других диалектов.
Расширенные атрибуты Поддерживаются атрибуты, не относящиеся к атрибутам файловой системы. Такие, например, атрибуты как имя автора, могут быть добавлены к встроенным системным атрибутам файла (дата создания, дата модификации и проч.)
Распределенные реплицируемые виртуальные тома Протокол поддерживает многотомную виртуальную файловую систему, в которой все "поддеревья" файловой иерархии для клиента выглядят как одно целое. CIFS прозрачно для пользователя обрабатывает доступ к физически перемещенным или реплицированным элементам такой файловой системы.
Независимость от серверов распознавания имен Клиенты могут использовать любой механизм распознавания имен. К примеру, серверы DNS могут использоваться для получения доступа к файловым ресурсам сервера через Internet.
Пакетные запросы Множественные файловые запросы могут быть "упакованы" в одно сообщение, что сокращает время ожидания ответа сервера. Пакетная обработка возможна даже тогда, когда последующие запросы зависят от результатов выполнения предыдущих.
Поддержка символов Unicode Строки в формате Unicode могут использоваться в именах файлов, ресурсов и учетных записях пользователей.

Сетевая файловая система NFS

NFS (Network File System, сетевая файловая система) - это стандарт, который включает описание распределенной файловой системы и сетевого протокола для работы с ней. Первая спецификация NFS была разработана компанией Sun в 1989 году и предназначалась для использования только в UNIX. Позже реализации клиентской и серверной частей стали распространенными и в других системах. Текущая версия (на момент написания этого материала) имеет название NFS v4 и является открытым стандартом (RFC 3010).

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

Протокол NFS, как и SMB/CIFS, использует клиент-серверную модель взаимодействия. В ранних версиях NFS для транспортирования данных использовался UDP-протокол, в современных - используется TCP. Сервис NFS работает на следующих зарегистрированных портах:

Nfs 2049/tcp # Network File System - Sun Microsystems nfs 2049/udp # Network File System - Sun Microsystems

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

NFS является «родной» файловой системой для UNIX и соответствует логике файловых операций этой операционной системы. Это относится как к пространству имен файлов, так и к поддерживаемым файловым атрибутам. Поддержка NFS имеется у всех популярных систем на основе UNIX.

Структура NFS включает три компонента разного уровня:

  • Прикладной уровень (собственно NFS) - это вызовы удаленных процедур (rpc), которые и выполняют необходимые операции с файлами и каталогами на стороне сервера.
  • Функции презентационного уровня выполняет протокол XDR (eXternal Data Representation), который является межплатформенным стандартом абстракции данных. Протокол XDR описывает унифицированную, каноническую , форму представления данных, не зависящую от архитектуры вычислительной системы. При передаче пакетов RPC-клиент переводит локальные данные в каноническую форму, а сервер проделывает обратную операцию.
  • Сервис RPC (Remote Procedure Call), обеспечивающий запрос удаленных процедур клиентом и их выполнение на сервере, представляет функции сеансового уровня.

Процедура подключения сетевого ресурса средствами NFS называется «экспортированием». Клиент может запросить у сервера список представляемых им экспортируемых ресурсов. Сам сервер NFS, в отличие от, например, сервера SMB, не занимается широковещательной рассылкой списка своих экспортируемых ресурсов.

В зависимости от заданных опций, экспортируемый ресурс может быть смонтирован «только для чтения», можно определить список хостов, которым разрешено монтирование, указать использование защищенного RPC (secureRPC) и пр. Одна из опций определяет способ монтирования: «жесткое» (hard) или «мягкое» (soft).

  • При «жестком» монтировании клиент будет пытаться смонтировать файловую систему во что бы то ни стало. Если сервер не работает, это приведет к тому, что весь сервис NFS как бы зависнет: процессы, обращающиеся к файловой системе, перейдут в состояние ожидания окончания выполнения запросов RPC. С точки зрения пользовательских процессов файловая система будет выглядеть как очень медленный локальный диск. При возврате сервера в рабочее состояние сервис NFS продолжит функционирование.
  • При «мягком» монтировании клиент NFS сделает несколько попыток подключиться к серверу. Если сервер не откликается, то система выдает сообщение об ошибке и прекращает попытки произвести монтирование. С точки зрения логики файловых операций при отказе сервера «мягкое» монтирование эмулирует сбой локального диска.

На вопрос, какой из режимов, «мягкий» или «жесткий», лучше, однозначно ответить невозможно. Если данные на клиенте и сервере должны быть синхронизированы при временном отказе сервиса, то «жесткое» монтирование оказывается предпочтительнее. Этот режим незаменим также в случаях, когда монтируемые файловые системы содержат в своем составе программы и файлы, жизненно важные для работы клиента, в частности для бездисковых машин. В других случаях, особенно когда речь идет о системах «только для чтения», режим «мягкого» монтирования представляется более удобным.

С точки зрения безопасности первые реализации NFS были крайне слабы: аутентификация выполнялась, по сути, только по ip-адресу клиента. Использование NIS не намного увеличивало защищенность системы. В версиях NFS 3 и 4 эти вопросы были переработаны путем добавления поддержки списков доступа (ACL), защищенного rpc и ряда других решений, которые позволили сертифицировать NFS в минобороны США.

Общий доступ в смешанной сети

Сервис NFS идеально подходит для сетей на основе UNIX, так как поставляется практически со всеми версиями этой операционной системы. Более того, поддержка NFS реализована на уровне ядра UNIX. К сожалению, использование NFS на клиентских компьютерах с Windows создает определенные проблемы, связанные с необходимостью установки специализированного и довольно дорогого клиентского ПО. В таких сетях использование средств разделения ресурсов на основе протокола SMB/CIFS, в частности ПО Samba, выглядит более предпочтительным.

Низкоуровневые средства общего доступа. Протокол DAFS

Архитектура виртуального интерфейса

Архитектура виртуального интерфейса (VIA) - это совместная разработка Microsoft, Intel и Compaq, которая определяет абстрактную модель низкоуровневой технологии ввода/вывода. VIA используется для организации высокоскоростного обмена данными между двумя процессами, которые работают на разных серверах или системах хранения в центрах обработки данных (ЦОД).

Virtual Interface (VI) — это протокол связи в архитектуре Virtual Interface Architecture

DAFS (Direct Access File System) - это стандартный протокол файлового доступа, который базируется на NFS v4. Он позволяет прикладным задачам передавать данные в обход операционной системы и ее буферного пространства напрямую к транспортным ресурсам, сохраняя семантику, свойственную файловым системам. DAFS использует преимущества новейших технологий передачи данных по схеме память-память. Его использование обеспечивает высокие скорости файлового ввода-вывода, минимальную загрузку CPU и всей системы, благодаря значительному уменьшению количества операций и прерываний, которые обычно необходимы при обработке сетевых протоколов. Особенно эффективным является использование аппаратных средств поддержки .

Кратко описать алгоритм работы DAFS можно следующим образом: пусть имеются два приложения, осуществляющие доступ к сети при помощи сетевого интерфейса пользовательского уровня (VI, ), тогда:

  1. Драйвер устройств операционной системы управляет аппаратными средствами интерфейса традиционным способом, осуществляя контроль за доступом приложений к оборудованию.
  2. Приложения выделяют буферы сообщений в собственном адресном пространстве и обращаются к драйверу устройств для получения доступа к сетевому интерфейсу. После соответствующей настройки они автоматически инициируют процесс передачи и приема, а интерфейс пересылает информацию в буферы приложений и в обратном направлении, используя обычный механизм прямого доступа к памяти (direct memory access, DMA)

Рис. 3. Общий принцип работы DAFS

Приложения имеют доступ к сети с использованием виртуального интерфейса. Драйвер NIC ОС управляет сетевым контроллером и обеспечивает прямой доступ приложений к интерфейсу. Приложения выделяют буферы в собственном адресном пространстве, куда принимают и откуда отправляют сообщения, используя DMA.

Архитектура сетевого интерфейса пользовательского уровня варьируется в зависимости от особенностей конкретных приложений и сетей - от способа определения приложениями местоположения пересылаемых сообщений, от местонахождения выделяемых для приема информации буферов, от порядка уведомления приложений о поступивших сообщениях. В некоторых сетевых интерфейсах (например, в интерфейсах Active Message или Fast Message) операции передачи и приема реализованы в виде функций, помещенных в пользовательскую библиотеку, которая загружается при инициализации каждого процесса. В других (например, в U-NET и VIA) для каждого процесса создаются очереди, которыми манипулируют сами приложения. Эти очереди обслуживаются аппаратными средствами интерфейса.

DAFS спроектирован для сетей хранения данных (NAS) и используется в кластерном и серверном окружении баз данных и разнообразных Интернет-приложений, ориентированных на непрерывную работу. Он обеспечивает наименьшие задержки доступа к общим файловым ресурсам и данным, а также поддерживает интеллектуальные механизмы восстановления работоспособности системы и данных.

Контрольные вопросы

  1. Какой протокол используется для организации общего доступа к ресурсам в сетях Windows?
  2. Какие ресурсы можно выделить в общий доступ при помощи протокола SMB?
  3. Зачем в NFS выделен специальный протокол презентационного уровня?
  4. Чем отличается «жесткое» монтирование томов NFS от «мягкого»?

Постоянный адрес этой страницы: