Советы и лайфхаки

Порт smb windows – Server message block — Википедия

Содержание

Боремся с вирусами и инфраструктурой, или отключение SMB v1 / Блог компании Сервер Молл / Хабр

В связи с недавной эпидемией шифровальщика 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. С помощью них можно удобно работать с реестром.

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

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


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

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

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


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

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


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

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


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

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

habr.com

ITband.ru » Протокол SMB. Что же у него внутри?

Для обмена информации между пользователями, чаще всего используется локальная сеть или интернет. В локальных сетях большая часть информации передается через простую передачу файлов. Конечно есть системы документооборота, которые призваны упростить жизнь всем, включая сотрудников с их бумажной волокитой. Но данные решения требуют больших трудозатрат на внедрение, поэтому, на данный момент, чаще всего используется обычный файл-сервер. К тому же очень часты просто “файло-помойки” со всяким контентом. Обмен данными (в среде операционных систем Microsoft и не только) происходит по протоколу SMB.

В данном обзоре основной упор будет сделан на “новый” протокол SMB2, но так же будет встречаться упоминания об SMB1. Операционные системы использовались MS Windows 2008/2008R2.

Общие данные

Протокол SMB (Server Message Block) работает на 6-м и 7-м уровне модели OSI, т.е. на уровне представления и приложений. Используется для удаленного доступа к файлам, принтерам, Serial портам, а так же к другим сетевым взаимодействиям между узлами.

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

Протокол SMB работает как клиент-серверное приложение, т.е. когда клиент посылает запрос, то сервер отвечает ему. Часть раздела SMB протокола предназначена для доступа к файловой системе, к примеру, когда пользователь делает запрос к файл-серверу для получения файла. Другая же часть нацелена на использования межпроцессного взаимодействия Inter-process communication (IPC).

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

  1. Согласование диалектов
  2. Определение SMB серверов в сети
  3. Печать с использованием сети
  4. Доступ к файлам и директориям с аутентификацией
  5. Уведомление об изменении файлов и папок
  6. Поддержка юникода
  7. Оппортунистические блокировки

Немного об SMB2

Новая версия протокола SMB, SMB 2.0, была впервые внедрена на ОС MS Winodws Vista и Windows 2008 в 2006 году. Хотя протокол и проприетарный, но спецификация доступна на сайте MSDN, в отличие от SMB1, который долгое время был закрытым. В Windows 2008R2 и Windows 7 появилось небольшое обновление протокола до диалекта 2.10, в котором была увеличена общая сетевая производительность

Преимуществом SMB2 протокола можно считать снижение числа общения между узлами, что приводит к уменьшению зашумленности в сетях. Достигнуто было за счет значительного уменьшения числа команд. Уменьшение с более чем 100 до 19 штук.

  1. Согласование и аутентификация (NEGOTIATE, SESSION_SETUP, LOGOFF, TREE_CONNECT, TREE_DISCONNECT)
  2. Доступ к файлам и директориям (CANCEL, CHANGE_NOTIFY, CLOSE, CREATE, FLUSH, IOCTL, LOCK, QUERY_DIRECTORY, QUERY_INFO, READ, SET_INFO, WRITE)
  3. Другое (ECHO, OPLOCK_BREAK)

Так же добавлена возможность конвейерной отправки сообщений, что дало возможность “склеивать” несколько запросов в один. Данная технология называется pipelining, который позволяет отправлять дополнительные запросы, не дожидаясь ответа от предыдущего запроса. Таким образом уменьшается очередь команд, которые необходимо отправить серверу. Данное решение позволило сократить количество ожидающих запросов/ответов, что приводит к повышению производительности.

Так же SMB2 теперь может управлять потоком данных (credit-based flow control). Начиная передачу с небольшого “окна данных” сервер увеличивает его и автоматически подстраивается под среду. Данное решение позволяет сохранять большое количество передаваемых данных и лучше использовать пропускную способность сети.

Компаундирование (смешивание). В отличие от первой версии протокола, в SMB2 все команды стали более простые. В реализации SMB1 были сложные команды и субкоманды (специальные для каждого случая), которые были набором различных вариацией простых команд (LOCK_AND_READ или WRITE_AND_UNLOCK). Повторюсь, теперь все команды стали простыми, а взамен появилась возможность соединить несколько команд в произвольном порядке, как бы эмулировав старые сложные команды. Это привело к значительному уменьшению команд в SMB2.

Кэширование свойств папок и файлов.

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

Цифровая подпись теперь HMAC SHA-256

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

Лучшая работа через NAT.

Расширение механизма (например, создать контекст или переменной смещения).

Поддержка symbolic link.

Оппортунистические блокировки

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

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

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

Различают несколько видов оппортунистических блокировок:

  1. Level1 (исключающая): позволяет клиенту открыть поток для эксклюзивного доступа и позволяет клиентам выполнять буферизацию данных. Поддерживается кэширования записи и чтения.
  2. Level2 (общедоступная): позволяет создавать многочисленные читающие потоки. Поддерживает кэширование чтения.
  3. Пакетная (исключающая): дает возможность держать открытый поток на сервера, хотя локально был закрыт этот поток. Позволяет читать, писать и кэшировать дескрипторы.
  4. Фильтрующая (исключающая): позволяет приложения открывать и читать поток данных

Подпись SMB трафика (SMB Signing)

Подпись SMB трафика (SMB Signing) – это специальный механизм, обеспечивающий безопасность протокола SMB. Предназначен для повышения защиты передаваемого трафика и от атак в Man-In-The-Middle. Впервые SMB Signing появился в Windows NT 4.0 SP3 и Windows 98.

SMB Signing предоставляет два улучшения для протокола SMB:

  1. Взаимная аутентификация
  2. Аутентификация сообщений

Эти преимущества достигаются путем добавления в SMB пакет цифровой подписи.

