بروتوكولات مشاركة الملفات CIFS مقابل SMB: الفروق الموضحة

عندما يتعلق الأمر باختيار بروتوكول لمشاركة الملفات عبر الشبكة، غالبًا ما تواجه مصطلحات SMB وCIFS في واجهات البرامج والوثائق. يعتقد بعض المستخدمين أن SMB وCIFS هما نفس الشيء، وقد يكون من الصعب تحديد الفرق بوضوح. ومع ذلك، دعونا نلقي نظرة على الأسباب التي تجعل من الصعب استخدام CIFS كمرادف لـ SMB. تعرف على الفروق بين بروتوكولات SMB و CIFS وكيفية استخدام هذه المصطلحات.

ما هو SMB؟

SMB، أو Server Message Block، هو بروتوكول شبكة يعمل على طبقة التطبيق في نموذج الاتصالات OSI. يُستخدم SMB لتوفير الوصول المشترك إلى الموارد عبر الشبكة. يُستخدم بروتوكول SMB على نطاق واسع لمشاركة الملفات على خوادم الملفات، ومشاركة الملفات بين أجهزة الكمبيوتر للمستخدمين، ونسخ الملفات بين الكمبيوترات.

بالإضافة إلى تلاعب الملفات، الحالة الأخرى لاستخدام SMB هي الرسائل والطباعة (المعاملات عن بُعد للأغراض العامة)، بالإضافة إلى تصفح الكمبيوترات في الشبكة. طورت IBM SMB في عام 1983، ومنذ ذلك الحين تم تحسين البروتوكول مرات عديدة.

ما هي مشاركة الملفات SMB؟

مشاركات الملفات SMB هي الدلائل على المضيف البعيد التي تتوفر من خلال بروتوكول SMB. يتم تكوينها على خوادم الملفات، ويمكن تكوين وصول القراءة والكتابة إلى هذه المشاركات. يمكن لملقم ملف واحد أن يحتوي على عدة مشاركات SMB.

كيف يعمل SMB: ماذا يفعل SMB؟

يعمل SMB بناءً على مبدأ الشبكة العميل-الخادم. يستخدم البروتوكول مجموعة من حزم البيانات التي تحتوي على طلب يتم إرساله بواسطة عميل أو رد يتم إرساله بواسطة خادم. يمكن للعملاء الاتصال بخادم باستخدام عنوان IP أو اسم المضيف. يمكن تصنيف حزم بيانات SMB هذه على أنها:

  • عبارات رسمية الجلسة، التي تؤسس/توقف اتصالات إلى مشاركات الملفات
  • عبارات إجراءات الملفات، التي تقوم بالوصول إلى مشاركات الملفات وتعامل ملفات
  • عبارات رسائل عامة

يفتح SMB جلسة بعد إنشاء الاتصال وإكمال التحقق من الهوية. ثم يمكن إرسال رسائل SMB عبر هذه الجلسة. عند بدء الجلسة، يرسل عميل SMB قائمة من قدراته (يتم تعيين قدراته حسب نسخة SMB من العميل).

يمكن أن يعمل البرتوكول SMB:

  • مباشرة عبر TCP باستخدام منفذ 445 (بدون NetBIOS) – هذا هو الطريقة الحديثة.
  • باستخدام API NetBIOS باستخدام بوابات UDP 137 و138 وبوابات TCP 137 و139 – هذا هو الطريقة التي كانت تستخدم حتى Windows 2000. كانت أول نسخ برتوكول SMB تستخدم NetBIOS over TCP/IP للنقل.

يدعم البرتوكول SMB عمليات التجميع، أي تجميع مجموعة من الرسائل وإرسالها في إحداثة واحدة لتحسين الأداء.

يشمل المزايا الإضافية دعم ميزات قفل الملفات لحماية ملفات المشاركة عندما يفتحها متعددون المستخدمون. يتيح قفل الملفات تجنب كتابة البيانات من قبل متعددي المستخدمين على الملف بشكل مsimultaneously وتجنب سيئة الاستقرار في البيانات في ملف.

