禁用来宾身份验证和回退
禁用来宾访问时,可以防止恶意行动者创建服务器并诱骗用户使用来宾访问权限来访问该服务器。
例如,当用户访问欺骗性共享时,他们的凭据将会出错,而 SMB 1.0 将回退为使用来宾访问。
禁用来宾访问会阻止 SMB 会话连接,从而阻止用户访问该共享和任何恶意文件。
在权限提升的 PowerShell 提示符下,运行以下命令:
Set-SmbClientConfiguration -EnableInsecureGuestLogons $false -Confirm:$false
强制使用 SMB 3.1.1
请在权限提升的 PowerShell 提示符下运行以下命令:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "MinSMB2Dialect" -Value 0x000000311<br>Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "MaxSMB2Dialect" -Value 0x000000311
始终尝试压缩(SMB 客户端)
以管理员身份打开提升的 Azure PowerShell 命令提示符。
若要使 SMB 客户端始终尝试压缩文件:
Set-SmbClientConfiguration -RequestCompression $true
从不压缩(SMB 客户端)
以管理员身份打开提升的 Azure PowerShell 命令提示符。
若要始终不允许 SMB 客户端压缩文件,而不考虑任何其他请求:
Set-SmbClientConfiguration -DisableCompression $true
始终尝试压缩(SMB 服务器)
以管理员身份打开提升的 Azure PowerShell 命令提示符。
若要使 SMB 服务器始终尝试压缩文件:
Set-SmbServerConfiguration -RequestCompression $true
从不压缩(SMB 服务器)
以管理员身份打开提升的 Azure PowerShell 命令提示符。
若要始终不允许 SMB 客户端压缩文件,而不考虑任何其他请求:
Set-SmbServerConfiguration -DisableCompression $true
使用 Windows PowerShell 启用 SMB 加密
登录到服务器,并在提升的会话中在计算机上运行 PowerShell。
若要为单个文件共享启用 SMB 加密,请运行以下命令。
Set-SmbShare –Name <sharename> -EncryptData $true
若要为整个文件服务器启用 SMB 加密,请运行以下命令。
Set-SmbServerConfiguration –EncryptData $true
若要创建新的 SMB 文件共享并启用 SMB 加密,请运行以下命令。
New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true
查看SMB版本
Windows10以上普遍采用SMB3.0。而SMB1.0在Windows系统已经默认不开启。我建议设备最好全部采用SMB3.0。
客户端主机查看SMB版本,打开powershell输入命令:
Get-SMBConnection
服务端主机查看SMB版本,打开powershell输入命令:
Get-SMBSession | FL
SMB客户端开启大型MTU
客户端主机开启SMB大型MTU支持提升文件传输效率,并禁用带宽限制。打开powershell输入如下命令:
Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
开启SMB多通道
如果你的电脑有多个网口,希望通过多网口提升SMB传输速度,可以开启SMB多通道支持(SMB3.0),SMB默认开启多通道支持。
查看SMB多通道状态可以打开powershell输入命令:
Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel
如果你想禁用SMB多通道(虽然完全没必要),可以用如下命令:
服务端禁用SMB多通通
Set-SmbServerConfiguration -EnableMultiChannel $false
#客户端禁用SMB多通通
<br>Set-SmbClientConfiguration -EnableMultiChannel $false
如果你想开启SMB多通道,可以用如下命令:
#服务端启用SMB多通通
Set-SmbServerConfiguration -EnableMultiChannel $ture
#客户端启用SMB多通通
Set-SmbClientConfiguration -EnableMultiChannel $ture
如果客户端和服务端已经连接,可以通过输入下面的命令查看多通道是否可用:
Get-SmbMultichannelConnection |fl
查看MaxChannels和CurrentChannels这两列,可以看到多通道连接情况:
SMB多通道包含2个概念:
- 一是调用多线程多TCP连接提升连接速度,
- 二是调用多个网速相同的网卡提升连接速度。
实测如果2个网卡速度不一样,SMB默认走速度高的网卡,速度低的网卡会限制。
SMB还可以通过修改注册表优化参数来提升性能,但是对于家用SMB而言就完全不必这么折腾。SMB共享对于Windows设备而言设置简单,连接稳定,性能也很不错。