SMB由來算法
服務器消息區塊(英語:Server Message Block,縮寫爲SMB,服務器消息區塊),又稱網絡文件共享系統(英語:Common Internet File System,縮寫爲CIFS),一種應用層網絡傳輸協議,由微軟開發,主要功能是使網絡上的機器可以計算機文件、打印機、串行端口和通信等資源。它也提供經認證的進程間通訊機能。它主要用在裝有Microsoft Windows的機器上,在這樣的機器上被稱爲Microsoft Windows Network。shell
SMB版本windows
OS緩存 |
Windows 10安全 WS 2016性能優化 |
Windows 8.1服務器 WS 2012 R2網絡 |
Windows 8併發 WS 2012ide |
Windows 7 WS 2008 R2 |
Windows Vista WS 2008 |
Previous versions |
Windows 10 WS 2016 |
SMB 3.1.1 |
SMB 3.0.2 |
SMB 3.0 |
SMB 2.1 |
SMB 2.0 |
SMB 1.0 |
Windows 8.1 WS 2012 R2 |
SMB 3.0.2 |
SMB 3.0.2 |
SMB 3.0 |
SMB 2.1 |
SMB 2.0 |
SMB 1.0 |
Windows 8 WS 2012 |
SMB 3.0 |
SMB 3.0 |
SMB 3.0 |
SMB 2.1 |
SMB 2.0 |
SMB 1.0 |
Windows 7 WS 2008 R2 |
SMB 2.1 |
SMB 2.1 |
SMB 2.1 |
SMB 2.1 |
SMB 2.0 |
SMB 1.0 |
Windows Vista WS 2008 |
SMB 2.0 |
SMB 2.0 |
SMB 2.0 |
SMB 2.0 |
SMB 2.0 |
SMB 1.0 |
Previous versions |
SMB 1.0 |
SMB 1.0 |
SMB 1.0 |
SMB 1.0 |
SMB 1.0 |
SMB 1.0 |
備註:早期的Windows 10 和WS 2016 TP的SMB版本是3.1
如何查看SMB版本
在Windows 8或WS 2012 以上,用帶管理員的Powershell輸入:
Get-SmbConnection
SMB各個版本介紹能夠參考:https://en.wikipedia.org/wiki/Server_Message_Block#SMB_3.1.1
SMB 3.1.1 新特性能夠參考:https://blogs.technet.microsoft.com/josebda/2015/05/05/whats-new-in-smb-3-1-1-in-the-windows-server-2016-technical-preview-2/
其中比較關注的是SMB 3.1.1 加密算法默認爲AES-128-GCM,以前SMB 3.0是用AES-128-CCM。
關於客戶端SMB升級問題
目前查找的資料顯示,客戶端自帶的SMB協議沒辦法經過升級來提升SMB版本,也就是意味着在企業規劃文件服務器的時候,須要考慮到企業客戶端SMB版本,對應的SMB Server,如上面SMB版本列表。
關於SMB Server關閉低版本SMB支持操做:
在Windows 7和WS 008 R2,禁用SMBV2,會停用如下功能:
請求複合 - 容許將多個SMB 2請求做爲單個網絡請求發送
更大的讀取和寫入 - 更好地使用更快的網絡
緩存文件夾和文件屬性 - 客戶端保留文件夾和文件的本地副本
持久句柄 - 若是存在臨時斷開鏈接,則容許鏈接透明地從新鏈接到服務器
改進的消息簽名 - HMAC SHA-256將MD5替換爲散列算法
提升文件共享的可擴展性 - 每一個服務器的用戶數,共享數和打開文件數大大增長
支持符號連接
客戶機操做鎖租賃模式 - 限制客戶機和服務器之間傳輸的數據,提升高延遲網絡的性能並增長SMB服務器可擴展性
大MTU支持 - 徹底使用10Gigabye(GB)以太網
提升能源效率 - 向服務器打開文件的客戶端能夠睡眠
在Windows 8 和WS 2012 禁用SMBv3.會停用如下功能:
透明故障轉移 - 客戶端在維護或故障轉移期間從新鏈接而不中斷羣集節點
Scale Out - 對全部文件集羣節點上的共享數據的併發訪問
多通道 - 若是客戶端和服務器之間有多條路徑,則能夠聚合網絡帶寬和容錯
SMB直接 - 增長了RDMA網絡支持,以實現很是高的性能,低延遲和低CPU利用率
加密 - 提供端到端加密,防止在不可信的網絡上被竊聽
目錄租賃 - 經過緩存改進分支機構的應用程序響應時間
性能優化 - 小型隨機讀/寫I / O的優化
在windows 8或WS 2012以上版本能夠用PowerShell輸入:
禁用SMBV2和SMBV3
Set-SmbServerConfiguration -EnableSMB2Protocol $false
禁用SMBV1
Set-SmbServerConfiguration -EnableSMB1Protocol $false
PS:若是要恢復啓用,就用$true值。
在Windows Vista或WS 2008以上版本用PowerShell輸入:
禁用SMBV2和SMBV3
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" SMB2 -Type DWORD -Value 0 -Force
PS:Value的值,0表示禁用 ,1表示啓用
在客戶端禁用SMB協議
禁止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和v3
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb20 start= disabled
啓用SMBV2和v3
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb20 start= auto
分享下小案例
環境:Windows Server 2012 R2文件服務器
客戶端:Windows 7+10
問題描述:在服務器上設置共享文件夾,一開始用Win10客戶端測試共享文件夾,正常,後續沒繼續測試Win7是否正常能夠訪問,後來開放給用戶使用,發現Win7用戶不管怎麼輸入帳號和密碼,都顯示拒絕訪問,權限正常。
報錯圖:
致使問題的關鍵:共享文件夾啓動加密數據
在2012中加密數據訪問是加密數據來保護數據傳輸過程的安全性,以防止篡改和竊聽***,用的加密算法是AES-128-CCM。因此舊版本SMB2是用HMAC-SHA256根本就不支持。
解決方法:
方法1.去除加密數據訪問,便可。(若是不考慮加密問題,則去除選擇便可)
方法2.若是考慮加密問題,又想讓SMBV2版本的客戶端可以正常訪問,則在服務器上Powershell輸入:
Get-SmbServerConfiguration
RejectUnencryptedAccess參數是若是客戶端嘗試連接到加密共享文件夾,不支持加密算法的客戶端是否被拒絕訪問。默認值是True
咱們能夠將其值配置爲false
在powershell 輸入:
Set-SmbServerConfiguration -RejectUnencryptedAccess $False
結果就能夠了
PS:方法2的命令是對整個SMBServer配置的,此方法通常是做爲過渡用的,若是客戶端版本都是SMB 3.1,建議把RejectUnencryptedAccess配置爲True
若是對SMB 感興趣能夠參考:https://blogs.technet.microsoft.com/josebda/2015/04/30/smb3-networking-links-for-windows-server-2012-r2/