IPC (الاتصالات بين العمليات) يعرف أيضا باسم اتصال جلسة فارغة. يتم إنشاء مشاركة IPC$ من قبل Windows للاتصالات المؤقتة بين العملاء والسلاسل. هذه المشاركة المخفية تم إنشائها لمشاركة البيانات التي لا يمكن تصنيفها كملفات / مجلدات وطابعات.

تحتوي أنظمة Windows على عميل وخادم SMB أصليين. ومع ذلك، تحتوي إصدارات عميل Windows على حد لعدد المستخدمين الذين يمكنهم الاتصال بمضيف، على عكس إصدارات خادم Windows، التي لا تتضمن مثل هذه القيود.

  • Windows XP و Vista – حد أقصى للاتصالات المتزامنة 10
  • Windows 7 و Windows 10 – حد أقصى للاتصالات المتزامنة 20

يتم تثبيت خادم SMB على Linux عن طريق تكوين Samba، وهو تنفيذ خادم SMB مجاني لـ Linux. لاحظ أن Samba تتيح أيضًا لك الانضمام إلى مجال Active Directory وتتيح لـ Linux التصرف كمراقب مجال. البرنامج العميل لـ SMB متوفر أيضًا على Linux (مجانًا) وعلى أنظمة تشغيل أخرى.

ما هو CIFS؟

CIFS، أو نظام الملفات عبر الإنترنت المشترك، هو تنفيذ أو لهجة معينة لـ SMB تم تطويرها من قبل Microsoft في عام 1996 بعد إصدار Windows 95. اللهجة هي إصدار وليست بروتوكول مستقل منفصل. اللهجة هي مجموعة من حزم الرسائل المرسلة / المستلمة للتواصل بين المضيفين التي تعرف إصدار بروتوكول معين. CIFS ليس نظامًا ملفيًا، على عكس ما يوحي به الاسم.

مواصفة بروتوكول CIFS مستندة إلى بروتوكول SMB الأصلي ولكن مع بعض الميزات الإضافية التي أضافتها Microsoft. قامت Microsoft بتنفيذ اتصالات مباشرة عبر TCP والمنفذ 445 بدون استخدام NetBIOS عبر TCP (الذي كان يستخدم في تطبيقات SMB 1 الأولية). CIFS هو تنفيذ لـ SMB 1 وليس بروتوكول مشاركة ملفات مستقل.

لهجات بروتوكول SMB

عندما نتحدث عن تنفيذ SMB1 من Microsoft، يمكننا استخدام مصطلح CIFS. في جميع الحالات الأخرى، وبشكل عام، SMB هو المصطلح الصحيح للإشارة إلى هذا البروتوكول الشبكي. دعونا نلقي نظرة أقرب على إصدارات SMB التي تم إصدارها بعد CIFS لكي نفهم الفرق بين CIFS واللهجات (الإصدارات) الأخرى لـ SMB بشكل أفضل.

SMB 2.0

أصدرت Microsoft SMB 2.0 (أو SMB2) في عام 2006 مع Windows Vista. هذا الإصدار من SMB أكثر موثوقية من SMB 1.0/CIFS، وهو ليس CIFS. يتم تقليل عدد الأوامر اللازمة لنقل الملفات من أكثر من 100 إلى 20. الأداء أعلى بسبب آليات معالجة الأنابيب، وهي القدرة على إرسال طلب إضافي قبل الحصول على الرد على الطلب السابق. تجميع العديد من الإجراءات في طلب واحد يقلل من عدد الطلبات إلى العميل، مما يعزز الأداء.

SMB 2.1

يوفر SMB 2.1 تحسينات غير هامة في الأداء وآليات الحظر مقارنة بـ SMB 2.0. تم إصدار هذا الإصدار من البروتوكول مع Windows 7 و Windows Server 2008 R2.

SMB 3.0

في البداية، كان يُطلق على هذا الإصدار من البروتوكول SMB 2.2، ولكن تم تغيير اسمه لاحقًا إلى SMB 3.0 مع Windows 8. إصدار SMB 3.0:

  • أضاف SMB Direct (الوصول المباشر إلى الذاكرة)، SMB Multichannel، و SMB Transport Failover
  • قام بتحسين الأمان
  • أضاف دعم للتشفير من النهاية إلى النهاية
  • قام بتحسين كفاءة الشبكة عن طريق تقليل التأخير