Включение ж приводит к увеличению нагрузку, что может привести к снижению производительности передачи сетевого трафика на 10-15%.

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

  1. Клиент соединяется с сервером, делается запрос на использования SMB Signing
  2. Сервер отвечает на соединение, что можно использовать SMB Signing
  3. Клиент делает новый запрос, куда включает NTLM/NTLM v2 данные или билет от Kerberos и отправляет серверу. После данного этапа каждый последующий пакет имеет +1 к последовательности. Таким образом можно отслеживать, что нет вмешательства в пакеты отправляемые между клиентом и сервером
  4. Устанавливается номер последовательности равный 1. Генерируется цифровая подпись, путем сложения сессионного ключа (например, взятого из билета kerberos`a) и SMB пакета, и от него берется MD5/SHA-256 хэш сумма и помещается в поле SecuritySignature. После этого последовательность увеличивается на единицу, т.е. теперь равно двум (2)
  5. Клиент получает пакет и выполняет действия аналогичные п.4, только со своим сессионным ключом. Если значения совпадут, то пакет считается нормальным (иначе отбрасывается).
  6. После этого общение происходит с цифровой подписью, т.е. теперь пакеты проверяются.

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

Так же есть реализация IPSec, в котором защищаются сами пакеты IP. IPSec может работать с любым вышестоящим (в модели OSI) протоколом, в том числе и с SMB. Отличает SMB Signing от IPSec уровни на которых происходит защита. В бонус IPSec: может не только подписывать трафик, но и защищать его от свободного снифинга. Достигается путем шифрации сессионным ключом.

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

Существует два вида уровня доступа:

  1. User-Level – Этот уровень отвечает за аутентификации при подключении к серверу, т.е. когда клиент пытается подключиться к серверу он отсылается свои данные для аутентификации (возможно использование анонимного доступа, тогда любой имеет доступ к серверу). Если аутентификация прошла успешно, то клиента допускают до сервера (в обычной жизни это выглядит как отображение общедоступных папок в сетевом окружении, при заходе,например, \\FF-srv01.inadmin.local). Иначе он просто не сможет подключиться до сервера.
  2. Share-level – Это уровень доступа, определяемые индивидуально для каждой общедоступной папки. Например, не все пользователи имеют доступ к “Папка1”, но при этом имеют доступ к папке “Общие Документы”.

Таким образом мы получаем, что сначала работает User-Level, а потом уже Share-Level, при условии, что клиент смог пройти аутентификацию на User-Level.

Inter-process communication

Inter-process communication (IPC) – набор способов обмена данными среди нескольких потоков в одном или нескольких процессах. IPC делятся на методы: обмена сообщений, синхронизации, разделяемой памяти и удаленных вызовов (RPC). Другими словами это механизм для облегчения связи и обмена данными между приложениями, которые могут быть запущены на одном или нескольких компьютерах, соединенных сетью, используются для обмена служебной информацией. Межпроцессорное взаимодействие можно разделить на наиболее крупные разделы:

  1. Сообщения: Pipes (каналы) и message queues (очереди сообщений)
  2. Shared Memory (Разделяемая память)
  3. Remote procedure calls (RPC, удаленный вызов процедур)
  4. Синхронизация: семафоры и блокирование
  5. Сетевое взаимодействие (API сокеты)

Давайте рассмотрим простой пример работы IPC. У нас есть несколько приложений, запущенных на одном ПК. И вот мы хотим реализовать возможность “общения” между этими программами. Как такое сделать? Использовать IPC.

Самим простым способом общения, можно считать, сообщения. К примеру, можно использовать WinAPI SendMessage, SendMessageEx, PostMessage. Сообщения бывают именованными и широковещательными. В качестве идентификатора для именованных сообщений можно использовать любой набор букв, главное что-бы он был уникальным. При широковещательных сообщениях данные получают все приложения. Как можно понять, в данном примере обмен данными проходил в пределах одного ПК и сеть не использовалась. Обмен данными происходил между несколькими запущенными приложениям на одном ПК.

Зачем же нужен IPC? Ну допустим у вас есть два приложения, одно считает сумму. А вот второе эту сумму обрабатывает и делает сводные таблицы. Для передачи суммы из одной программы в другую и используем IPC.

Ярким представителем IPC в сетевой среде можно считать RPC (Remote Procedure Call). Данный протокол обеспечивает удаленное выполнение процедур.

Давайте рассмотрим состав RPC пакета:

Как видно, протокол MSRPC работает непосредственно с SMB2 (об версиях SMB чуть ниже). На данном примере нам будет интересен так же UUID (Universally Unique IDentifier — Универсальный Уникальный Идентификатор), который является идентификатором RPC сервиса, запущенного на удаленном сервере, к которому мы хотим подключиться.

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

Такие подключения называют именноваными каналами (named pipes). Реализованы эти каналы через драйвер npfs.sys. При использовании MSRPC over SMB необходимо использование endpoint mapper и well-known mapper, так же в заголовке необходимо указать индетификатор транспортного протокола (0x0F)

Примером именованных каналов (named pipes):

  • \pipe\samr – SAM (Security Account Manager)
  • \pipe\lsarpc – LSA (Local Security Manager)
  • \pipe\netlogon – Netlogon RPC server
  • \pipe\svcctl – SCM (Service Control Manager)
  • \pipe\eventlog – Eventlog Service
  • \pipe\srvsvc – Server service
  • \pipe\wkssvc – Workstation service

По RPC можно почитать книгу. Про RPC over SMB смотрите аппендикс I и L.

Для реализации данного функционала существует общедоступная, “расшаренная”, папка IPC$ у ОС Windows. Это не “настоящая” , в обычном понимании, общедоступная папка, а виртуальная. Используется как раз для взаимодействия между узлов через сеть.

Более подробней про IPC.

Транспорт протокола SMB

Протокол SMB был основан в 80-х годах, и за свое существование многое изменилось. Рассматривать “дикости” вроде SMB Over IPX/SPX или SMB Over NetBEUI не будем. Это такие пережитки прошлого, когда каждый изобретал свой собственный велосипед, не совместимые с велосипедами других компаний. Гораздо важнее сосредоточиться на текущем положении дел, а оно такого:

Сейчас для транспорта используется связка TCP/IP, которая отлично себя зарекомендовала не только при использование SMB протоколом. А вот на сеансовом уровне будут различия. Долгое время использовался NetBIOS Over TCP/IP (NBT), но в последних версиях ОС MS Windows был сделан отказ от него и переход на SMB Over TCP/IP. Совместимость новых операционных систем со старыми протоколами – есть. О реализации согласований протоколов чуть позже.

В нашем случае, т.е. по состоянию дел на текущий момент, есть два варианта транспорта:

NetBIOS Over TCP/IP:

NetBIOS протокол работает на сеансовом уровне модели OSI. Решает задачи:

  1. Регистрация сетевых имен

  2. Установление сессий

  3. Установление надежных соединений для передачи данных (TCP)

  4. Установление ненадежных соединений для передачи данных (UDP)

Вероятно вы заметили, что функционал дублирует задачи DNS. Это верно NetBIOS изначально был разработан, когда технологии DNS не было. Поэтому от данного протокола, NBT, и отказываются в использовании.

Используемые порты:

  1. UDP 137 – Name managment.

  2. UDP 138 – Datagram traffic.

  3. TCP 139 – Session traffic

SMB Over TCP

  1. TCP/UDP 445 – Session traffic. Сессионный трафик, передача файлов, использование принтеров и прочее.

Протокол специально разработан для выполнении одной задачи, а именно связки SMB и TCP/IP.

Довольно часто SMB винят в создании большого количества широковещательного (broadcast) трафика. Но на самом деле причина кроется не в SMB, а в NBT, который он использует. Протоколом по умолчанию NBT был в Windows NT, но к Windows 2000 был сделан отказ от реализации разрешения имен на основе WINS серверов. Стандартом стал DNS. Таким образом NBT стал особняком, который дублировал задачи. И в последних версиях ОС уже по умолчанию используется SMB over TCP/IP.

Есть так же еще одна неприятная особенность, точнее наследие прошлого. Операционная система довольно долго развивается, так же есть много других продуктов (Exchange, Sharepoint и прочих сервисов в самой ОС), которые могут использовать NetBIOS API для задач с разрешением имен. Таким образом полный отказ от NetBIOS может привести к неожиданным последствиям при разрешении сетевых имен.

К преимуществам использования протокола SMB Over TCP/IP можно отнести:

  1. Упрощение транспорта трафика SMB

  2. Отказа от использования WINS и широковещательного трафика NetBIOS в сети.

  3. Стандартизация разрешения имен, все запросы разрешаются через DNS сервер.

Для отключения NBT:

  1. Необходимо зайти в сетевое окружение
  2. Выбрать сетевой адаптер “Подключение по локальной сети” , зайти в свойства
  3. Выбрать Internet Protocol (TCP/IP) и зайти в свойства
  4. Перейти на вкладку Advanced
  5. Выбрать Disable NetBIOS over TCP/IP

Для просмотра интерфейсов, на которых есть NBT можно воспользоваться командой Net config redirector

Computer name                        \\FF-SRV01
Full Computer name                   FF-SRV01.InAdmin.Local
User name                            Administrator 
Workstation active on
 NetBT_Tcpip_{860BDBCB-FF6A-4AC7-B5BC-981A00AA8AE8} (00155DF83106) 
Software version                     Windows Server 2008 R2 Standard 
Workstation domain                   INADMIN
Workstation Domain DNS Name          InAdmin.Local
Logon domain                         FF-SRV01 
COM Open Timeout (sec)               0
COM Send Count (byte)                16
COM Send Timeout (msec)              250
The command completed successfully.

Согласование транспортных протоколов (NetBIOS Over TCP/IP vs SMB Over TCP/IP)

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

  1. Попытка установить TCP сессию на 445 порту (порт, на котором работает SMB Over TCP/IP).
  2. Если удалось поднять сессию, то поднимается SMB через SMB Over TCP/IP
  3. Если сессия на 445 порту не установилась, то делается попытка установить связь через 139 порт (порт, на котором работает NetBIOS Over TCP/IP).
  4. Если сессия установилась, то поднимается SMB через NetBIOS Over TCP/IP

Таким образом предпочтение при подключение имеет более новый протокол, т.е. SMB Over TCP/IP. Если же сессия не установилась, то делается попытка отступить на более старый протокол взаимодействия. В случае, когда п.1 и п.3 не завершатся установлением сессии, то попытки подключения прекращаются и выдается ошибка подключения.

Диалекты

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

PC NETWORK PROGRAM 1.0Оригинальная версия SMB, разработанная IBM.
MICROSOFT NETWORKS 1.03Добавлены новые команды
MICROSOFT NETWORKS 3.0Аналогичен LanMan1.0, но ошибки должны транслироваться в DOS
LANMAN1.0Полный протокол LANMAN1.0
LM1.2X002Полный протокол LANMAN2.0
DOS LM1.2X002Аналогичен LM1.2X002 только с трансляцией ошибок в DOS
LANMAN2.1Расширение протокола LANMAN2.0
DOS LANMAN2.1Аналогичен LANMAN2.1 только с трансляцией ошибок в DOS
Windows for Workgroups 3.1aОчередное расширение протокола
NT LM 0.12Расширение протокола для работы в NT системах
SMB 2.002Новый протокол, много полезных дополнений, уменьшено кол-во команд
SMB 2.10Расширение SMB 2.002, увеличена производительность

Процедура согласования диалектов

Итак, вторым этапом согласования является: согласование диалектов. Рассмотрим пример согласования диалектов между MS Windows 2008 R2 серверами (SMB 2.10):

  1. Клиент (ОС, которой необходимо получить доступ до другого сервера) отсылает запрос, содержащий поддерживаемый им диалекты.
    Dialect: PC NETWORK PROGRAM 1.0
     Dialect: LANMAN1.0
     Dialect: Windows for Workgroups 3.1a
     Dialect: LM1.2X002
     Dialect: LANMAN2.1
     Dialect: NT LM 0.12
     Dialect: SMB 2.002
     Dialect: SMB 2.???
  2. Сервер принимает пакет с запросом на согласование диалектов. Находит в нем строку “SMB 2.???” среди предложенных диалектов. И формирует ответ для клиента, где устанавливает значение:
    DialectRevision: 767 (0x2FF)
  3. Клиент получает ответ от сервера и формирует новый запрос, в который включает поддерживаемые диалекты для SMB2
    Dialects: 514 (0x202)
    Dialects: 528 (0x210)
  4. Сервер получает новый запрос. Находит в нем, что поддерживается 0×0210 и формирует ответ для клиента, установив
    DialectRevision: 528 (0x210)

Рассмотрим второй пример. На этот раз согласование диалектов между OC Windows 2008. В отличии от первого случая, тут согласование пройдет более просто, и будет выбран диалект SMB 2.002:

  1. Клиент (ОС, которой необходимо получить доступ до другого сервера) отсылает запрос, содержащий поддерживаемый им диалекты.
    Dialect: PC NETWORK PROGRAM 1.0
     Dialect: LANMAN1.0
     Dialect: Windows for Workgroups 3.1a
     Dialect: LM1.2X002
     Dialect: LANMAN2.1
     Dialect: NT LM 0.12
     Dialect: SMB 2.002
  2. Сервер получает запрос и формирует ответ для клиента, установив
    DialectRevision: 0x0202

Процедура установления сессии

Следующим этапом будет установление сессии. На данном этапе создается запрос SESSION_SETUP Request и отсылается от клиента к серверу для установления аутентификационной сессии.

  1. Клиент запрашивает GSS (Generic Security Service) на выдачу аутентификационного токена и отправляет его в SESSION_SETUP Request:
    Command: SESSION SETUP
    SecurityMode: Signing Enabled
    SecurityBufferOffset: 88 (0x58)
    SecurityBufferLength: 74 (0x4A)
    Buffer: (74 bytes)
  2. Сервер получает токен с GSS. Сервер формирует ответ установив Status=STATUS_MORE_PROCESSING_REQUIRED и помещает токен, полученный от GSS
    Status: STATUS_MORE_PROCESSING_REQUIRED
    Command: SESSION SETUP
    TreeId: 0 (0x0)
    SessionId: 4406368010297 (0x401F0000039)
    SessionFlags: Normal session
    SecurityBufferOffset: 72 (0x48)
    SecurityBufferLength: 219 (0xDB)
    Buffer: (219 bytes)
  3. Клиент получает токен с GSS и отсылает SMB2 SESSION_SETUP Request, извлекая токен из GSS и SessionID из предыдущего ответа
    Status: STATUS_SUCCESS
    Command: SESSION SETUP
    SessionId: 4406368010297 (0x401F0000039)
    SecurityMode: Signing Enabled
    SecurityBufferOffset: 88 (0x58)
    SecurityBufferLength: 245 (0xF5)
    Buffer: (245 bytes)
    
    
  4. Сервер принимает GSS и возвращает, что сессия установлена:
    Status: STATUS_SUCCESS
    Command: SESSION SETUP
    SessionId: 4406368010297 (0x401F0000039)
    SecurityBufferOffset: 72 (0x48)
    SecurityBufferLength: 29 (0x1D)
    Buffer: (29 bytes)

Получение доступа к папкам

  1. Для завершения аутентификации, клиент посылает запрос, используя для этого SessionID.
    Status: STATUS_SUCCESS
    
    
    Command: TREE CONNECT
    МessageId: 3 (0x3)
    TreeId: 0 (0x0)
    
    
    SessionId: 4406368010297 (0x401F0000039)
    Share: \172.16.0.2IPC$
  2. Сервер, при получении запроса, формирует ответ со следующими полями:
    Status: STATUS_SUCCESS
    MessageId: 3 (0x3)
    SessionId: 4406368010297 (0x401F0000039)
    TreeId: 1 (0x1)
    
    

Последующие операции (такие как CREATE, WRITE, READ) будут использовать SessionID и TreeID

Чтение файла

Т.к. сессия у нас уже установлена и параметры мы можем использовать, то давайте рассмотрим, к примеру открытие файлов по сети

  1. Клиент отправляет SMB2 Create Request для файла TestSMB.txt
    Status: STATUS_SUCCESS
    Command: CREATE
    MessageId: 10 (0xA)
    ProcessId: 65279 (0xFEFF)
    TreeId: 1 (0x1)
    SessionId: 4406368010297 (0x401F0000039)
    RequestedOplockLevel: 9 (0x9)
    DesiredAccess: 0x00120089
    read:        (...............................1) Read Data
    readEA:      (............................1...) Read EA
    FileRead:    (........................1.......) File Read Attributes
    ShareAccess: Shared for Read/Write
    CreateDisposition: Open
    Name: TestSMB.txt
  2. Сервер формирует ответ SMB2 Create Response
    Status: STATUS_SUCCESS
    Command: CREATE
    Flags: 1 (0x1)
    ServerToRedir: ...............................1 Server to Client
    MessageId: 10 (0xA)
    ProcessId: 65279 (0xFEFF)
    TreeId: 1 (0x1)
    SessionId: 4406368010297 (0x401F0000039)
    CreateAction: 1 (0x1)
    CreationTime: 127972992877715232 (0x1C6A6C24D51DF20)
    LastAccessTime: 127972992923579232 (0x1C6A6C2500DB360)
    LastWriteTime: 127972992923579232 (0x1C6A6C2500DB360)
    ChangeTime: 127972992923579232 (0x1C6A6C2500DB360)
    AllocationSize: 104 (0x68)
    EndOfFile: 98 (0x62)
    Volatile: -4294967287 (0xFFFFFFFF00000009)
  3. Клиент отправляет запрос на чтение данных из файла SMB2 Read Request
    Smb2: C READ 0x62 bytes from offset 0 (0x0)
    Status: STATUS_SUCCESS
    Command: READ
    MessageId: 11 (0xB)
    ProcessId: 65279 (0xFEFF)TreeId: 1 (0x1)
    SessionId: 4406368010297 (0x401F0000039)
    CRead:
    Size: 49 (0x31)
    Padding: 80 (0x50)
    DataLength: 98 (0x62)
    Offset: 0 (0x0)
    Fid:
    Persistent: 17 (0x11)
    Volatile: -4294967287 (0xFFFFFFFF00000009)
  4. Сервер отвечает ответом SMB2 READ Response c данными из файла
    Smb2: R READ 0x62 bytes read
    Status: STATUS_SUCCESS
    Command: READ
    Flags: 1 (0x1)
    ServerToRedir: ...............................1 Server to Client
    MessageId: 11 (0xB)
    ProcessId: 65279 (0xFEFF)
    TreeId: 1 (0x1)
    SessionId: 4406368010297 (0x401F0000039)
    RRead:
    Size: 17 (0x11)
    DataOffset: 80 (0x50)
    Reserved: 0 (0x0)
    DataLength: 98 (0x62)
    DataRemaining: 0 (0x0)
    Reserved2: 0 (0x0)
    Data: (98 bytes)
  5. Клиент отправляет SMB2 CLOSE Request для закрытия файла
    Smb2: C CLOSE FID=
    SMB2Header:
    Status: STATUS_SUCCESS
    Command: CLOSE
    MessageId: 12 (0xC)
    ProcessId: 65279 (0xFEFF)
    TreeId: 1 (0x1)
    SessionId: 4406368010297 (0x401F0000039)
    CClose:
    Size: 24 (0x18)
    Flags: 1 (0x1) <- Post-query attributes
    Reserved: 0 (0x0)
    Fid:
    Persistent: 9 (0x9)
    Volatile: -4294967295 (0xFFFFFFFF00000001)
  6. Сервер отвечает SMB2 Close Response сообщая об удачном закрытии файла
    Smb2: R CLOSE
    Status: STATUS_SUCCESS
    Command: CLOSE
    Flags: 1 (0x1)
    ServerToRedir: ...............................1 Server to Client
    MessageId: 12 (0xC)
    ProcessId: 65279 (0xFEFF)
    TreeId: 5 (0x5)
    SessionId: 4398046511121 (0x40000000011)
    RClose:
    Size: 60 (0x3C)
    Flags: 1 (0x1)
    Reserved: 0 (0x0)
    CreationTime: 127972990708847232 (0x1C6A6C1CC0B9280)
    LastAccessTime: 127972993090343232 (0x1C6A6C259FE5140)
    LastWriteTime: 127972992877715232 (0x1C6A6C24D51DF20)
    ChangeTime: 127972992877715232 (0x1C6A6C24D51DF20)
    AllocationSize: 0 (0x0)
    EndOfFile: 0 (0x0)

Сравнение производительности протоколов SMB и SMB2

А теперь давайте посмотри в жизни “действительную” разницу при использовании SMB2. Для этого был собран тестовый стенд, в котором приняли участия MS Windows 7, Windows 2008R2, Windows 2003.

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

Первый случай, копирования по сети с Windows 2008 на Windows 2008 и Windows 2003.

Первый пик, это при копировании по протоколу SMB2, второй же пик, сплошная, это загрузка по SMB1. Как видно, при использовании нового протокола утилизация канала используется на всю мощность. По оси Х идет время. Сразу можно увидеть, какой из протоколов быстрей “переваривает” информацию.

Второй ж пример будет для канала с большой латентностью. Здесь раскрываются возможности технологии pipelining.

На данном примере видно, что время передачи и загрузка канала еще больше разнится. Позволяя SMB2 просто разрывать в клочья SMB1.

А теперь немного статистики. Для этого было взято порядка 7500 файлов, общим размером в 150 мб. Файлы были разного размера: от 1 кб до 10 мб. Так же эти файлы были сжаты в один архив, для проверки работы на одном файле. Тестовый стенд представлял в тот же набор операционных систем, но в этот раз в тесте принял участие еще и канал Wi-Fi. Латентность сети была порядка 1-2 мс.

Общая схема была такой:

Первый тест производился на большом количестве файлов. Копировалось с Windows 7 на сервера под управлением Windows 2008R2 и Windows 2003.

По оси X время в секундах.

Видно, что при использовании SMB2, скорость копирования выше. Преимущество практически не зависит от типа канала: Wi-Fi или Ethernet.

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

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

Заключение

На этом завершим краткий обзор “нового” протокола SMB. Как вы уже поняли, его использование позволяет ускорить процесс передачи данных между узлами в сети. Так же к плюсам можно отнести отказ от использования NBT в качестве транспортного протокола. Уменьшена зашумленность сетевого канала.

Новые ОС Microsoft уже во всю используют его, что очень радует.

Баканов Денис

MCSE+S; MCITP EA

Оригинал статьи

itband.ru

windows — Самый простой способ реализовать перенаправление SMB для Windows?

Я хотел бы реализовать небольшой инструмент, который позволяет мне делать в Windows то, что я могу уже сделать легко на любой другой ОС — указать удаленный SMB-сервер как по IP-адресу , так и по порту. Естественно, Windows не будет делать SMB по любым портам, кроме 445 или 139 (по своему выбору), и мне не нравится играть whack-a-mole с обходными решениями для различных Bad Things, которые Microsoft продолжает добавлять в Windows, чтобы выполнить туннелирование SMB через пересылку портов SSH.

Что я имею в виду, это небольшое приложение командной строки, которое позволит мне сделать что-то вроде

netsubst servername -i IP -p PORT

Это будет работать рука об руку с драйвером? Dll? который перехватывает Windows как перенаправитель SMB, но просматривает таблицу имен серверов, созданных netsubst, вместо того, чтобы искать их в сети, чтобы узнать, к чему подключиться. Поэтому я мог бы сделать

net use X://имя_сервера/sharename/user: имя пользователя *

обычным способом, за исключением того, что вместо Windows, ищущего//имя_сервера на портах 445 или 139 любых машин, которые он мог найти, он перешел прямо к адресу IP, port PORT; и если IP оказался 127.0.0.1, и PORT оказался чем-то перенаправленным в другое место через ssh, все это бы просто работало, и мне больше не нужно было бы разбираться со стенами глупостей, которые Windows предоставляет доступ к локальным портам 139 и 445.

Я полагаю, что мне нужно что-то похожее на гостевое дополнение //vboxsvr, которое VirtualBox использует для совместного использования файлов хоста, но, вероятно, более простой, поскольку для моего идеального мира не нужен полный конец — только. Функциональность Windows, которую мне нужно заменить, — это часть, которая устанавливает начальное подключение к удаленному SMB-серверу. Но прежде чем я начну врываться в исходный код VirtualBox, может ли кто-нибудь предложить более простой способ сделать это, или, возможно, указать мне на документацию Microsoft по внедрению редиректоров SMB?

qaru.site

SMB 3.0 в файловом сервере нового поколения | Windows IT Pro/RE

Протокол Server message block (SMB) в той или иной форме используется в любой организации для доступа к хранилищам. Это может быть доступ к сценариям регистрации, установочным дискам с программным обеспечением, либо к пользовательским документам и коллекции музыки MP3. Где SMB не применяется, так это в протоколах доступа к файлу (здесь клиент вместо прямого доступа к блокам на диске получает доступ к файлам) при обращении корпоративных приложений к внешнему хранилищу. Что касается обмена данными с хранилищем в корпоративной рабочей среде, то в списке лидируют блочные технологии (где сервер напрямую взаимодействует с блоками на диске), такие как iSCSI и Fibre Channel (и, возможно, NFS для отличных от Windows рабочих приложений).

. Когда пользователь редактирует документ Microsoft PowerPoint, хранящийся на общем ресурсе SMB, части этого документа локально кэшируются, и время от времени пользователь нажимает кнопку «Сохранить». При возникновении проблемы на файловом сервере SMB, например связанной с перезагрузкой, либо с перемещением общей папки на другой узел кластера (если сервер является частью кластера), пользователь теряет дескриптор доступа к файлу, но без каких-либо последствий. При следующем нажатии кнопки «Сохранить» все восстанавливается, и ничего страшного не происходит. Теперь рассмотрим Hyper-V и виртуальную машину, хранящуюся на файловом ресурсе SMB общего доступа. При возникновении проблемы с хостом общий ресурс перемещается на другой узел кластера. Hyper-V ожидает наступления тайм-аута TCP, после чего констатирует ошибку первоначального соединения. Для виртуальной машины это может означать 30-секундную паузу. Однако Hyper-V уже утратил дескрипторы на виртуальном жестком диске VHD, а это более серьезная проблема. Если продолжительность работы с пользовательским документом может исчисляться несколькими часами, то корпоративные службы, виртуальные машины и базы данных требуют бесперебойной доступности файловых дескрипторов на протяжении многих месяцев.

К счастью, SMB 3.0 решает эту проблему (как и многие другие). При создании Windows Server 2012 было решено сделать SMB протоколом хранилища файлового уровня, способным обслуживать критически важные корпоративные рабочие нагрузки, такие как Microsoft Hyper-V и SQL Server. Эта перемена требовала крупных изменений в протоколе SMB.

Прозрачная отказоустойчивость

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

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

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

Однако даже прозрачная отказоустойчивость SMB Transparent Failover не исключает паузы в операциях ввода/вывода, когда LUN монтируется на другом узле кластера. Группа разработчиков отказоустойчивой кластеризации проделала огромную работу по оптимизации демонтажа и монтажа LUN, сократив максимальную длительность этой процедуры до 25 секунд. Это время кажется долгим, но оно относится к наиболее неблагоприятному сценарию с участием большого числа логических устройств и десятков тысяч дескрипторов. Для наиболее распространенных сценариев эта процедура будет выполняться за пару секунд, а корпоративные службы, такие как Hyper-V и SQL Server, способны обрабатывать 25-секундную паузу в работе подсистемы ввода/вывода без ошибок.

Другая возможная причина перерыва в работе подсистемы ввода/вывода – неосведомленность клиента SMB о недоступности сервера SMB. В обычном сценарии (например, при перезагрузке узла после установки исправлений) сервер уведомляет клиентов о происходящем, и они могут принять соответствующие меры. Но при аварийном отказе хоста клиенты уведомлений не получают. В этом случае клиент ожидает наступления тайм-аута TCP, прежде чем принимает меры по восстановлению соединения, что означает бесполезную трату ресурсов. Клиент SMB может не знать о том, что узел, с которым он взаимодействует, вышел из строя, однако другие узлы в кластере узнают об этом менее чем за секунду, благодаря сообщениям синхронизации IsAlive, которыми обмениваются узлы.

Благодаря этому знанию новая служба-свидетель Witness Service в Windows Server 2012 позволяет одному из узлов кластера выступать свидетелем по отношению к клиенту SMB. Если узел, с которым общается клиент, выходит из строя, то узел-свидетель уведомляет об этом клиента SMB, что позволяет клиенту подключиться к другому узлу, а время прерывания обслуживания сокращается до пары секунд. Диалог выглядит примерно так (с использованием 1 и 0 вместо слов):

Клиент SMB – серверу A: «Я хочу установить соединение».

Сервер A: «Соединение установлено. Я являюсь частью кластера, в котором также есть серверы B, C и D».

Клиент SMB – серверу B: «Я установил соединение SMB с сервером A. Прошу наблюдать за сервером A и уведомить меня в случае его отказа».

Сервер B: «ОК. Удачного дня».

Чтобы воспользоваться преимуществами прозрачной отказоустойчивости SMB или службы-свидетеля, ничего делать не нужно. При создании нового ресурса общего доступа на отказоустойчивом кластере Windows Server 2012 функция прозрачной отказоустойчивости SMB включается автоматически. Процесс создания нового ресурса на кластере файловых серверов Windows Server 2012 направляет мастер. Вначале требуется решить, какой тип ресурса вы создаете. Ответ на этот вопрос помогает установить некоторые параметры по умолчанию для создаваемого ресурса, как показано на экране 1. Для всех типов ресурсов SMB режим Enable continuous availability включен (см. экран 2).

 

Экран 1. Создание общего файлового ресурса

 

Экран 2. Включение режима прозрачной отказоустойчивости

Схема SMB «активный/активный»

Ранее я уже говорил о необходимости сокращения паузы в работе подсистемы ввода-вывода при перемещении совместно используемого LUN с узла на узел. Похожая проблема возникает у Windows Server 2008 Hyper-V при перемещении виртуальных машин между узлами. Дело в том, что NTFS не является файловой системой коллективного пользования и не предусматривает возможность одновременного доступа к ней нескольких экземпляров операционной системы без риска повреждения. Эта проблема была решена за счет поддержки общего тома кластера cluster shared volume (CSV) в Windows Server 2008 R2. Благодаря CSV все узлы кластера могут одновременно получать доступ к группе логических устройств (LUN) для выполнения операций чтения и записи, что устраняет необходимость в демонтаже LUN на одних узлах и последующем монтаже на других.

Windows Server 2012 расширяет возможности применения CSV для конкретного типа файлового сервера, а именно, нового масштабируемого файлового сервера. Этот новый вариант предназначен для использования только при коллективном доступе к данным приложений, таких как базы данных SQL Server и виртуальные машины Hyper-V. Для других данных по-прежнему доступен традиционный вариант универсального файлового сервера (см. экран 3).

 

Экран 3. Выбор варианта файлового сервера

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

Использование масштабируемых файловых серверов имеет дополнительные преимущества. При создании обычного файлового сервера необходимо дать новому файловому серверу кластера NetBIOS-имя и уникальный IP-адрес. Этот IP-адрес должен храниться на том узле кластера, который в данный момент хостирует файловый сервер. При использовании масштабируемых файловых серверов хостами являются все узлы кластера. Таким образом, никаких дополнительных IP-адресов не требуется. Точкой доступа к IP-адресам узлов кластера служит распределенное сетевое имя Distributed Network Name (DNN).

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

Защита от ошибки соединения: многоканальное подключение SMB

Прозрачная отказоустойчивость SMB и схема SMB «активный/активный» позволяют избежать перерывов в работе, возникающих из-за отказа узла. Однако существуют и другие типы отказов, например ошибка соединения. Для противодействия подобным проблемам можно применять технологию многопутевого ввода/вывода Microsoft Multipath I/O (MPIO) с поддержкой нескольких маршрутов взаимодействия между сервером и хранилищем. В SMB 3.0 реализована функция многоканального подключения SMB, позволяющая клиенту SMB во время одного сеанса устанавливать несколько соединений, что обеспечивает защиту от ошибок подключения и повышает производительность.

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

Определить, работает ли на сервере функция многоканального подключения SMB, можно с помощью команды PowerShell Get-SMBConnection, позволяющей вывести список подключений SMB к ресурсу общего доступа. На экране 4 показан результат выполнения этой команды. Как мы видим, используется только одно подключение к серверу.

 

Экран 4. Команда PowerShell Get-SMBConnection выводит?с писок подключений SMB

Эта информация указывает на наличие единственного пригодного к использованию маршрута связи между клиентом SMB и сервером SMB. Если запустить команду Get-SmbMultichannelConnection с клиента, то ее выходным результатом будет список всех возможных путей, по которым можно установить соединение с сервером (см. экран 5).

 

Экран 5. Команда Get-SmbMultichannelConnection выводит? список всех возможных путей

Однако этот список формируется в результате «отложенной» проверки и не означает, что данный маршрут действительно может быть установлен между IP-адресами 10.1.3.1 и 10.1.2.1 клиента и сервера.

Узнать, какой путь фактически используется между клиентом и сервером, можно по ТСР-подключениям к удаленному порту 445, используемому для SMB. В моем случае проверка подтверждает, что я использую единственный возможный путь, а именно, удаленный адрес 192.168.1.30 (см. экран 6).

 

Экран 6. Проверка пути между клиентом и сервером

В отношении подключения клиента SMB к общему ресурсу SMB, хостируемому кластером по схеме «активный/активный», возникает очевидный вопрос: устанавливаются ли эти несколько вариантов соединений с разными узлами кластера? Ответ — нет. Клиент SMB получает один IP-адрес, принадлежащий одному из узлов в кластере, и все соединения устанавливаются с этим узлом. Все сеансы SMB для данного кластера, инициируемые клиентом SMB, всегда проходят с участием одного и того же узла. Это не вызывает проблем, поскольку кластер высокой отказоустойчивости, как правило, имеет сотни, если не тысячи, подключений клиентов SMB. Нагрузка распределяется равномерно по всему кластеру.

Максимальное увеличение пропускной способности: масштабирование на стороне приема и удаленный доступ к памяти

Еще один аспект SMB 3.0, на который следует обратить внимание, касается крупных магистралей сетевых соединений в современных информационных центрах. Многие информационные центры уже перешли со стандарта 1 Гбит/с на стандарт 10 Гбит/с. Однако по мере такого перехода проблему с производительностью начинает создавать процессор на сервере. Одно TCP-соединение может обрабатываться только одним ядром процессора, которое не способно справиться с 10-гигабитным потоком и таким образом ограничивает пропускную способность. Именно здесь оказывается полезной функция масштабирования на стороне приема Receive Side Scaling (RSS), с помощью которой единый сетевой интерфейс разделяется на несколько принимающих соединений, каждое из которых обслуживается отдельным процессорным ядром. Это позволяет в полной мере использовать имеющуюся пропускную способность. Большинство сетевых адаптеров современных серверов автоматически поддерживают RSS. Определить, поддерживает ли данное оборудование RSS, можно с помощью команды Get-SmbMultichannelConnection (см. экран 7).

 

Экран 7. Команда Get-SmbMultichannelConnection показывает доступность RSS

Заметим, что в выходных данных команды указано число 4 в качестве значений CurrentChannels и MaxChannels. Это значение по умолчанию для Windows Server 2012 при использовании сетевых карт с поддержкой RSS.

Если теперь проверить состояние многоканального SMB-соединения с сервером (см. экран 8), можно увидеть, что для IP-адреса, используемого SMB, установлены четыре отдельных соединения, что указывает на работу функции RSS.

 

Экран 8. Четыре отдельных соединения указывают на работу функции RSS

Может возникнуть вопрос: почему сетевой интерфейс с поддержкой RSS по умолчанию разделен на четыре соединения? В этом можно убедиться с помощью команды PowerShell Get-SmbClientConfiguration, позволяющей просмотреть настройки клиента SMB. В первой строке полученных в ответ данных будет указано число соединений на один сетевой интерфейс RSS. Это значение можно изменить, но оно выбрано не случайно. В Microsoft был проведен большой объем тестирования 10-гигабитных соединений, в ходе которого выяснилось, что четыре соединения дают наибольший выигрыш, тогда как при дальнейшем увеличении их числа этот выигрыш уменьшается. Тем не менее, если у вас есть соединения с пропускной способностью свыше 10 Гбит/с, то увеличение этого значения может дать положительный эффект.

Удаленный прямой доступ к памяти Remote Direct Memory Access (RDMA) – еще одна технология, позволяющая повысить пропускную способность и минимизировать нагрузку на сервер. Сетевые адаптеры с поддержкой RDMA могут обходить большую часть сетевого стека и соединяться напрямую, что позволяет снять нагрузку с хост-серверов. С помощью ранее упомянутой команды Get-SmbMultichannelConnection можно узнать, поддерживает ли сетевой адаптер RDMA. Начальная инициализация соединения SMB предусматривает проверку наличия поддержки RDMA на обоих концах соединения. Если такая поддержка есть, то соединение переключается на RDMA. В этом случае также никакой ручной настройки не требуется.

Мощное решение

SMB 3.0 используется только между операционными системами с поддержкой SMB 3.0, то есть Windows Server 2012 и Windows 8. Для других операционных систем применяется новая общая для них поддерживаемая версия SMB, определяемая в ходе взаимного согласования возможностей. Например, если система Windows 7 подключается к файловому серверу Windows Server 2012, то используется SMB 2.1, поскольку это самая новая из поддерживаемых Windows 7 версий.

Основным побудительным мотивом для внесения большинства изменений в SMB 3.0 было стремление сделать SMB протоколом для корпоративных приложений. Именно в этой сфере реализуется наибольший положительный эффект от применения SMB. Есть также выгоды для постоянных клиентов – например, тех, кто перешел на Windows 8. SMB 3.0 недоступен для версий, предшествующих Windows 8 и Windows Server 2012. Например, новое шифрование SMB устраняет необходимость в сложных инфраструктурах открытых ключей public key infrastructure (PKI) для обеспечения безопасности. В комбинации со многими другими реализованными в Windows Server 2012 усовершенствованиями хранилищ, SMB 3.0 переводит новую операционную систему в разряд мощных решений для хранения данных и открывает перед клиентами еще более широкие возможности.

www.osp.ru

Проблемы с доступом к шарам по SMB over NETBIOS из других подсетей

Только разобрались с обновлением MS16-072, меняющим привычную схему работы GPO, как обнаружились проблемы с еще одним июньским бюллетенем безопасности — MS16-077 и обновлением KB3165191. После установки этого обновления на серверные системы, стало невозможно подключиться по протоколу Netbios over TCP/IP к сетевым шарам с клиентов, расположенных в других ip подсетях.

Проблема в первую очередь проявилась с сетевыми сканерами, которые выполняют сканирование документов и складывают сканы в сетевую папку (SMB) на сервере. Документы перестали сохранятся, а на самом сканере появляется ошибка Cannot connect to server. Также возникли проблемы при подключении Samba клиентов к контроллерам домена (ошибки Access Denied  и No Logon Server Available). Что интересно, проблемы с доступом к Windows шарам возникли только у клиентов, расположенных в отличных от сервера подсетях.

После удаления обновления KB3165191 – доступ восстанавливался.

Посмотрим, что же делает обновление KB3165191. Согласно описанию, обновление накладывает ограничения на соединения NETBIOS из-за пределов локальной подсети. Таким образом, сетевой функционал, зависящий от NETBIOS (такой как SMB over NETBIOS, порты 137-139) не будет работать для клиентов из других подсетей. Обычный протокол SMB (445) порт при этом доступен отовсюду.

Чтобы изменить это поведение придется выполнить одно из следующих действий:

  • Удалить обновление безопасности KB3165191 (не самый лучший вариант)
  • В настройках клиентов, использующих NETBIOS перенастроить короткие имена серверов на FQDN (никогда не поздно)
  • На сервере создать в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters параметр типа Dword с именем  AllowNBToInternet и значением 1 (по умолчанию после обновления 0).

    reg add "HKLM\System\CurrentControlSet\Services\NetBT\Parameters" /v "AllowNBToInternet" /t REG_DWORD /d 1 /f

    После создания параметра нужно перезагрузить сервер.

В результате, сервер станет доступен NETBIOS клиентам из других подсетей.

winitpro.ru

Как отключить SMB 2.0 в Windows 7/2008

Протокол SMB (Message Blocks Protocol) используется в  Windows-системах по умолчанию для общего доступа к папкам и файлам. SMB 1.0 был разработан  для самых первых сетевых операционных систем Windows, таких как Microsoft LAN Manager и Windows for Workgroups, однако и в современных ОС Windows Server 2008, Windows 7 он продолжает использоваться в той или иной мере в своем изначальном формате.

SMB 2.0 впервые стал использоваться в ОС Windows Vista и Windows Server 2008. Его назначение – применение в сфере  сетевых файловых серверов нового поколения. В целях обратной совместимости Windows Server 2008 и Windows Vista поддерживают как SMB 1.0 так и SMB 2.0..

В SMB 2.0 появились следующие изменения:

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

Тестирование, заключающееся в копировании больших файлов данных между Windows Vista и Windows Server 2008, а затем между Vista и Windows 2003, показало, что при использовании протокола SMB 2.0 копирование файлов выполняется почти в 2  раза быстрее, чем в старых операционных системах на SMB 1.0.

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

При использовании терминов «клиент» и «сервер», в случае общего доступа файлам и принтерам, мы понимаем, что слово клиент не обязательно пользовательская ОС (Vista,7), а слово сервер не обязательно серверная ОС (Windows Server 2008). В некоторых случаях ОС с Vista будет может подключаться к ПК с Windows 7, который в данном случае будет выступать в качестве сервера.

Что следует запомнить: если обмен происходит между новыми операционными системами Microsoft(Windows 7,Vista,2008,2008 R2), тогда по умолчанию будет использоваться протокол SMB 2.0. Если в качестве клиента или сервера будет использоваться ОС прошлого поколения (Windows XP,2003,2000), тогда всегда будет задействован SMB 1.0В некоторых случаях для устранения неполадок в сетях или диагностики, может возникнуть необходимость отключить SMB 2.0. Итак, чтобы отключить поддержку SMB 2.0 на клиентской ОС, вы можете воспользоваться следующими командами:

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

Обратите внимание на дополнительный пробел после знака «=».

Чтобы включить SMB 2.0 на клиентской  ОС Windows 7, Vista, Windows Server 2008, выполните следующие команды:

sc config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc config mrxsmb20 start= auto

Опять обратите внимание на дополнительный пробел после знака «=».

Для того чтобы отключить SMB 2.0 на стороне сервера, выполните следующие действия:

  1. Запустите редактор реестра «regedit» на Windows Server 2008/R2.
  2. Перейдите к следующему разделу реестра.
 HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters
  1. Создайте новый параметр типа  REG_DWORD с именем » Smb2″ (без кавычек)
Value name: Smb2
Value type: REG_DWORD
0 = отключено
1 = включено
  1. Чтобы отключить SMB 2.0, сделайте этот параметр равным 0, чтобы активировать  SMB 2.0 используйте значение 1.
  2. После чего сервер нужно перезагрузить.

winitpro.ru

Отключение smb v1 или как защититься от wannacrypt

Добрый день уважаемые читатели, в прошлый раз я вам подробно рассказал, как защититься от шифровальщика, если он уже попал к вам на компьютер, сегодня же я хочу рассмотреть вопрос, как не дать ему к вам попасть из вне, мы разберем отключение smb v1 или как защититься от wannacrypt и вируса petya. Уверен, что описанный тут материал окажется для вас весьма полезным и актуальным, так как разновидностей данной заразы, будет еще очень много в будущем.

Что такое протокол SMB v1

Прежде, чем начать перекрывать кислород для вирусов шифровальщиков, я хочу вас познакомить с источником, через который они лезут и называется он протокол Server Message Block (SMB).

Server Message Block — это сетевой протокол, работающий на прикладном уровне модели OSI, для доступа к сетевым ресурсам, принтерам, папкам, для взаимодействия процессов. Наверняка многие из вас знают, такое понятие как UNC пути, вида \\server\share, когда вы обращаетесь к сетевой папке или принтеру, так например, сервер печати Windows, расшаривает их.

Ранее SMB протокол работал и NetBIOS прослойкой, где использовал порты UDP 137-138 и TCP 137, 139, но это было до появления 2000-го Windows, где порт поменяли на 445, он так же применяется и для входа компьютеров в домен Active Directory. Самая первая версию данного протокола, имела название «Common Internet File System» (CIFS ), ее придумали еще в далеких 90-х, я тогда еще пешком под стол ходил. Протокол долго не развивался и приобрел вторую версию, лишь в 2006 году с выходом провальной Windows Vista. Windows 8 уже принесла нам SMB 3.0.

Каждая новая версия реализации протокола, привносила новые возможности, и это логично, необходимо было увеличивать скорость передачи данных, так как локальные сети, уже превращались в гигабитные и очень часто стали появляться твердотельные накопители. Новые версии по старинке, поддерживали предыдущие, для обратной совместимости операционных систем и устройств, это и является Ахиллесовой пятой у него, через который лезут wannacrypt и petya.

Ниже вы можете посмотреть, эволюцию протокола SMB v1 с выходом новых операционных систем.

Для чего отключать smb v1

Расскажу небольшую предысторию о появлении вирусов wannacrypt и petya. В начале 2017 года, одна хакерская команда, смогла взломать службу АНБ и похитить у нее данные, о всевозможных лазейках в компьютерных системах, благодаря которым можно получать удаленный доступ к нужному компьютеру и следить за жертвой, получая о ней все данные. Среди этих дыр безопасности, были лазейки для:

Хакеры попытались продать все сворованное, но в итоге покупателей не нашли, не долго думая они выложили все это в сеть, тут и понеслось, другие хакеры и группы, быстро все это дело понахватали и создали свои вирусы, их очень много, но вот за май и июнь 2017 года, мир выучил названия двух, petya и wannacry (wannacrypt). Оба они используют старую уязвимость в протоколе smb v1, являющийся частью операционных систем Windos XP, вплоть до Windows 10, но у десятки все лучше, там по умолчанию работает версия SMB 3.1.1, поэтому она пока спит спокойно.

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

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

Что нужно чтобы не стать жертвой шифровальщиков

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

  1. Своевременно устанавливайте обновления в системе, так как это основная проблема большинства пораженных компьютеров
  2. Не устанавливайте не проверенный софт
  3. Посещайте только проверенные веб ресурсы
  4. Закройте лишние порты на фаэрволе
  5. Не открывайте электронные письма от неизвестных людей.

Как проверить можно ли заразить ваш компьютер

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

KB обновления защищающие от wannacrypt  и Petya

Вот подробный список KB для разных операционных систем Windows:

Windows XP

  • https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/

Windows Vista и Windows Server 2008

  • KB4012598 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012598
  • KB4012598 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012598

Windows 7

  • KB4012212 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012212
  • KB4012215 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012215
  • KB4012212 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012212
  • KB4012215 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012215

Windows Server 2008 R2

  • KB4012212 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012212
  • KB4012215 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012215

Windows 8.1

  • KB4012213 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012213
  • KB4012216 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012216
  • KB4012213 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012213
  • KB4012216 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012216

Windows Server 2012 R2

  • KB4012214 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012214
  • KB4012217 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012217
  • KB4012213 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012213
  • KB4012216 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012216

Windows 10

  • KB4012606 -32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012606
  • KB4012606 -64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4012606
  • Windows 10 1511 — KB4013198 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4013198
  • Windows 10 1511 — KB4013198 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4013198
  • Windows 10 1607 — KB4013429 — 32 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4013429
  • Windows 10 1607 — KB4013429 — 64 бита — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4013429

Windows Server 2016

  • KB4013429 — http://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4013429

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

  • Утилита SecurityChecker.v2
  • Power shell

Утилита SecurityChecker.v2

Данная утилита может показать, где включен smb v1 и 2.0, а так же проверить компьютер или компьютеры локальной сети на наличие нужного обновления.

В открывшейся программе, вам необходимо нажать кнопку «Add» и добавить компьютер или компьютеры, требующие проверки. Через кнопку KB вы можете подгрузить файл находящийся в корне утилиты с нужными KB для проверки, после чего нажимаете «Check». По результату проверки, вы увидите, стоит ли вам выполнить отключение smb v1 или же нет. На моем примере, вы видите, что и первая и вторая версии включены.

Проверить протокол smb v1 можно и через powershell. Открываем его от имени администратора и вводим такую команду:

get-hotfix -ComputerName имя вашего компьютера -Id нужная kb

Если у вас есть UNC соединения к вашему компьютеру, то вы можете посмотреть их версии командой

Как отключить smb v1

Я вам хочу рассказать о методах деактивирующих протокол SMB старой версии:

  • Через компоненты Windows
  • Через PowerShell
  • Через реестр Windows
  • Через групповую политику
  • Оставить и установить обновления
  • Через команду sc.exe config

Отключаем smb v1 через компоненты системы

Данный метод подойдет для любой не серверной версии Windows, начиная с Wista и заканчивая Windows 10.Вам необходимо открыть панель управления Windows. Нажимаете одновременно Win+R и в открывшемся окне вводите control panel, это такой универсальный метод, отработает в любой винде.

Находим пункт «Программы и компоненты»

Нажимаем «Включение и отключение компонентов Windows» именно тут, мы уберем доступ для wannacrypt  и petya

Снимаем галку «Поддержка общего доступа к файлам SMB 1.0/CIFS»

Начнется удаление компонента.

Все, теперь потребуется перезагрузка.

Теперь если со старого компьютера, по типу Windpws XP вы попытаетесь попасть на UNC шару, вы увидите ошибку

Если же вам необходимо сохранить его функциональность и быть защищенным, то устанавливаем нужные KB.

Установка KB против wannacrypt и petya

Выше вы найдете список исправлений для протокола smb v1, скачиваете их из центра обновлений.Это будут файлы формата msu.

Производите установку KB.

Вот так выглядит процесс установки KB.

Вам потребуется произвести перезагрузку системы. теперь, когда все обновления у вас установлены вам не страшны вирусы wannacrypt  и petya.

Отключаем smb v1 через powershell

Данный метод подойдет для серверной операционной системы Windows Server 2012 R2 и Windos 8.1, выполните вот такую команду:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

После ее выполнения smb v1 будет выключен.

Для отключения SMB версии 2 и 3 выполните:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Если захотите включить, то поменяйте $false на $true.

Теперь для Windows 7 и Windows 2008 R2, выполните следующее:

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

    Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB1 -Type DWORD -Value 0 -Force

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

    Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB2 -Type DWORD -Value 0 -Force

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

    Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB1 -Type DWORD -Value 1 -Force

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

    Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB2 -Type DWORD -Value 1 -Force

Отключаем smb v1 через реестр

Перед тем как править реестр Windows я советую вам сделать резервную копию, так на всякий случай. Открываем реестр, делается это через нажатие кнопок Win+R и ввода команды regedit.

Находим ветку:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Тут будет параметр SMB1 , по умолчанию там стоит 1, значит включено, меняем его на 0 и закрываем, после перезагрузки все будет выключено. Wannacrypt вас теперь не побеспокоит.

Если нужно отключить SMB2, то находим ветку и меняем там параметр SMB2, так же на ноль.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Отключить через DISM

Откройте командную стоку от имени администратора и введите команду:

dism /online /norestart /disable-feature /featurename:SMB1Protocol

Как видите еще один метод защититься от wannacrypt.

Отключение через sc.exe config

Начиная с Windows 7 вы можете выполнить внутри системы вот такие команды через cmd запущенного от имени администратора:

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

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

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

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

  • Чтобы отключить протоколы SMB версии 2 и 3 на SMB-клиенте, выполните следующие команды:

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

  • Чтобы включить протоколы SMB версии 2 и 3 на SMB-клиенте, выполните следующие команды:

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

Как защититься от wannacrypt в Active Directory

Когда речь идет о домене Active Directory, то у системного администратора сразу это ассоциируется с групповыми политиками. Давайте посмотрим как GPO поможет нам в массовом отключении smb v1. По сути групповая политика это изменение ключей реестра на клиентах. Открываем редактор и создаем новую политику, прилинковываем ее к нужному организационному подразделению и изменяем.

Политика для серверных ОС

Нас будет интересовать объект «Конфигурация компьютера — Настройка — Конфигурация Windows — Реестр», создаем элемент реестра.

  • Действие: Создать
  • Куст: HKEY_LOCAL_MACHINE
  • Путь к разделу: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • Имя параметра: SMB1
  • Тип значения: REG_DWORD.
  • Значение: 0

Политика для клиентских ОС

Для отключения поддержки 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, вы защититесь конечно от wannacrypt  и petya, но будьте осторожны, если у вас в локальной сети остались старые компьютеры, они не смогут связаться с контроллерами домена и не смогут пройти аутентификацию, так как не умеют работать по SMB 2

pyatilistnik.org

Добавить комментарий

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