Сетевой протокол 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) нужно использовать службы обнаружения (линк).
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….
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.
Сетевой протокол 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
- Details
- Last Updated: Tuesday, 10 July 2018 04:55
- Hits: 4125
All about SMB protocol, How to determine the version of SMB? How enable and disable SMBv1, SMBv2, and SMBv3 in Microsoft Windows Client and Windows Server?
The Server Message Block (SMB) Protocol is a network file sharing protocol, and as implemented in Microsoft Windows is known as Microsoft SMB Protocol. The SMB Protocol is a client-server implementation and consists of a set of data packets, each containing a request sent by the client or a response sent by the server. All network share access through the SMB protocol.
Samba implements CIFS (Common Internet File System) network protocol. This is (Windows SMB) what allows Samba to communicate with (newer) MS Windows systems. Typically you will see it referred to SMB/CIFS.
In the OSI networking model, Microsoft SMB Protocol is most often used as an Application layer or a Presentation layer protocol, and it relies on lower-level protocols for transport. The transport layer protocol that Microsoft SMB Protocol is most often used with is NetBIOS over TCP/IP.
If you are still running SMB1, you already have a much bigger problem. As per “CVE-2016-3345” The SMBv1 server in Microsoft Windows Vista SP2, Windows Server 2008 SP2 and R2 SP1, Windows 7 SP1, Windows 8.1, Windows Server 2012 Gold and R2, Windows RT 8.1, and Windows 10 Gold, 1511, and 1607 allows remote attackers to execute arbitrary code via crafted. In September of 2016, MS16-114, a security update that prevents denial of service and remote code execution has been released for windows, you may download from — https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2016/ms16-114.
Full article about CVE-2016-3345 — https://www.cvedetails.com/cve/cve-2016-3345
SMB Port number which used to work properly –
TCP ports 445
UDP ports 137, 138 & TCP ports 137, 139 (NetBIOS over TCP/IP)
Default SMB version used and History –
The original SMB1 protocol is nearly 30 years old, and like much of the software made in the 80’s.
History — Barry Feigenbaum originally designed SMB at IBM with the aim of turning DOS «Interrupt 33» (21h) local file access into a networked file system
SMBv1 — Windows Server 2003, Windows XP and older NAS devices use SMB1/CIFS natively
SMBv2 — It was introduced in Windows Vista and Windows Server 2008
SMBv3 — It was introduced in Windows 8 and Windows Server 2012.
Features — SMB Encryption, introduced with SMB 3.0, used a fixed cryptographic algorithm: AES-128-CCM
SMBv3.1.1 — It was introduced in Windows 10 and Windows Server 2016.
Here’s a table to help you understand what version you will end up using.
OS |
Windows 10 |
Windows 8.1 |
Windows 8 |
Windows 7 |
Win Vista |
Previous |
Windows 10 |
SMB 3.1.1 |
SMB 3.0.2 |
SMB 3.0 |
SMB 2.1 |
SMB 2.0.2 |
SMB 1.x |
Windows 8.1 |
SMB 3.0.2 |
SMB 3.0.2 |
SMB 3.0 |
SMB 2.1 |
SMB 2.0.2 |
SMB 1.x |
Windows 8 |
SMB 3.0 |
SMB 3.0 |
SMB 3.0 |
SMB 2.1 |
SMB 2.0.2 |
SMB 1.x |
Windows 7 |
SMB 2.1 |
SMB 2.1 |
SMB 2.1 |
SMB 2.1 |
SMB 2.0.2 |
SMB 1.x |
Windows Vista |
SMB 2.0.2 |
SMB 2.0.2 |
SMB 2.0.2 |
SMB 2.0.2 |
SMB 2.0.2 |
SMB 1.x |
Previous |
SMB 1.x |
SMB 1.x |
SMB 1.x |
SMB 1.x |
SMB 1.x |
SMB 1.x |
How to check current SMB version and its full configuration via PowerShell-
Determine the SMB version in Windows 8, Windows 10, Server 2012 and Server 2016 –
Get the SMB version and full SMB configuration –
PS Command — Get-SmbServerConfiguration
Check the SMBv1 and SMBv2 status —
Get-SmbServerConfiguration | Select EnableSMB1Protocol
Get-SmbServerConfiguration | Select EnableSMB2Protocol
Determine the SMB version in Windows 7, Windows Vista, Server 2008, Server 2008 R2 –
Check the SMBv1 status —
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Check the SMBv2 status —
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
How to check current SMB version and its full configuration by Registry REGEDIT-
You cannot determine the SMB version and configuration from Registry, but yes you can Enable or Disable from registry, for how to enable or disable SMB from registry, you will find this in next paragraph.
How to Enable and Disable server SMB protocol version:-
Enable & disable the SMB version 1 and SMBv2 in Windows 8, Server 2012 or latest:-
How to enable the SMBv1 and SMBv2 via PowerShell: —
SMBv1 — Set-SmbServerConfiguration -EnableSMB1Protocol $true
SMBv2 — Set-SmbServerConfiguration -EnableSMB2Protocol $true
How to disable the SMBv1 and SMBv2 via PowerShell: —
SMBv1 — Set-SmbServerConfiguration -EnableSMB1Protocol $false
SMBv2 — Set-SmbServerConfiguration -EnableSMB2Protocol $false
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.
- You do not have to restart the computer after you run the Set-SMBServerConfiguration cmdlet.
Enable & Disable the SMBv1 & SMBv2 in Windows Vista, Win 7, Server 2008, 2008R2:-
Note: — Below commands requires PowerShell 2.0 or later version of PowerShell: —
How to enable the SMBv1 and SMBv2 via PowerShell for Win7: —
SMBv1:- Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB1 -Type DWORD -Value 1 –Force
SMBv2 and SMBv3:-
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB2 -Type DWORD -Value 1 –Force
How to Disable the SMBv1 and SMBv2 via PowerShell for Win7: —
SMBv1:- Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB1 -Type DWORD -Value 0 –Force
SMBv2 and SMBv3: —
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters» SMB2 -Type DWORD -Value 0 –Force
Disable SMBv1 Server with Group Policy