SMB 3.0.2

كان SMB 3.0.2 متاحًا منذ ويندوز 8.1 وويندوز سيرفر 2012 R2. في هذا الإصدار، يمكن تعطيل التوافق مع SMB 1.0 لتحسين الأمان.

بدأ توافر هذا الإصدار ابتداءً من ويندوز 10 وويندوز سيرفر 2016. تتضمن التحسينات تشفيرًا أفضل (AES 128 GCM و AES 128 CCM) وتدقيق تمامية بتشفير SHA-512 للتحقق من الهوية قبل المصادقة.

SMB في ويندوز وملقم مايكروسوفت

يتوفر SMB في ويندوز ابتداءً من ويندوز 3.1 (ويندوز للمجموعات العمل). يتم شرح إصدارات SMB والتوافق مع إصدارات ويندوز المختلفة في الجدول.

يحتوي الأعمدة والصفوف على إصدارات ويندوز التي يمكن أن تشغل عميل SMB أو ملقم SMB (الأعمدة والصفوف قابلة للتبديل). تعرض الخلية في تقاطع العمود والصف الإصدار المستخدم لبروتوكول SMB للتواصل بين إصدارات ويندوز المعنية.

ويندوز 10

سيرفر 2016 والأحدث

ويندوز 8.1

سيرفر 2012 R2

ويندوز 8

سيرفر 2012

ويندوز 7

سيرفر 2008 R2

ويندوز فيستا

سيرفر 2008

ويندوز إكس بي، سيرفر 2003 والأقدم
ويندوز 10

سيرفر 2016 والأحدث

إس إم بي 3.1.1 إس إم بي 3.02 إس إم بي 3.0 إس إم بي 2.1 إس إم بي 2.0 إس إم بي 1.0
ويندوز 8.1

سيرفر 2012 R2

إس إم بي 3.02 إس إم بي 3.02 إس إم بي 3.0 إس إم بي 2.1 إس إم بي 2.0 إس إم بي 1.0
ويندوز 8

سيرفر 2012

إس إم بي 3.0 إس إم بي 3.0 إس إم بي 3.0 إس إم بي 2.1 إس إم بي 2.0 إس إم بي 1.0
ويندوز 7

سيرفر 2008 R2

إس إم بي 2.1 إس إم بي 2.1 إس إم بي 2.1 إس إم بي 2.1 إس إم بي 2.0 إس إم بي 1.0
ويندوز فيستا

سيرفر 2008

إس إم بي 2.0 إس إم بي 2.0 إس إم بي 2.0 إس إم بي 2.0 إس إم بي 2.0 إس إم بي 1.0
وين إكس بي، سيرفر 2003 والأقدم إس إم بي 1.0 إس إم بي 1.0 إس إم بي 1.0 إس إم بي 1.0 إس إم بي 1.0 إس إم بي 1.0

CIFS مقابل SMB: المصدر المحتمل للارتباك

لنجد باستخدام مثال لماذا مصطلحات CIFS و SMB ما زالت مربكة بالنسبة للمستخدمين. للقيام بذلك، دعنا نفترض أننا نستخدم خادم ملفات مع حصة SMB مكونة على Windows Server 2019 وجهاز Linux يتصل بهذا الخادم عبر بروتوكول SMB. توزيعة Ubuntu 20.04 هي توزيعة Linux التي نستخدمها في هذا المثال. لاحظ أن التكوين هو نفسه لـ Ubuntu 22.

لدينا التكوين التالي في بيئاتنا:

  • Windows Server 2019: 192.168.101.209
  • Linux Ubuntu 20.04: 192.168.101.210
  • حصة SMB على Windows Server: \\192.168.101.209\share

في Windows Server 2019، يتم تعطيل بروتوكول SMB 1.0/CIFS افتراضيًا. للتحقق من هذا الإعداد وتمكين/تعطيل عميل وخادم SMB1.0/CIFS يدويًا، انتقل إلى مدير الخوادم> إضافة الأدوار والميزات> الميزات.

