परिचय
सर्वर मैसेज ब्लॉक (SMB) नेटवर्क प्रोटोकॉल का उपयोग नेटवर्क (TCP पोर्ट 445) पर फ़ोल्डर्स, फ़ाइलों, प्रिंटर्स, और अन्य डिवाइसेज को शेयर और एक्सेस करने के लिए किया जाता है। इस लेख में, हम देखेंगे कि विंडोज़ के विभिन्न संस्करणों में SMB के कौन से संस्करण (डायलेक्ट्स) उपलब्ध हैं (और वे लिनक्स पर samba संस्करणों से कैसे संबंधित हैं); अपने कंप्यूटर पर उपयोग में SMB संस्करण की जांच कैसे करें; और SMBv1, SMBv2, और SMBv3 डायलेक्ट्स को कैसे सक्षम या अक्षम करें।
सामग्री
- विंडोज़ में SMB प्रोटोकॉल संस्करण
- विंडोज़ पर SMB संस्करण कैसे जांचें?
- Get-SMBConnection के साथ उपयोग किए गए SMB डायलेक्ट्स की जांच
- असुरक्षित SMBv1 प्रोटोकॉल का उपयोग बंद करें
- विंडोज़ पर SMBv1, SMBv2, और SMBv3 को कैसे सक्षम और अक्षम करें?
विंडोज़ में SMB प्रोटोकॉल संस्करण
SMB प्रोटोकॉल के कई संस्करण (डायलेक्ट्स) हैं जो लगातार नए विंडोज़ संस्करणों (और samba) में दिखाई दिए:
- CIFS – विंडोज़ NT 4.0
- SMB 1.0 – विंडोज़ 2000
- SMB 2.0 – विंडोज़ सर्वर 2008 और विंडोज़ विस्टा SP1 (Samba 3.6 में समर्थित)
- SMB 2.1 – विंडोज़ सर्वर 2008 R2 और विंडोज़ 7 (Samba 4.0)
- SMB 3.0 – विंडोज़ सर्वर 2012 और विंडोज़ 8 (Samba 4.2)
- SMB 3.02 – विंडोज़ सर्वर 2012 R2 और विंडोज़ 8.1 (Samba में समर्थित नहीं)
- SMB 3.1.1 – विंडोज़ सर्वर 2016 और विंडोज़ 10 (Samba में समर्थित नहीं)
Samba का उपयोग लिनक्स/यूनिक्स में SMB प्रोटोकॉल को लागू करने के लिए किया जाता है। Samba 4.14 और नए डिफ़ॉल्ट रूप से SMB 2.1 का उपयोग करते हैं।
SMB नेटवर्क संचार में, क्लाइंट और सर्वर क्लाइंट और सर्वर दोनों द्वारा समर्थित अधिकतम SMB प्रोटोकॉल संस्करण का उपयोग करते हैं।
SMB संस्करण अनुकूलता की सारांश तालिका इस तरह दिखती है। इस तालिका का उपयोग करके, आप निर्धारित कर सकते हैं कि विंडोज़ के विभिन्न संस्करणों के इंटरैक्ट होने पर SMB प्रोटोकॉल का कौन सा संस्करण चुना जाता है:
| ऑपरेटिंग सिस्टम | Windows 10, Win Server 2016 | Windows 8.1, Win Server 2012 R2 | Windows 8, Server 2012 | Windows 7, Server 2008 R2 | Windows Vista, Server 2008 | Windows XP, Server 2003 and earlier |
|---|---|---|---|---|---|---|
| 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 and earlier | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
उदाहरण के लिए, यदि विंडोज़ 8.1 चलाने वाला क्लाइंट कंप्यूटर विंडोज़ सर्वर 2016 वाले फ़ाइल सर्वर से कनेक्ट होता है, तो SMB 3.0.2 प्रोटोकॉल का उपयोग किया जाएगा।
तालिका के अनुसार, विंडोज़ XP और विंडोज़ सर्वर 2003 शेयर्ड फ़ोल्डर्स और फ़ाइलों तक पहुंचने के लिए केवल SMB 1.0 का उपयोग कर सकते हैं। SMBv1 नए विंडोज़ सर्वर संस्करणों (2012 R2/2016) में अक्षम है। इसलिए, यदि आप अभी भी अपने नेटवर्क पर विंडोज़ XP और विंडोज़ सर्वर 2003 डिवाइसेज का उपयोग कर रहे हैं, तो वे विंडोज़ सर्वर 2016 चलाने वाले फ़ाइल सर्वर पर शेयर्ड फ़ोल्डर्स तक पहुंच नहीं पाएंगे।
यदि अक्षम SMB v1.0 के साथ विंडोज़ सर्वर 2019/2016 का उपयोग डोमेन कंट्रोलर के रूप में किया जाता है, तो विंडोज़ XP/सर्वर 2003 क्लाइंट्स डोमेन कंट्रोलर्स पर SYSVOL और NETLOGON फ़ोल्डर्स तक पहुंच नहीं पाएंगे और AD के साथ प्रमाणित नहीं हो पाएंगे।
SMBv1 अक्षम वाले फ़ाइल सर्वर पर शेयर्ड फ़ोल्डर से कनेक्ट करने का प्रयास करते समय आपको निम्न त्रुटि प्राप्त हो सकती है:
The specified network name is no longer available
विंडोज़ पर SMB संस्करण कैसे जांचें?
आइए देखें कि आपके विंडोज़ डिवाइस पर SMB के कौन से संस्करण सक्षम हैं, यह कैसे पता लगाएं।
विंडोज़ 10/8.1 और विंडोज़ सर्वर 2019/2016/2012R2 पर, आप PowerShell का उपयोग करके SMB प्रोटोकॉल के विभिन्न डायलेक्ट्स की स्थिति जांच सकते हैं:
Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol
यह कमांड लौटा कि SMB1 प्रोटोकॉल अक्षम है (EnableSMB1Protocol = False), और SMB2 और SMB3 प्रोटोकॉल सक्षम हैं (EnableSMB2Protocol = True)।
ध्यान दें कि SMBv3 और SMBv2 प्रोटोकॉल निकटता से संबंधित हैं। आप SMBv3 या SMBv2 को अलग से अक्षम या सक्षम नहीं कर सकते। वे हमेशा एक साथ सक्षम/अक्षम होते हैं क्योंकि वे एक ही स्टैक साझा करते हैं।
विंडोज़ 7, विस्टा, और विंडोज़ सर्वर 2008 R2/2008 पर:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
यदि इस रजिस्ट्री कुंजी में SMB1 या SMB2 नाम के कोई पैरामीटर नहीं हैं, तो SMBv1 और SMBv2 प्रोटोकॉल डिफ़ॉल्ट रूप से सक्षम हैं।
इन विंडोज़ संस्करणों पर भी, आप जांच सकते हैं कि कौन से 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)। इसका मतलब है कि वर्तमान विंडोज़ डिवाइस दोनों SMBv1 और SMBv2 होस्ट्स से कनेक्ट हो सकता है।
Get-SMBConnection के साथ उपयोग किए गए SMB डायलेक्ट्स की जांच
SMB पर संचार करते समय, कंप्यूटर क्लाइंट और सर्वर दोनों द्वारा समर्थित अधिकतम SMB संस्करण का उपयोग करते हैं। Get-SMBConnection PowerShell cmdlet का उपयोग रिमोट कंप्यूटर तक पहुंचने के लिए उपयोग किए गए SMB संस्करण की जांच के लिए किया जा सकता है:
Dialect कॉलम में रिमोट सर्वर (ServerName) से कनेक्ट करने के लिए उपयोग किया गया SMB संस्करण सूचीबद्ध है।
आप किसी विशिष्ट सर्वर तक पहुंचने के लिए उपयोग किए गए SMB संस्करणों के बारे में जानकारी प्रदर्शित कर सकते हैं:
Get-SmbConnection -ServerName srvfs01
यदि आप प्रदर्शित करना चाहते हैं कि SMB एन्क्रिप्शन उपयोग में है या नहीं (SMB 3.0 में पेश किया गया):
Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName
लिनक्स पर, आप sudo smbstatus कमांड का उपयोग करके samba में SMB कनेक्शन और उपयोग किए गए डायलेक्ट्स की सूची प्रदर्शित कर सकते हैं।
विंडोज़ SMB सर्वर साइड पर, आप उन SMB प्रोटोकॉल संस्करणों की सूची प्रदर्शित कर सकते हैं जो क्लाइंट्स वर्तमान में उपयोग कर रहे हैं। कमांड चलाएं:
Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique
इस उदाहरण में, 898 क्लाइंट्स SMB 2.1 (विंडोज़ 7/विंडोज़ 2008 R2) का उपयोग करके सर्वर से जुड़े हैं और 8 SMB 3.02 क्लाइंट्स हैं।
आप कनेक्शन के लिए उपयोग किए गए SMB संस्करणों की ऑडिटिंग सक्षम करने के लिए PowerShell का उपयोग कर सकते हैं:
Set-SmbServerConfiguration –AuditSmb1Access $true
SMB कनेक्शन इवेंट्स को फिर इवेंट व्यूअर लॉग्स से एक्सपोर्ट किया जा सकता है:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit
असुरक्षित SMBv1 प्रोटोकॉल का उपयोग बंद करें
पिछले कुछ वर्षों में, Microsoft ने सुरक्षा कारणों से सभी उत्पादों में लिगेसी SMB 1.0 प्रोटोकॉल को व्यवस्थित रूप से अक्षम किया है। यह इस प्रोटोकॉल में महत्वपूर्ण भेद्यताओं की बड़ी संख्या के कारण है (वन्नाक्रिप्ट और पेट्या रैंसमवेयर के साथ घटनाओं को याद करें, जिन्होंने SMBv1 प्रोटोकॉल में भेद्यता का फायदा उठाया)। Microsoft और अन्य IT कंपनियां दृढ़ता से अनुशंसा करती हैं कि आप अपने नेटवर्क में SMBv1 का उपयोग बंद करें।
हालांकि, SMBv1 अक्षम करने से नए विंडोज़ 10 (विंडोज़ सर्वर 2016/2019) पर शेयर्ड फ़ाइलों और फ़ोल्डर्स तक लिगेसी क्लाइंट्स (विंडोज़ XP, विंडोज़ सर्वर 2003), थर्ड-पार्टी OS (Mac OSX 10.8 माउंटेन लायन, स्नो लेपर्ड, मावेरिक्स, पुराने लिनक्स डिस्ट्रोस), पुराने NAS डिवाइसेज से पहुंच में समस्या हो सकती है।
यदि आपके नेटवर्क पर कोई लिगेसी डिवाइस नहीं बचे हैं जो केवल SMBv1 का समर्थन करते हैं, तो विंडोज़ में इस SMB डायलेक्ट को अवश्य अक्षम करें।
यदि आपके पास विंडोज़ XP, विंडोज़ सर्वर 2003, या अन्य डिवाइस चलाने वाले क्लाइंट्स हैं जो केवल SMBv1 का समर्थन करते हैं, तो उन्हें अपडेट या आइसोलेट किया जाना चाहिए।
विंडोज़ पर SMBv1, SMBv2, और SMBv3 को कैसे सक्षम और अक्षम करें?
आइए विंडोज़ पर विभिन्न SMB संस्करणों को सक्षम और अक्षम करने के तरीकों को देखें। हम SMB क्लाइंट और सर्वर प्रबंधन को कवर करेंगे (वे अलग विंडोज़ घटक हैं)।
विंडोज़ 10, 8.1, और विंडोज़ सर्वर 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
विंडोज़ 10 और विंडोज़ सर्वर 2016/2019 पर SMBv1 प्रोटोकॉल के बारे में और जानें।
SMBv2 और SMBv3 सर्वर अक्षम करें:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
SMBv2 और SMBv3 सर्वर सक्षम करें:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
विंडोज़ 7, विस्टा, और विंडोज़ सर्वर 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
आप डोमेन-जॉइंड कंप्यूटर्स पर GPO के माध्यम से निम्न रजिस्ट्री पैरामीटर तैनात करके SMBv1 सर्वर अक्षम कर सकते हैं:
- Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- Name: SMB1
- Type: REG_DWORD
- Value: 0
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 अक्षम करते समय, आपको त्रुटि 0x80070035 नेटवर्क पथ नहीं मिला, शेयर्ड SMB फ़ोल्डर्स एक्सेस करते समय त्रुटि, और नेटवर्क डिस्कवरी के साथ समस्याओं का सामना करना पड़ सकता है। इस मामले में, आपको Computer Browser सेवा के बजाय Discovery Service का उपयोग करना होगा।