نماد سایت شرکت آرسس

پروتکل SMB چیست؟

پروتکل SMB چیست؟

در این مقاله آرسس به معرفی پروتکل SMB می پردازیم و مبحث SMB چیست را به طور کامل توضیح میدهیم وضعف های پروتکل SMB را به صورت تصویری رفع می کنیم و امنیت این پروتکل را بالا می بریم.

پروتکل SMB

درواقع پروتکل SMB همان CIFS می باشد که یک پروتکل برای دسترسی و به اشتراک گذاری فایلها، پیرینتر ها و پورت ها در شبکه میباشد و ارتباطات گوناگون بین دستگاه از طریق SMB پروتکل صورت میگیرد. SMB همچنین یک مکانیزم IPC احراز هویت شده (Authenticated Inter-Process Communication) را فراهم می کند. پروتکل SMB یا Server Message Block یک پروتکا لایه ۷ میباشد که در سیستم عامل قرار دارد. پروتکل Server Message Block می تواند با لایه Session (ولایه های پایین تر) به راه های گوناگونی فعالیت کند:

  • مستقیما روی پورت ۴۴۵ TCP
  • از طریق API مربوط به NetBIOS، که در نتیجه می تواند روی چند پروتکل لایه Transport نیز فعالیت کند.
  • روی پورتهای UDP 137,138 و TCP 137,139 NetBIOS over TCP/IP

روی چند پروتکل قدیمی مانند NBF که به آن به اشتباه NetBEUI اطلاق میشود.

امنیت در SMB

روش اول امنیت در SMB با: SMB Signing

در سرویس پک ۳ ویندوز NT 4.0 به بعد قابلیت رمز نگاری Cryptoghraphy برای امضای دیجیتالی کردن ارتبط SMB ارایه شد. که از اصطلاح SMB signing برای آن استفاده شده است. بهترین راه اعمال کردن SMB Signing از طریق Group Policy میباشد، گرچه میتوان از طریق Registry نیز آن را اعمال کرد. به صورت پیش فرض، SMB Signing روی Domain Controller ها در حالت فعال و Enabled قرار دارد. اما این تنظیم  روی کلاینت های SMB 1.0 در حالت غیر مورد نیاز (Not Required) و روی سرور های SMB 1.0 در حالت غیر فعال (Disabled) قرار دارد.

۱- اعمال تغییرات از طریق Group Policy
اگر این کار را به صورت Local انجام میدهید، در قسمت Run عبارت gpedit.msc را تایپ کرده و Enter را فشار دهید. همچنین میتوان از دستور میانبر secpol.msc در قسمت Run نیز استفاده کرد.در غیر این صورت روی دامین کنترلر به Group Policy رفته و به شاخه زیر بروید:

Computer Configuration | Windows Settings | Security Settings | Local Policies | Security Options

در قسمت سمت راست صفحه، بخش تنظیمات “Microsoft Network Client” را پیدا کنید. Policy های زیر را در این بخش مشاهده میکنید:

  • Digitally sign communications (always)
  • Digitally sign communications (if server agrees)
  • Send unencrypted password to third-party SMB servers

پروتکل SMB چیست؟

مشاهده میکنید که تنظیم Digitally Sign Communications (if the server agrees) در قسمت Microsoft Windows Client روی حالت Enabled قرار دارد، در حالی که ۲ تنظیم دیگر روی حالت Disabled قرار دارند.  اگر Policy مربوط به Digitally Sign Communications (Always) را روی حالت Enabled قرار دهید، آنگاه کلاینت فقط SMB Packet Signing را میپذیرد و از ارتباط با سروری که از SMB Signing پشتیبانی نکند، امتناع میکند. زمانی که سرور SMB غیر مایکروسافتی در شبکه دارید که از Password های کدگذاری شده (Encrypted Password) در هنگام احراز هویت (Authentication) پشتیبانی نمیکند، آنگاه میتوانید از تنظیم Send unencrypted password to third-party SMB server استفاده کنید که کلاینت های ویندوزی SMB شما را قادر به ارتباط با سرور مذکور میسازد. با کمی دقت مشاهده میکنید که این Policy در قسمت Windows Network Server وجود ندارد. بدون شک ارسال Password ها در حالت کدگذاری نشده ، خطر امنیتی بزرگی را معرفی میکند. بهتر آن است که این Policy را در حالت Disabled قرار دهید، مگر آنکه واقعا به آن نیاز دارید.

روش دوم امنیت در SMB با : Disable کردن NetBIOS over TCP/IP

از آنجایی که Null Session ها از مشکل امنیتی NetBIOS استفاده می کنند، برای امنیت بیشتر میتوان NetBIOS over TCP/IP را غیر فعال کرد. (در صورتی که از سیستم عامل ها و یا نرم افزارهای قدیمی تری که نیاز به NetBIOS دارند، استفاده نمیکنید) توجه نمایید که این کار باعث میشود که کامپیوترهای ویندوزی نتوانند با سیستم عامل های قدیمی تر، از طریق ترافیک SMB ارتباط برقرار کنند.برای این منظور مراحل زیر را انجام دهید:

به قسمت Network an Dial-up Connection بروید. روی Local Area Connection، راست کلیک کرده و گزینه Properties را انتخاب نمایید. روی InternetProtocol (TCPIP) v4 کلیک کرده و گزینه Properties را انتخاب نمایید. روی گزینه Advanced کلیک کنید. به قسمت WINS رفته و در نهایت گزینه Disable NetBIOS over TCPIP را انتخاب کنید. همچنین میتوان تنظیمات فوق را روی DHCP انجام داد تا به همه کلاینت ها به طور یکجا اعمال شوند.