نحن نحتفظ بتعطيل SMB 1.0/CIFS على جهاز خادم Windows Server 2019 الخاص بنا. يعني ذلك استخدام SMB 3 بشكل افتراضي مع القدرة على التبديل إلى SMB 2 لتوافق مع العملاء الذين يستخدمون إصدارات (لهجات) SMB 2.

يتم تعطيل بروتوكول CIFS افتراضيًا في الإصدارات الحديثة من Windows مثل Windows 10 لتحسين الأمان، ويمكنك تمكينه يدويًا إذا لزم الأمر.

ملاحظة: في عام 2017، تم تنفيذ هجمات عالمية ضخمة برامج الفدية (WannaCry و NotPetya) باستخدام استغلال ثغرات SMB 1. تم تسمية هذه الاستغلالات باسم EternalBlue وEternalRomance وEternalChampion. أصدرت Microsoft تصحيحات أمان لأنظمتها التشغيلية ابتداءً من Windows XP وWindows Server 2003، على الرغم من أن هذه الأنظمة لم تكن مدعومة رسميا في ذلك الوقت. نصحت Microsoft باستخدام SMB 2 وSMB 3 (داعمة لسلامة ما قبل المصادقة) بدلاً من استخدام SMB 1.0/CIFS.

كما ذُكر أعلاه، اسم خادم SMB لنظام Linux هو Samba (samba هو اسم الحزمة). نستخدم خادم SMB على Windows. لذا لسنا بحاجة إلى Samba في هذا المثال، بل نحتاج بدلاً من ذلك إلى عميل SMB لنظام Ubuntu Linux.

يتم تضمين عميل SMB لنظام Linux في Linux CIFS Utils (cifs-utils هو اسم الحزمة). هنا تنبع الالتباسات من. تم إنشاء الإصدار الأول من هذا العميل لنظام Linux في وقت كان فيه استخدام SMB 1.0/CIFS شائعًا. تم تحديث بروتوكول SMB، تم إصدار الإصدارات 2 و 3 من SMB، ولكن اسم عميل SMB لنظام Linux لا يزال هو نفسه، ولا يزال اسم الحزمة التي تتضمن عميل SMB يسمى CIFS Utils. الحزمة cifs-utils ليست جزءًا من samba.

سنقوم بالاتصال من نظام Linux باستخدام CIFS Utils إلى حصة SMB موجودة على خادم Windows Server 2019 لمعرفة ما إذا كان لا يزال يستخدم CIFS. لتثبيت CIFS Utils، قم بتشغيل الأمر التالي بامتيازات root:

sudo apt-get install cifs-utils

أنشئ دليلًا لاستخدامه كنقطة تثبيت لحصة SMB:

mkdir /mnt/share

اتصل بحصة الملفات SMB الموجودة على خادم ملفات Windows عن بُعد:

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator

نستخدم حساب مستخدم مسؤول Windows في مثالنا لأغراض تعليمية.

CIFS مقابل SMB – أيهما يُستخدم في الجلسة الحالية للاتصال بخادم الملفات؟ تحقق من إصدار SMB للعملاء المتصلين بحصة SMB على خادم Windows باستخدام الأمر PowerShell على Windows Server 2019:

Get-SmbSession | Select-Object -Property ClientComputerName,ClientUserName,Dialect

cifs-utils كما هو واضح في مخرجات PowerShell، يتم استخدام SMB 3.1.1 لاتصالنا من Ubuntu Linux. لا يتم استخدام SMB 1.0/CIFS عندما نتصل باستخدام أمر mount.cifs إلى خادم ملفات تم تكوينه على Windows Server 2019.

يمكننا أيضًا التحقق من إصدار بروتوكول SMB في /proc/mounts باستخدام أمر cat /proc/mounts في Linux. يمكننا استخدام الأمر التالي لتصفية النتائج المطلوبة فقط:

cat /proc/mounts | grep cifs

كما هو موضح في المخرجات، يتم وضع علامة على إصدار البروتوكول لمشاركة الملفات على أنه cifs، ولكن الإصدار المعروض هو 3.1.1 (vers=3.1.1)، والذي ليس إصدارًا من CIFS. هذا مثال آخر يوضح كيف يمكن الخلط بين مصطلحي SMB و CIFS.

