How to enable and disable SMBv1, SMBv2, and SMBv3 in Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012
This article describes how to enable and disable Server Message Block (SMB) version 1 (SMBv1), SMB version 2 (SMBv2), and SMB version 3 (SMBv3) on the SMB client and server components.
Summary
In Windows 7 and Windows Server 2008 R2, disabling SMBv2 deactivates the following functionality:
- Request compounding — allows for sending multiple SMB 2 requests as a single network request
- Larger reads and writes — better use of faster networks
- Caching of folder and file properties — clients keep local copies of folders and files
- Durable handles — allow for connection to transparently reconnect to the server if there is a temporary disconnection
- Improved message signing — HMAC SHA-256 replaces MD5 as hashing algorithm
- Improved scalability for file sharing — number of users, shares, and open files per server greatly increased
- Support for symbolic links
- Client oplock leasing model — limits the data transferred between the client and server, improving performance on high-latency networks and increasing SMB server scalability
- Large MTU support — for full use of 10-gigabye (GB) Ethernet
- Improved energy efficiency — clients that have open files to a server can sleep
In Windows 8 and Windows Server 2012, disabling SMBv3 deactivates the following functionality (and also the SMBv2 functionality that is described in the previous list):
- Transparent Failover — clients reconnect without interruption to cluster nodes during maintenance or failover
- Scale Out concurrent access to shared data on all file cluster nodes
- Multichannel — aggregation of network bandwidth and fault tolerance if multiple paths are available between client and server
- SMB Direct adds RDMA networking support for very high performance, with low latency and low CPU utilization
- Encryption Provides end-to-end encryption and protects from eavesdropping on untrustworthy networks
- Directory Leasing — Improves application response times in branch offices through caching
- Performance Optimizations — optimizations for small random read/write I/O
More information
The SMBv2 protocol was introduced in Windows Vista and Windows Server 2008.
The SMBv3 protocol was introduced in Windows 8 and Windows Server 2012.
For more information about the capabilities of SMBv2 and SMBv3 capabilities, go to the following Microsoft TechNet websites:
Server Message Block overview
What’s New in SMB
-
How to enable or disable SMB protocols on the SMB server
Windows 8 and Windows Server 2012
Windows 8 and Windows Server 2012 introduce the new Set-SMBServerConfiguration Windows PowerShell cmdlet. The cmdlet enables you to enable or disable the SMBv1, SMBv2, and SMBv3 protocols on the server component.
Notes When you enable or disable SMBv2 in Windows 8 or in Windows Server 2012, SMBv3 is also enabled or disabled. This behavior occurs because these protocols share the same stack.
You do not have to restart the computer after you run the Set-SMBServerConfiguration cmdlet.
- To obtain the current state of the SMB server protocol configuration, run the following cmdlet:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
- To disable SMBv1 on the SMB server, run the following cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
- To disable SMBv2 and SMBv3 on the SMB server, run the following cmdlet:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
- To enable SMBv1 on the SMB server, run the following cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
- To enable SMBv2 and SMBv3 on the SMB server, run the following cmdlet:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Windows 7, Windows Server 2008 R2, Windows Vista, and Windows Server 2008
To enable or disable SMB protocols on an SMB Server that is runningWindows 7, Windows Server 2008 R2, Windows Vista, or Windows Server 2008, use Windows PowerShell or Registry Editor.
Windows PowerShell 2.0 or a later version of PowerShell
- To disable SMBv1 on the SMB server, run the following cmdlet:
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB1 -Type DWORD -Value 0 -Force
- To disable SMBv2 and SMBv3 on the SMB server, run the following cmdlet:
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB2 -Type DWORD -Value 0 -Force
- To enable SMBv1 on the SMB server, run the following cmdlet:
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB1 -Type DWORD -Value 1 -Force
- To enable SMBv2 and SMBv3 on the SMB server, run the following cmdlet:
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB2 -Type DWORD -Value 1 -Force
Note You must restart the computer after you make these changes.
Registry Editor
Important This article contains information about how to modify the registry. Make sure that you back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows
To enable or disable SMBv1 on the SMB server, configure the following registry key:
Registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\ParametersRegistry entry: SMB1
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled To enable or disable SMBv2 on the SMB server, configure the following registry key:Registry subkey:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Registry entry: SMB2
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = EnabledHow to enable or disable SMB protocols on the SMB client
Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012
Note When you enable or disable SMBv2 in Windows 8 or in Windows Server 2012, SMBv3 is also enabled or disabled. This behavior occurs because these protocols share the same stack.
- To disable SMBv1 on the SMB client, run the following commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsisc.exe config mrxsmb10 start= disabled
- To enable SMBv1 on the SMB client, run the following commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb10 start= auto
- To disable SMBv2 and SMBv3 on the SMB client, run the following commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb20 start= disabled
- To enable SMBv2 and SMBv3 on the SMB client, run the following commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb20 start= auto
Notes
- You must run these commands at an elevated command prompt.
- You must restart the computer after you make these changes.
- To obtain the current state of the SMB server protocol configuration, run the following cmdlet:
Published: 21/10/16 — 08:51:30 (Amanda Higgins)
Related Articles
Running DE8 on Windows Servers, do and dont’s (SMB1,SMB2,SMB3 and OpLocks)
With the release of DataEase 8.0, 8.1, 8.2 and Windows 7, 8 , 8.1 and Windows Server 2012 R2, we are frequently asked about how new versions of DataEase work when connecting to old versions of Windows servers and old versions of DataEase connecting to new…
Other sources of Network problems
This is a little old, but it is still useful. If you have switched off SMB2 and SMB3 on your networ as well as disabled OpLocks for SMB1 and still have problems with corruption, have a look below and see if some of these things might apply to your network…
Environment Variables in Windows XP, WIndows 7 and 8 (Complete List)
Environment variables is very useful to make general code. You can include them in paths directly to access files native to an active user/workstation/profile/session etc….
Сетевой протокол SMB (Server Message Block) используется для предоставления совместного удаленного доступа к файлам, принтерам и другим устройствам через порт TCP 445. В этой статье мы рассмотрим: какие версии (диалекты) протокола SMB доступны в различных версиях Windows (и как они соотносятся с версиями samba в Linux); как определить версию SMB на вашем компьютере; и как включить/отключить клиент и сервер SMBv1, SMBv2 и SMBv3.
Содержание:
- Версии протокола SMB в Windows
- Как проверить поддерживаемые версии SMB в Windows?
- Вывести используемые версии SMB с помощью Get-SMBConnection
- Об опасности использования SMBv1
- Включение и отключение SMBv1, SMBv2 и SMBv3 в Windows
Версии протокола SMB в Windows
Есть несколько версии протокола SMB (диалектов), которые последовательно появлялись в новых версиях Windows:
Для реализации протокола SMB в Linux/Unix системах используется samba. В скобках мы указали в каких версиях samba поддерживается каждый диалект SMB.
- CIFS — Windows NT 4.0;
- SMB 1.0 — Windows 2000;
- SMB 2.0 — Windows Server 2008 и Windows Vista SP1 (поддерживается в Samba 3.6);
- SMB 2.1 — Windows Server 2008 R2 и Windows 7 (поддерживается в Samba 4.0);
- SMB 3.0 — Windows Server 2012 и Windows 8 (поддерживается в Samba 4.2);
- SMB 3.02 — Windows Server 2012 R2 и Windows 8. 1 (не поддерживается в Samba);
- SMB 3.1.1 – Windows Server 2016 и Windows 10 (не поддерживается в Samba).
Начиная с версии Samba 4.14, по умолчанию используется SMB2.1.
При сетевом взаимодействии по протоколу SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая одновременно и клиентом, и сервером.
Ниже представлена сводная таблица, по которой можно определить версию протокола SMB, которая выбирается при взаимодействии разных версий Windows:
Операционная система | Win 10, Server 2016 | Windows 8.1, Server 2012 R2 |
Windows 8, Server 2012 |
Windows 7, Server 2008 R2 |
Windows Vista, Server 2008 |
Windows XP, Server 2003 и ниже |
Windows 10 ,
Windows Server 2016 |
SMB 3.1.1 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8.1 , Server 2012 R2 |
SMB 3.02 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8 , Server 2012 |
SMB 3.0 | SMB 3.0 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 7, Server 2008 R2 |
SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows Vista, Server 2008 |
SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 1.0 |
Windows XP, 2003 и ниже | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
К примеру, при подключении клиентского компьютера с Windows 8.1 к файловому серверу с Windows Server 2016 будет использоваться протокол SMB 3.0.2.
Согласно таблице Windows XP, Windows Server 2003 для доступа к общим файлам и папкам на сервере могут использовать только SMB 1.0, который в новых версиях Windows Server (2012 R2 / 2016) может быть отключен. Таким образом, если в вашей инфраструктуре одновременно используются компьютеры с Windows XP (снятой с поддержки), Windows Server 2003/R2 и сервера с Windows Server 2012 R2/2016/2019, устаревшие клиенты не смогут получить доступ к файлам и папкам на файловом сервере с новой ОС.
Если Windows Server 2016/2012 R2 с отключенным SMB v1.0 используется в качестве контроллера домена, значить клиенты на Windows XP/Server 2003 не смогут получить доступ к каталогам SYSVOL и NETLOGON на контроллерах домена и авторизоваться в AD.
На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 появляется ошибка:
The specified network name is no longer available
Как проверить поддерживаемые версии SMB в Windows?
Рассмотрим, как определить, какие версии протокола SMB поддерживаются на вашем компьютере Windows.
В Windows 10, 8.1 и Windows Server 2019/2016/2012R2 вы можете проверить состояние различных диалектов SMB протокола с помощью PowerShell:
Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol
Данная команда вернула, что протокол SMB1 отключен (
EnableSMB1Protocol=False
), а протоколы SMB2 и SMB3 включены (
EnableSMB1Protocol=True
).
Обратите внимание, что протоколы SMBv3 и SMBv2 тесно связаны между собой. Нельзя отключить или включить отдельно SMBv3 или SMBv2. Они всегда включаются/отключаются только совместно, т.к. используют один стек.
В Windows 7, Vista, Windows Server 2008 R2/2008:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Если в данной ветке реестра нет параметров с именами SMB1 или SMB2, значить протоколы SMB1 и SMB2 по умолчанию включены.
Также в этих версиях Windows вы можете проверить, какие диалекты SMB разрешено использовать в качестве клиентов с помощью команд:
sc.exe query mrxsmb10
SERVICE_NAME: mrxsmb10 TYPE : 2 FILE_SYSTEM_DRIVER STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
sc.exe query mrxsmb20
SERVICE_NAME: mrxsmb20 TYPE : 2 FILE_SYSTEM_DRIVER STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
В обоих случаях службы запущены (
STATE=4 Running
). Значит Windows может подключаться как к SMBv1, так и к SMBv2 серверам.
Вывести используемые версии SMB с помощью Get-SMBConnection
Как мы говорили раньше, компьютеры при взаимодействии по протоколу SMB используют максимальную версию, поддерживаемую как клиентом, так и сервером. Для определения версии SMB, используемой для доступа к удаленному компьютеру можно использовать командлет PowerShell
Get-SMBConnection
:
Версия SMB, используемая для подключения к удаленному серверу (ServerName) указана в столбце Dialect.
Можно вывести информацию о версиях SMB, используемых для доступа к конкретному серверу:
Get-SmbConnection -ServerName servername
Если нужно отобразить, используется ли SMB шифрование (появилось в SMB 3.0), выполните:
Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName
В Linux вывести список SMB подключения и используемые диалекты в samba можно командой:
$ sudo smbstatus
Чтобы на стороне сервера вывести список используемых клиентами версий протокола SMB и количество клиентов, используемых ту или иную версию протокола SMB, выполните команду:
Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique
В нашем примере имеется 825 клиентов, подключенных к серверу с помощью SMB 2.1 (Windows 7/Windows Server 2008 R2) и 12 клиентов SMB 3.02.
С помощью PowerShell можно включить аудит версий SMB, используемых для подключения:
Set-SmbServerConfiguration –AuditSmb1Access $true
События подключения затем можно извлечь из журналов Event Viewer с помощью PowerShell:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit
Об опасности использования SMBv1
Последние несколько лет Microsoft из соображений безопасности планомерно отключает устаревший протокол SMB 1.0. Связано это с большим количеством критических уязвимостей в этом протоколе (вспомните историю с эпидемиями вирусов-шифровальщиков wannacrypt и petya, которые использовали уязвимость именно в протоколе SMBv1). Microsoft и другие IT компании настоятельно рекомендуют отказаться от его использования.
Однако отключение SMBv1 может вызвать проблемы с доступом к общий файлам и папкам на новых версиях Windows 10 (Windows Server 2016/2019) с устаревших версий клиентов (Windows XP, Server 2003), сторонних ОС (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, старые версии Linux), различных старых NAS устройствах.
Если в вашей сети не осталось legacy устройств с поддержкой только SMBv1, обязательно отключайте эту версию диалекта в Windows.
В том случае, если в вашей сети остались клиенты с Windows XP, Windows Server 2003 или другие устройства, которые поддерживают только SMBv1, их нужно как можно скорее обновить или тщательно изолировать.
Включение и отключение SMBv1, SMBv2 и SMBv3 в Windows
Рассмотрим способы включения, отключения различных версий SMB в Windows. Мы рассматриваем отдельно включение клиента и сервера SMB (это разные компоненты).
Windows 10, 8.1, Windows Server 2019/2016/2012R2:
Отключить клиент и сервер SMBv1:
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Отключить только SMBv1 сервер:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Включить клиент и сервер SMBv1:
Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Включить только SMBv1 сервер:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Отключить сервер SMBv2 и SMBv3:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
Включить сервер SMBv2 и SMBv3:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Windows 7, Vista, Windows Server 2008 R2/2008:
Отключить SMBv1 сервер:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Включить SMBv1 сервер:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Отключить SMBv1 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Включить SMBv1 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
Отключить SMBv2 сервер:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
Включить SMBv2 сервер
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force
Отключить SMBv2 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
Включить SMBv2 клиент:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
Для отключения сервера SMBv1 на всех компьютерах независимо от версии Windows можно распространить параметр реестра типа REG_DWORD с именем SMB1 и значением 0 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters)на через GPO.
Для отключения SMBv2 нужно в этой же ветке установить параметр SMB2=0.
Для отключения SMBv1 клиента нужно распространить такой параметр реестра:
- Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
- Name: Start
- Type: REG_DWORD
- Value: 4
При отключении SMB 1.0/CIFS File Sharing Support в Windows вы можете столкнуться с ошибкой “0x80070035, не найден сетевой путь”, ошибкой при доступе к общим папкам, и проблемами обнаружения компьютеров в сетевом окружении. В этом случае вместо служба обозревателя компьютеров (Computer Browser) нужно использовать службы обнаружения (линк).
The following post shows detailed steps to enable and disable the Server Message Block (SMB) versions SMBv1, SMBv2 & SMBv3 on the SMB server and SMB client. The SMBv2 protocol was introduced in Windows Vista & Windows Server 2008 and the SMBv3 was introduced in Windows 8 and Windows Server 2012.
The below-given steps apply only to the following Windows versions:
• Windows Vista Enterprise
• Windows Vista Business
• Windows Vista Home Basic
• Windows Vista Home Premium
• Windows Vista Ultimate
• Windows 7 Enterprise
• Windows 7 Home Basic
• Windows 7 Home Premium
• Windows 7 Professional
• Windows 7 Ultimate
• Windows Server 2008 Datacenter
• Windows Server 2008 Enterprise
• Windows Server 2008 Standard
• Windows Server 2008 R2 Datacenter
• Windows Server 2008 R2 Enterprise
• Windows Server 2008 R2 Standard
• Windows 8
• Windows 8 Enterprise
• Windows 8 Pro
• Windows Server 2012 Datacenter
• Windows Server 2012 Essentials
• Windows Server 2012 Foundation
• Windows Server 2012 Standard
Important to Note:
It is recommended not to keep the SMBv2 or SMBv3 disabled. It should only be disabled for temporary troubleshooting. Keeping it disabled may deactivate various functions of the windows server. The features which might get deactivated due to disabling SMBv2 & SMBv3 are mentioned below:
Disabling SMBv2 on Windows 7 & Windows Server 2008 R2 will deactivate the below functions:
• Request compounding – it enables users to send multiple SMB 2 requests as a single network request
• Larger reads and writes – better use of faster networks
• Caching of folder and file properties – clients keep local copies of folders and files
• Durable handles – when a temporary disconnection is there, it enables for connection to transparently rejoin to the server
• Improved message signing – HMAC SHA-256 replaces MD5 as hashing algorithm
• Improved scalability for file sharing – increases the no. of users, shares, and open files per server
• Support for symbolic links
• Client oplock leasing model – it automatically limits the volume of data transferred in between the client and server, resulting in improved performance on high-latency networks and increasing the scalability of SMB server
• Large MTU support – for full use of 10-gigabyte (GB) Ethernet
• Enhanced energy efficiency – clients that have open files to a server can sleep
Disabling SMBv3 on Windows 8 & Windows Server 2012 will deactivate the below as well as above mentioned functions:
• Transparent Failover – it enables clients to rejoin the cluster nodes during the maintenance or failover without any interruption
• Scale Out – it allows concurrent access to shared data on all file cluster nodes
• Multichannel – aggregation of network bandwidth and fault tolerance if multiple paths are available between client and server
• SMB Direct – adds RDMA networking support for very high performance, with low latency and low CPU utilization
• Encryption – offers end-to-end encryption and completely defends from snooping on untrustworthy networks
• Directory Leasing – its caching functionality helps in improving the application response times in branch offices
• Performance Optimizations – optimizations for small random read/write I/O
Steps to Enable and Disable SMB protocols on the SMB Server
Microsoft Windows 8 and Windows Server 2012 have introduced a new cmdlet [Set-SMBServerConfiguration] in the Windows PowerShell which allows you to enable and disable the SMBv1, SMBv2 & SMBv3 protocols on the server. When you enable or disable the Server Message Block version 2 (SMBv2) in Windows 8 or in Windows Server 2012, automatically the SMBv3 is enabled or disabled, as the same stack is shared by the SMB protocols. Also, there is no need to restart your system once you run the Set-SMBServerConfiguration cmdlet.
Get the current state of the configuration of the SMB server protocol by running the below command:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
Disables the SMBv1 on the SMB server by running the below command:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Disables the SMBv2 and SMBv3 on the SMB server by running the below command:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
Enables the SMBv1 on the SMB server by running the below command:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Enables the SMBv2 and SMBv3 on the SMB server by running the below command:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Steps to Enable and Disable the SMB protocols on SMB Server running Windows 7, Windows Server 2008 R2, Windows Vista, or Windows Server 2008.
Using the Windows PowerShell 2.0 or later version:
Disables the SMBv1 on the SMB server by running the below command:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB1 -Value 0 –Force
Disables the SMBv2 and SMBv3 on the SMB server by running the below command:
Set-ItemProperty –Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB2 –Value 0 –Force
Enables the SMBv1 on the SMB server by running the below command:
Set-ItemProperty –Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB1 –Value 1 –Force
Enables the SMBv2 and SMBv3 on the SMB server by running the below command:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB2 -Value 1 -Force
Kindly note that you need to restart your system once you make the changes to the SMB server.
Using Registry Editor:
Important to Note:
• Before making any changes to the registry, make sure to back up it.
Steps to enable and disable the SMBv1 on the SMB server using the registry:
Registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Registry entry: SMB1
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled
Steps to enable and disable SMBv2 on the SMB server using the registry:
Registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Registry entry: SMB2
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled
Steps to Enable and Disable SMB protocols on the SMB client
The below steps apply to Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012.
Disables the SMBv1 on the SMB client by running the below commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Enables the SMBv1 on the SMB client by running the below commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
Disables the SMBv2 and SMBv3 on the SMB client by running the below commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
Enables the SMBv2 and SMBv3 on the SMB client by running the below commands:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
Important to Note:
• The commands be run at a raised command prompt.
• The system must be restarted once you make these changes.
Posted in
: Citrix, Virtual Apps and Desktops, Windows Server
By Stina Perbo
Translate with Google ⟶
6 years ago
When installing Provision Services 7.x and below on a Windows 2008 R2 or Windows 2012 R2 – The Provisioning installer will disable SMB2 and only allow SMB1 on the server.
NOTE: SMB2 will still be enabled with a new install of PVS 7.13 (Thanks Andrew Wood).
Verify which SMB protocols are enabled on Windows 2012 R2 by running the following powershell command:
Get-SmbServerConfiguration | Select EnableSMB1Protocol,EnableSMB2Protocol
View SMB Protocols
SMB 1.0 (or SMB1) – Used in Windows 2000, Windows XP and Windows Server 2003 R2 is no longer supported and you should use SMB2 or SMB3 which has many improvements from its predecessor. Another big reason is to prevent the security-hole that the WannaCry/Wcry/WannaCrypt0r-ransomware utilizes to infect and spread if you have not installed the security patch MS from Microsoft released 14th of March 2017.
Here’s a very brief summary of what changed with each version of SMB:
- From SMB 1.0 to SMB 2.0 – The first major redesign of SMB – Windows Vista (SP1 or later) and Windows Server 2008
- Increased file sharing scalability
- Improved performance
- Request compounding
- Asynchronous operations
- Larger reads/writes
- More secure and robust
- Small command set
- Signing now uses HMAC SHA-256 instead of MD5
- SMB2 durability
- From SMB 2.0 to SMB 2.1 – The version used in Windows 7 and Windows Server 2008 R2
- File leasing improvements
- Large MTU support
- BranchCache
- SMB 3.0 – The version used in Windows 8 and Windows Server 2012
SMB2 has a requirement to utilize Oplocks. Enabling Oplocks will not cause any failures so long as the write cache is not stored on the Provisioning Server.
SMB2.1 introduced leasing and is more flexible and results in significant performance improvement in a high latency network.
If the write cache is on the PVS server then this would happen:
- You have two PVS servers, PVS1 and PVS2.
- The write cache for targets is hosted on \\FileSRV01\store
- A target device is connected to PVS1 and PVS1 becomes unavailable.
- The target device fails over and connects to PVS2.
- PVS2 cannot connect to the write cache file because PVS1 still has the exclusive OPlock to the file. Eventually, the OPlock will timeout and PVS2 will be able to connect to the write cache file, but there will be a delay.
ENABLE SMB2 and DISABLE SMB1
To activate SMB2 and disable SMB1 on Windows 2008 run the following PowerShell command:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force
To activate SMB2 and disable SMB1 on Windows 2012 run the following PowerShell command:
Set-SmbServerConfiguration -EnableSMB2Protocol $true Set-SmbServerConfiguration -EnableSMB1Protocol $false Get-SmbServerConfiguration | Select EnableSMB1Protocol,EnableSMB2Protocol
A reboot is required to activate the new settings. As always, perform any changes in a test scenario first, before deploying into production. This is important since Windows XP and Windows 2003 utilizes SMB1 and will not be able to communicate with servers over SMB where SMB1 has been disabled.
If you have any questions or feedback about above, feel free to leave a comment below!
Tags
: Citrix, Provisioning
Сетевой протокол Server Message Block (SMB) используется для совместного использования удаленного доступа к файлам, принтерам и другим устройствам через TCP-порт 445. В этой статье мы рассмотрим, какие версии (диалекты) SMB доступны в разных версиях Windows. (и как они соотносятся с версиями самбы в Linux); как определить версию SMB на вашем компьютере; и как включить / отключить клиентов и серверы SMBv1, SMBv2 и SMBv3.
SMB (Server Message Block) является протоколом, который используется для обмена файлами, печати и других операций между компьютерами в сети Windows. В Windows можно включать и отключать определенные версии протокола SMB в зависимости от требований безопасности и совместимости.
Для того чтобы определить, какие версии протокола SMB включены в Windows, необходимо выполнить следующие действия:
- Откройте командную строку от имени администратора.
- Введите команду
sc.exe qc lanmanworkstation
и нажмите Enter. - В выводе командной строки найдите строку “DEPENDENCIES” и проверьте, есть ли там ссылки на “mrxsmb10” (SMBv1), “mrxsmb20” (SMBv2) и/или “mrxsmb30” (SMBv3).
- Если ссылки на SMBv1 есть в “DEPENDENCIES”, это означает, что SMBv1 включен в Windows. Если ссылки на SMBv2 и/или SMBv3 есть в “DEPENDENCIES”, это означает, что соответствующие версии SMB включены в Windows.
Если необходимо отключить или включить определенную версию SMB, можно воспользоваться следующей инструкцией:
- Откройте “Панель управления” и выберите “Программы и компоненты”.
- Нажмите “Включение или отключение компонентов Windows”.
- Раскройте ветвь “Протокол SMB 1.0/CIFS файловая система” и уберите или поставьте галочку напротив “Клиент SMB 1.0/CIFS”.
- Раскройте ветвь “Поддержка SMB 1.0/CIFS” и уберите или поставьте галочку напротив “Сервер SMB 1.0/CIFS”.
- Раскройте ветвь “Поддержка SMB 2.0/CIFS файловая система” и уберите или поставьте галочку напротив “Клиент SMB 2.0/CIFS”.
- Раскройте ветвь “Поддержка SMB 3.0/CIFS файловая система” и уберите или поставьте галочку напротив “Клиент SMB 3.0/CIFS”.
- Нажмите “OK” и перезагрузите компьютер, если вам будет предложено это сделать.
При изменении настроек протокола SMB рекомендуется включать только те версии протокола, которые действительно необходимы, и отключать устаревшие версии протокола SMB, такие как SMBv1
Существует несколько версий протокола SMB (диалектов), которые постоянно появляются в новых версиях Windows:
Samba используется для реализации протокола SMB в системах Linux / Unix. В скобках мы указали, в каких версиях самбы поддерживается каждый диалект SMB.
- CIFS – Windows NT 4.0;
- SMB 1.0 – Windows 2000;
- SMB 2.0 – Windows Server 2008 и Windows Vista SP1 (поддерживается в Samba 3.6);
- SMB 2.1 – Windows Server 2008 R2 и Windows 7 (поддерживается в Samba 4.0);
- SMB 3.0 – Windows Server 2012 и Windows 8 (поддерживается в Samba 4.2);
- SMB 3.02 – Windows Server 2012 R2 и Windows 8.1 (не поддерживается в Samba);
- SMB 3.1.1 – Windows Server 2016 и Windows 10 (не поддерживается в Samba).
Начиная с Samba 4.14, по умолчанию используется SMB2.1.
В сети SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая как клиентом, так и сервером.
Ниже представлена сводная таблица, по которой вы можете определить версию протокола SMB, выбранную при взаимодействии с разными версиями Windows:
Операционная система | Win 10, Сервер 2016 | Windows 8.1, Сервер 2012 R2 |
Windows 8, Сервер 2012 |
Windows 7, Сервер 2008 R2 |
Виндоус виста, Сервер 2008 |
Windows XP, Server 2003 и более ранние версии |
Windows 10 , Windows Server 2016 |
SMB 3.1.1 | SMB 3.02 | МСП 3.0 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Windows 8.1 , Сервер 2012 R2 |
SMB 3.02 | SMB 3.02 | МСП 3.0 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Windows 8 , Сервер 2012 |
МСП 3.0 | МСП 3.0 | МСП 3.0 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Windows 7, Сервер 2008 R2 |
SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Виндоус виста, Сервер 2008 |
МСБ 2.0 | МСБ 2.0 | МСБ 2.0 | МСБ 2.0 | МСБ 2.0 | SMB 1.0 |
Windows XP, 2003 и ранее | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
Например, когда клиентский компьютер Windows 8.1 подключается к файловому серверу Windows Server 2016, он будет использовать SMB 3.0.2.
Согласно таблице Windows XP, Windows Server 2003 может использовать SMB 1.0 только для доступа к общим файлам и папкам на сервере, который можно отключить в более новых версиях Windows Server (2012 R2 / 2016). Следовательно, если в инфраструктуре одновременно используются компьютеры под управлением Windows XP (прекращено), Windows Server 2003 / R2 и серверы под управлением Windows Server 2012 R2 / 2016/2019, устаревшие клиенты не смогут получить доступ к файлам и папкам в файле сервер с новой операционной системой.
Если Windows Server 2016/2012 R2 с отключенным SMB v1.0 используется в качестве контроллера домена, клиенты в Windows XP / Server 2003 не смогут получить доступ к каталогам SYSVOL и NETLOGON на контроллерах домена и доступ к AD.
На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 отображается ошибка:
Указанное сетевое имя больше не доступно
Как проверить поддерживаемые версии SMB в Windows?
Давайте посмотрим, как определить, какие версии протокола SMB поддерживаются на вашем компьютере с Windows.
В Windows 10, 8.1 и Windows Server 2019/2016 / 2012R2 вы можете проверить статус различных диалектов протокола SMB с помощью PowerShell:
Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol
Эта команда вернула протокол SMB1 отключенным (
EnableSMB1Protocol=False
) и включенным протоколом SMB2 и SMB3 (
EnableSMB1Protocol=True
).
Обратите внимание, что протоколы SMBv3 и SMBv2 тесно связаны. SMBv3 или SMBv2 нельзя отключить или включить отдельно. Они всегда включаются / отключаются только вместе, потому что для этого используется стек.
В Windows 7, Vista, Windows Server 2008 R2 / 2008:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty
Сетевой протокол Server Message Block (SMB) используется для совместного использования удаленного доступа к файлам, принтерам и другим устройствам через TCP-порт 445. В этой статье мы рассмотрим, какие версии (диалекты) SMB доступны в разных версиях Windows. (и как они соотносятся с версиями самбы в Linux); как определить версию SMB на вашем компьютере; и как включить / отключить клиентов и серверы SMBv1, SMBv2 и SMBv3.
Версии протокола SMB в Windows
Существует несколько версий протокола SMB (диалектов), которые постоянно появляются в новых версиях Windows:
Samba используется для реализации протокола SMB в системах Linux / Unix. В скобках мы указали, в каких версиях самбы поддерживается каждый диалект SMB.
- CIFS – Windows NT 4.0;
- SMB 1.0 – Windows 2000;
- SMB 2.0 – Windows Server 2008 и Windows Vista SP1 (поддерживается в Samba 3.6);
- SMB 2.1 – Windows Server 2008 R2 и Windows 7 (поддерживается в Samba 4.0);
- SMB 3.0 – Windows Server 2012 и Windows 8 (поддерживается в Samba 4.2);
- SMB 3.02 – Windows Server 2012 R2 и Windows 8.1 (не поддерживается в Samba);
- SMB 3.1.1 – Windows Server 2016 и Windows 10 (не поддерживается в Samba).
Начиная с Samba 4.14, по умолчанию используется SMB2.1.
В сети SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая как клиентом, так и сервером.
Ниже представлена сводная таблица, по которой вы можете определить версию протокола SMB, выбранную при взаимодействии с разными версиями Windows:
Операционная система | Win 10, Сервер 2016 | Windows 8.1, Сервер 2012 R2 |
Windows 8, Сервер 2012 |
Windows 7, Сервер 2008 R2 |
Виндоус виста, Сервер 2008 |
Windows XP, Server 2003 и более ранние версии |
Windows 10 , Windows Server 2016 |
SMB 3.1.1 | SMB 3.02 | МСП 3.0 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Windows 8.1 , Сервер 2012 R2 |
SMB 3.02 | SMB 3.02 | МСП 3.0 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Windows 8 , Сервер 2012 |
МСП 3.0 | МСП 3.0 | МСП 3.0 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Windows 7, Сервер 2008 R2 |
SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | МСБ 2.0 | SMB 1.0 |
Виндоус виста, Сервер 2008 |
МСБ 2.0 | МСБ 2.0 | МСБ 2.0 | МСБ 2.0 | МСБ 2.0 | SMB 1.0 |
Windows XP, 2003 и ранее | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
Например, когда клиентский компьютер Windows 8.1 подключается к файловому серверу Windows Server 2016, он будет использовать SMB 3.0.2.
Согласно таблице Windows XP, Windows Server 2003 может использовать SMB 1.0 только для доступа к общим файлам и папкам на сервере, который можно отключить в более новых версиях Windows Server (2012 R2 / 2016). Следовательно, если в инфраструктуре одновременно используются компьютеры под управлением Windows XP (прекращено), Windows Server 2003 / R2 и серверы под управлением Windows Server 2012 R2 / 2016/2019, устаревшие клиенты не смогут получить доступ к файлам и папкам в файле сервер с новой операционной системой.
Если Windows Server 2016/2012 R2 с отключенным SMB v1.0 используется в качестве контроллера домена, клиенты в Windows XP / Server 2003 не смогут получить доступ к каталогам SYSVOL и NETLOGON на контроллерах домена и доступ к AD.
На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 отображается ошибка:
Указанное сетевое имя больше не доступно
Как проверить поддерживаемые версии SMB в Windows?
Давайте посмотрим, как определить, какие версии протокола SMB поддерживаются на вашем компьютере с Windows.
В Windows 10, 8.1 и Windows Server 2019/2016 / 2012R2 вы можете проверить статус различных диалектов протокола SMB с помощью PowerShell:
Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol
Эта команда вернула протокол SMB1 отключенным (
EnableSMB1Protocol=False
) и включенным протоколом SMB2 и SMB3 (
EnableSMB1Protocol=True
).
Обратите внимание, что протоколы SMBv3 и SMBv2 тесно связаны. SMBv3 или SMBv2 нельзя отключить или включить отдельно. Они всегда включаются / отключаются только вместе, потому что для этого используется стек.
В Windows 7, Vista, Windows Server 2008 R2 / 2008:
sc.exe query mrxsmb10
Если этот раздел реестра не содержит параметров с именами SMB1 или SMB2, протоколы SMB1 и SMB2 включены по умолчанию.
Даже в этих версиях Windows вы можете проверить, какие диалекты SMB можно использовать в качестве клиента, с помощью команд:
sc.exe query mrxsmb20
SERVICE_NAME: mrxsmb10 TYPE: 2 FILE_SYSTEM_DRIVER STATUS: 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE: 0 (0x0) SERVICE_EXIT_CODE: 0 (WOx0) CHINT
STATE=4 Running
SERVICE_NAME: mrxsmb20 TYPE: 2 FILE_SYSTEM_DRIVER STATUS: 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE: 0 (0x0) SERVICE_EXIT_CODE: 0 (0xA) 0 CHECKINT
В обоих случаях службы работают (
Get-SMBConnection
). Это означает, что Windows может подключаться как к серверам SMBv1, так и к SMBv2.
Вывести используемые версии SMB с помощью Get-SMBConnection
Как мы уже говорили ранее, компьютеры, обменивающиеся данными по SMB, используют максимальную версию, поддерживаемую как клиентом, так и сервером. Вы можете использовать командлет PowerShell
Get-SmbConnection -ServerName servername
, чтобы определить версию SMB, используемую для доступа к удаленному компьютеру
Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName
:
Версия SMB, используемая для подключения к удаленному серверу (ServerName), указана в столбце Dialect.
вы можете просмотреть информацию о версиях SMB, используемых для доступа к определенному серверу:
$ sudo smbstatus
Если вы хотите узнать, используется ли шифрование SMB (введенное в SMB 3.0), запустите:
Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique
В Linux вы можете увидеть список SMB-соединений и диалектов, используемых в самбе, с помощью команды:
Set-SmbServerConfiguration –AuditSmb1Access $true
Чтобы просмотреть на стороне сервера список версий протокола SMB, используемых клиентами, и количество клиентов, используемых конкретной версией протокола SMB, выполните команду:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit
В нашем примере к серверу подключено 825 клиентов с использованием SMB 2.1 (Windows 7 / Windows Server 2008 R2) и 12 клиентов SMB 3.02.
вы можете использовать PowerShell, чтобы включить управление версиями SMB, используемую для подключения:
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Затем события подключения можно получить из журналов средства просмотра событий:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Об опасности использования SMBv1
В последние годы Microsoft систематически отключает устаревший протокол SMB 1.0 из соображений безопасности. Это связано с большим количеством критических уязвимостей в этом протоколе (вспомните историю со вспышками программ-вымогателей wannacrypt и petya, которые использовали уязвимость в протоколе SMBv1). Microsoft и другие ИТ-компании настоятельно рекомендуют вам прекратить его использование.
Однако отключение SMBv1 может вызвать проблемы с доступом к общим файлам и папкам в более новых версиях Windows 10 (Windows Server 2016/2019) из устаревших клиентов (Windows XP, Server 2003), сторонних операционных систем (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, старые версии Linux), различные старые устройства NAS.
Если в вашей сети не осталось устаревших устройств, поддерживающих только SMBv1, обязательно отключите эту версию диалекта в Windows.
Если у вас есть клиенты под управлением Windows XP, Windows Server 2003 или других устройств, которые поддерживают только SMBv1 в вашей сети, вам необходимо как можно скорее полностью обновить или изолировать их.
Включение и отключение SMBv1, SMBv2 и SMBv3 в Windows
Давайте рассмотрим способы включения и отключения разных версий SMB в Windows. Мы пытаемся включить SMB-клиент и сервер отдельно (это разные компоненты).
Windows 10, 8.1, Windows Server 2019/2016 / 2012R2:
Отключите клиент и сервер SMBv1:
Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Отключить только сервер SMBv1:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Включите клиент и сервер SMBv1:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
Включить только сервер SMBv1:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Узнайте больше о протоколе SMBv1 в Windows 10 и Windows Server 2016/2019.
Отключите серверы SMBv2 и SMBv3:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Включите SMBv2 и SMBv3 Server:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Windows 7, Vista, Windows Server 2008 R2 / 2008:
Отключить сервер SMBv1:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Включите сервер SMBv1:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
Отключить клиент SMBv1:
конфигурация sc.exe lanmanworkstation зависит от = bowser / mrxsmb20 / nsi
sc.exe config mrxsmb10 start = отключено
Включите клиент SMBv1:
конфигурация sc.exe lanmanworkstation зависит от Bowser / mrxsmb10 / mrxsmb20 / nsi
sc.exe config mrxsmb10 start = auto
Отключите сервер SMBv2:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
Включить сервер SMBv2
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force
Отключите клиент SMBv2:
конфигурация sc.exe lanmanworkstation зависит от = bowser / mrxsmb10 / nsi
sc.exe config mrxsmb20 start = отключено
Включите клиент SMBv2:
конфигурация sc.exe lanmanworkstation зависит от Bowser / mrxsmb10 / mrxsmb20 / nsi
sc.exe config mrxsmb20 start = auto
Чтобы отключить сервер SMBv1 на всех компьютерах, независимо от версии Windows, вы можете распространить значение реестра REG_DWORD с именем SMB1 и значение 0 (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters) через GPO.
Чтобы отключить SMBv2, установите параметр SMB2 = 0 в той же ветви.
Чтобы отключить клиент SMBv1, вам необходимо распространить следующий раздел реестра:
- Ключ: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ mrxsmb10
- Имя: Начало
- Тип: REG_DWORD
- Значение: 4
При отключении поддержки общего доступа к файлам SMB 1.0 / CIFS в Windows вы можете столкнуться с ошибкой «0x80070035, сетевой путь не найден», ошибкой доступа к общим папкам и проблемами обнаружения компьютера в непосредственной близости от сети. В этом случае вместо службы обозревателя компьютеров нужно использовать службу обнаружения (ссылки).
Источник изображения: winitpro.ru.pspath}
Если этот раздел реестра не содержит параметров с именами SMB1 или SMB2, протоколы SMB1 и SMB2 включены по умолчанию.
Даже в этих версиях Windows вы можете проверить, какие диалекты SMB можно использовать в качестве клиента, с помощью команд:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
SERVICE_NAME: mrxsmb10 TYPE: 2 FILE_SYSTEM_DRIVER STATUS: 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE: 0 (0x0) SERVICE_EXIT_CODE: 0 (WOx0) CHINT
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
SERVICE_NAME: mrxsmb20 TYPE: 2 FILE_SYSTEM_DRIVER STATUS: 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE: 0 (0x0) SERVICE_EXIT_CODE: 0 (0xA) 0 CHECKINT
В обоих случаях службы работают ([*]). Это означает, что Windows может подключаться как к серверам SMBv1, так и к SMBv2.
Вывести используемые версии SMB с помощью Get-SMBConnection
Как мы уже говорили ранее, компьютеры, обменивающиеся данными по SMB, используют максимальную версию, поддерживаемую как клиентом, так и сервером. Вы можете использовать командлет PowerShell [*], чтобы определить версию SMB, используемую для доступа к удаленному компьютеру [*]:
Версия SMB, используемая для подключения к удаленному серверу (ServerName), указана в столбце Dialect.
вы можете просмотреть информацию о версиях SMB, используемых для доступа к определенному серверу:
[*]
Если вы хотите узнать, используется ли шифрование SMB (введенное в SMB 3.0), запустите:
[*]
В Linux вы можете увидеть список SMB-соединений и диалектов, используемых в самбе, с помощью команды:
[*]
Чтобы просмотреть на стороне сервера список версий протокола SMB, используемых клиентами, и количество клиентов, используемых конкретной версией протокола SMB, выполните команду:
[*]
В нашем примере к серверу подключено 825 клиентов с использованием SMB 2.1 (Windows 7 / Windows Server 2008 R2) и 12 клиентов SMB 3.02.
вы можете использовать PowerShell, чтобы включить управление версиями SMB, используемую для подключения:
[*]
Затем события подключения можно получить из журналов средства просмотра событий:
[*]
Об опасности использования SMBv1
В последние годы Microsoft систематически отключает устаревший протокол SMB 1.0 из соображений безопасности. Это связано с большим количеством критических уязвимостей в этом протоколе (вспомните историю со вспышками программ-вымогателей wannacrypt и petya, которые использовали уязвимость в протоколе SMBv1). Microsoft и другие ИТ-компании настоятельно рекомендуют вам прекратить его использование.
Однако отключение SMBv1 может вызвать проблемы с доступом к общим файлам и папкам в более новых версиях Windows 10 (Windows Server 2016/2019) из устаревших клиентов (Windows XP, Server 2003), сторонних операционных систем (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, старые версии Linux), различные старые устройства NAS.
Если в вашей сети не осталось устаревших устройств, поддерживающих только SMBv1, обязательно отключите эту версию диалекта в Windows.
Если у вас есть клиенты под управлением Windows XP, Windows Server 2003 или других устройств, которые поддерживают только SMBv1 в вашей сети, вам необходимо как можно скорее полностью обновить или изолировать их.
Включение и отключение SMBv1, SMBv2 и SMBv3 в Windows
Давайте рассмотрим способы включения и отключения разных версий SMB в Windows. Мы пытаемся включить SMB-клиент и сервер отдельно (это разные компоненты).
Windows 10, 8.1, Windows Server 2019/2016 / 2012R2:
Отключите клиент и сервер SMBv1:
[*]
Отключить только сервер SMBv1:
[*]
Включите клиент и сервер SMBv1:
[*]
Включить только сервер SMBv1:
[*]
Узнайте больше о протоколе SMBv1 в Windows 10 и Windows Server 2016/2019.
Отключите серверы SMBv2 и SMBv3:
[*]
Включите SMBv2 и SMBv3 Server:
[*]
Windows 7, Vista, Windows Server 2008 R2 / 2008:
Отключить сервер SMBv1:
[*]
Включите сервер SMBv1:
[*]
Отключить клиент SMBv1:
конфигурация sc.exe lanmanworkstation зависит от = bowser / mrxsmb20 / nsi
sc.exe config mrxsmb10 start = отключено
Включите клиент SMBv1:
конфигурация sc.exe lanmanworkstation зависит от Bowser / mrxsmb10 / mrxsmb20 / nsi
sc.exe config mrxsmb10 start = auto
Отключите сервер SMBv2:
[*]
Включить сервер SMBv2
[*]
Отключите клиент SMBv2:
конфигурация sc.exe lanmanworkstation зависит от = bowser / mrxsmb10 / nsi
sc.exe config mrxsmb20 start = отключено
Включите клиент SMBv2:
конфигурация sc.exe lanmanworkstation зависит от Bowser / mrxsmb10 / mrxsmb20 / nsi
sc.exe config mrxsmb20 start = auto
Чтобы отключить сервер SMBv1 на всех компьютерах, независимо от версии Windows, вы можете распространить значение реестра REG_DWORD с именем SMB1 и значение 0 (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters) через GPO.
Чтобы отключить SMBv2, установите параметр SMB2 = 0 в той же ветви.
Чтобы отключить клиент SMBv1, вам необходимо распространить следующий раздел реестра:
- Ключ: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ mrxsmb10
- Имя: Начало
- Тип: REG_DWORD
- Значение: 4
При отключении поддержки общего доступа к файлам SMB 1.0 / CIFS в Windows вы можете столкнуться с ошибкой «0x80070035, сетевой путь не найден», ошибкой доступа к общим папкам и проблемами обнаружения компьютера в непосредственной близости от сети. В этом случае вместо службы обозревателя компьютеров нужно использовать службу обнаружения (ссылки).
Источник изображения: winitpro.ru