روش سوم : استفاده از Firewall و بستن پورت های مربوط به NetBIOS over TCP/IP

یکی از بهترین راه های امن کردن SMB، استفاده از Firewall برای جلوگیری از Null Session Enumeration و بستن پورت های NetBIOS over TCPIP میباشد. پورت های زیر مربوط به NetBIOS over TCPIP میباشند:

 

netbios-ns       ۱۳۷/tcp                            # NETBIOS Name Service

netbios-ns       ۱۳۷/udp

netbios-dgm      ۱۳۸/tcp                            # NETBIOS Datagram Service

netbios-dgm      ۱۳۸/udp

netbios-ssn      ۱۳۹/tcp                            # NETBIOS session service

netbios-ssn      ۱۳۹/udp

روش چهارم : بالا بردن امنیت در SMB با: SMB Encryption

SMB 3.0 توسط مایکروسافت با پیشرفت های امنیتی قابل توجهی در ویندوز ۸ و ویندوز سرور ۲۰۱۲ ارایه شد. SMB 3 از الگوریتم جدیدی برای SMB signing ایتفاده میکند. ویندوز ۸ و ویندوز سرور ۲۰۱۲ امکان کدگذاری ترافیک های SMB در حال انتقال با راه حل هایی بسیار کم هزینه تر نیسبت به IPSecو … را دارد. کدگذاری شدن ترافیک در حال انتقال از تلاش های هک مانند استراق سمع (Eavesdropping) جلوگیری میکند.

در Windows Server 2012، شما میتوانید SMB Encryption را برای Share هایی که میخواهید، به شیوه زیر انجام دهید:

۱- Server Manager را باز کرده و به قسمت File and Storage Services بروید.

۲- روی Shares در سمت چپ کلیک کنید.

۳- در بخش وسط، آن Share که میخواهید SMB Encryption روی آن اعمال شود را انتخاب کنید و روی آن راست کلیک کنید.

۴- از پنجره ظاهر شده، Properties را انتخاب نمایید.

۵- در پنجره Share Properties، گزینه Settings را انتخاب نموده و سپس گزینه Encrypt Data Access را انتخاب نمایید.

۶- روی Ok کلیک نمایید.

روش دیگر برای فعال کردن SMB Encryption روی یک Share، استفاده از PowerShell میباشد. برای این منظور، عبارت زیر را تایپ کنید:

Set-SmbShare –Name <sharename> -EncryptData $true

شما همچنین میتوانید از PowerShell برای فعال کردن SMB Encryption روی همه Share ها روی سرور از عبارت زیر استفاده کنید:

Set-SmbServerConfiguration –EncryptData $true

اگر SMB Encryption را برای تمامی Share های روی سرور فعال کنید، Checkbox کنار Encrypt Data Access کنار Share ها به صورت انتخاب شده و خاکستری (Grayed Out) خواهد بود که این Share ها به صورت مجزا قابل تنظیم نخواهند بود. اگر SMB Encryption را برای Share به خصوصی فعال کنید، سیستم عامل های کلاینتی که از SMB 3.0 پشتیبانی نمیکنند، قادر به دسترسی به Share مذکور نخواهند بود. مگر اینکه شما دسترسی کدگذاری نشده (Unencrypted Access) را به آن کامپیوتر به خصوص اجازه دهید. برای این کار، عبارت زیر را در PowerShell تایپ نمایید:

Set-SmbServerConfiguration –RejectUnencryptedAccess $false

روش پنجم بالا بردن امنیت در SMB با : مذاکره گویشی یا Dialect Negotiation

نسخه های گوناگون پروتکل SMB با گویش ها (Dialect) های مختلفی صحبت میکنند. زمانی که یکارتباط SMB به وجود می آید، کلاینت و سرور با هم مذاکره میکنند تا بالاترین سطح گویش که هر ۲ از آن پشتیبانی میکنند را انتخاب کنند. این بدین گونه انجام میشود که کلاینت یک پیام negprot به همراه لیستی از گویش هایی که پشتیبانی میکند را به سرور میفرستد. سرور به کلاینت پاسخ میدهد که کلاینت متوجه شود از چه گویشی استفاده کند.یک پیشرفت امنیتی در ویندوز ۸ و ویندوز سرور ۲۰۱۲، تلاش های نفوذی برای پایین آوردن سطح گویش را شناسایی میکند. اگر چنین تلاشی شناسایی شود، ویندوز ارتباط SMB را قطع کرده و این اتفاق را گزارش (Log) میکند.

روش هفتم بالا بردن امنیت در SMB با: غیر فعال کردن SMB 1.0

برای بالا بردن امنیت میتوان SMB 1.0 را غیرفعال کرد. این کار را زمانی انجام دهید که کامپیوتر Windows XP و پایین تر که نیاز به ارتباط با سرور SMB دارند، یا دستگاه های جانبی که از طریق SMB 1.0 ارتباط برقرار میکنند، در شبکه خود ندارید. برای این منظور، عبارت زیر را در PowerShell تایپ کنید:

Set-SmbServerConfiguration –EnableSMB1Protocol $false

در این مقاله تلاش شد که پروتکل SMB و راهکارهای امنیتی مربوط به SMB مورد بررسی قرار گیرد. همانگونه که در هفته های گذشته مطلع شدید ویروس باج گیر wanacrypt از طریق حفره های امنیتی پروتکل SMB هزاران کامپیوتر را قربانی کرده است که در ای مقاله چندین راه حل برای بالا بردن امنیت SMB به شما عزیزان ارایه شد و پاسخ سوال پرتکل SMB چیست داده شد.

خروج از نسخه موبایل