في الواقع، يتم استخدام SMB 3.1.1 وليس CIFS. يمكننا إثبات ذلك بطريقة أخرى باستخدام nmap، وهي أداة اكتشاف شبكة مجانية تستخدم للتحليل واستكشاف الأخطاء وإصلاحها.

لتثبيت nmap في Ubuntu، قم بتشغيل الأمر التالي كجذر:

sudo apt-get install nmap

لفحص جميع المضيفين المتصلين بالشبكة وعنوانها 192.168.101.0/24، نستخدم الأمر التالي:

nmap --script smb-protocols 192.168.101.0/24

نحن مهتمون بعرض النتيجة لـ 192.168.101.209، وهو عنوان IP لخادمنا Windows Server 2019 الذي يعمل كخادم ملفات. تم توصيل Linux بالمشاركة الملفات على هذا الخادم. في الإخراج، نرى أن اللهجات لبروتوكولات SMB المدعومة من قبل خادمنا Windows هي 2.02، 2.10، 3.00، 3.02، و 3.11. لا يوجد SMB 1.0/CIFS، على الرغم من أن مصطلح CIFS لا يزال يتم استخدامه في ملفات التكوين والأوامر في Linux.

يمكننا إجبار استخدام CIFS يدويًا عن طريق إضافة معرف المعلمة vers=1.0 في أمر mount في Linux (على جانب العميل) لاستخدام البروتوكول SMB 1.0/CIFS فقط عند الاتصال بمشاركة الملفات على الخادم البعيد.

mount -t cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=1.0

أو

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=1.0

النتيجة كما يلي:

أغلق الخادم الاتصال فجأة. قد يحدث هذا إذا كان الخادم لا يدعم إصدار SMB الذي تحاول استخدامه. تغير إصدار SMB الافتراضي مؤخرًا من SMB1 إلى SMB2.1 وما فوق.

تتطابق هذه النتيجة مع نتائج التحقيق السابق لدينا في SMB مقابل CIFS في أنظمة التشغيل الحديثة. لا يتم استخدام CIFS، و SMB 1.0/CIFS معطل على خادمنا Windows.

إذا قمنا بتعيينه لاستخدام SMB 2.0 على الأقل، فيمكننا الاتصال بالخادم (تذكر قائمة ألواح SMB المدعومة من قبل خادمنا Windows Server 2019 المعروضة في nmap):

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=2.0

عند استخدام واجهة المستخدم الرسومية في نظام Linux أو أنظمة تشغيل أخرى، استخدم smb:// في خط العنوان عند تعريف البروتوكول الشبكي الذي سيتم استخدامه للاتصال بمشاركة ملف على خادم بعيد.

عند إدخال عنوان لمشاركة ملف SMB، يجب عليك استخدام:

smb://server-name/share-name

لا تستخدم:

cifs://server-name/share-name

لأن العميل سيحاول الاتصال باستخدام بروتوكول SMB1.0/CIFS، والذي يمكن تعطيله على الخادم (إذا كان العميل يدعم بنية cifs://).

الاستنتاج

الآن بعد أن أصبح بروتوكول CIFS قديمًا، يُعد SMB أحد البروتوكولات المستخدمة للاتصال بالتخزين المشترك على خوادم الملفات وأجهزة NAS (البروتوكول الآخر الذي يستخدم بشكل شائع هو NFS). مع التخزين المشترك عرضة للفساد في البيانات وبرامج الفدية وتهديدات أخرى يمكن أن تنتشر بسهولة عبر الشبكة، تأكد من عمل نسخ احتياطية من الملفات والمجلدات المخزنة على الموارد المشتركة لتجنب فقدان البيانات. يمكن أن يتسبب إصابة حاسوب حتى لمستخدم واحد يملك صلاحيات كتابة على الملفات المشتركة في فقدان البيانات لجميع المستخدمين.

NAKIVO Backup & Replication هو حلاً لحماية البيانات يدعم النسخ الاحتياطية التدريجية عبر SMB و NFS للبيانات الموجودة على أجهزة NAS وخوادم ملفات Windows/Linux.

Source:
https://www.nakivo.com/blog/cifs-vs-smb/