بروتوكولات SFTP وFTPS

مقدمة

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

ما هو بروتوكول نقل الملفات

FTP (بروتوكول نقل الملفات) هو بروتوكول لنقل الملفات عبر الشبكة. إنه أحد بروتوكولات Ethernet الأساسية. ظهر عام 1971 وعمل في البداية في شبكات DARPA. حاليًا، مثل HTTP، يعتمد نقل الملفات على نموذج يتكون من مجموعة من بروتوكولات TCP/IP (بروتوكول التحكم في الإرسال/بروتوكول الإنترنت). تم تعريفه في RFC 959.

يحدد البروتوكول ما يلي:

  • كيف سيتم إجراء فحص الأخطاء؟
  • طريقة تعبئة البيانات (في حالة استخدام التغليف)
  • كيف يشير الجهاز المرسل إلى أنه أنهى الرسالة؟
  • كيف يشير الجهاز المستقبل إلى أنه قد تلقى رسالة؟

التواصل بين العميل والخادم

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

الميزة الرئيسية لـ FTP هي أنه يستخدم اتصالات مزدوجة. يتم استخدام أحدهما لإرسال الأوامر إلى الخادم ويحدث افتراضيًا عبر منفذ TCP رقم 21، والذي يمكن تغييره. يوجد اتصال التحكم طالما أن العميل يتواصل مع الخادم. يجب أن تكون قناة التحكم مفتوحة عند نقل البيانات بين الأجهزة. إذا كان مغلقا، يتوقف نقل البيانات. من خلال الثانية، يحدث النقل المباشر للبيانات. يتم فتحه في كل مرة يتم فيها نقل الملفات بين العميل والخادم. إذا تم نقل عدة ملفات في وقت واحد، يفتح كل منها قناة الإرسال الخاصة به.

يمكن أن يعمل FTP في الوضع النشط أو السلبي، والذي يحدد اختياره كيفية إنشاء الاتصال. في الوضع النشط، يقوم العميل بإنشاء اتصال تحكم TCP مع الخادم ويرسل عنوان IP الخاص به ورقم منفذ العميل التعسفي إلى الخادم، ثم ينتظر الخادم لبدء اتصال TCP بهذا العنوان ورقم المنفذ. في حالة وجود العميل خلف جدار حماية ولا يمكنه قبول اتصال TCP وارد، فيمكن استخدام الوضع السلبي. في هذا الوضع، يستخدم العميل تدفق التحكم لإرسال أمر PASV إلى الخادم، ثم يتلقى من الخادم عنوان IP ورقم المنفذ الخاص به، والذي يستخدمه العميل بعد ذلك لفتح تدفق البيانات من منفذه التعسفي.

من الممكن أن يتم نقل البيانات إلى جهاز ثالث. في هذه الحالة، يقوم المستخدم بتنظيم قناة تحكم مع خادمين وينظم قناة بيانات مباشرة بينهما. تمر أوامر التحكم من خلال المستخدم، وتنتقل البيانات مباشرة بين الخوادم.

عند نقل البيانات عبر الشبكة، يمكن استخدام أربعة تمثيلات للبيانات:

  • ASCII - يستخدم للنص. يتم تحويل البيانات، إذا لزم الأمر، من تمثيل الأحرف على المضيف المرسل إلى "ASCII بثمانية بتات" قبل الإرسال، و(مرة أخرى، إذا لزم الأمر) إلى تمثيل الأحرف على المضيف المتلقي. على وجه الخصوص، يتم تغيير أحرف السطر الجديد. ونتيجة لذلك، فإن هذا الوضع غير مناسب للملفات التي تحتوي على أكثر من مجرد نص عادي.
  • الوضع الثنائي - يرسل جهاز الإرسال كل ملف بايت بايت، ويقوم المستلم بتخزين تدفق البايتات عند الاستلام. تمت التوصية بدعم هذا الوضع لجميع تطبيقات FTP.
  • EBCDIC - يُستخدم لنقل النص العادي بين المضيفين بتشفير EBCDIC. وبخلاف ذلك، فإن هذا الوضع يشبه وضع ASCII.
  • الوضع المحلي - يسمح لجهازي كمبيوتر بإعدادات متطابقة بإرسال البيانات بتنسيق خاص بهما دون التحويل إلى ASCII.

يمكن إجراء نقل البيانات في أي من الأوضاع الثلاثة:

  • وضع الدفق - يتم إرسال البيانات كدفق مستمر، مما يحرر FTP من إجراء أي معالجة. بدلاً من ذلك، تتم كافة المعالجة بواسطة TCP. ليس هناك حاجة لمؤشر نهاية الملف إلا لفصل البيانات إلى سجلات.
  • وضع الحظر - يقوم FTP بتقسيم البيانات إلى عدة كتل (كتلة الرأس، عدد البايتات، حقل البيانات) ثم ينقلها إلى TCP.
  • وضع الضغط – يتم ضغط البيانات باستخدام خوارزمية واحدة (عادةً عن طريق تشفير أطوال التشغيل).

خادم FTP هو خادم يوفر القدرة على استخدام بروتوكول نقل الملفات. لديه بعض الميزات التي تميزه عن خوادم الويب التقليدية:

  • مطلوب مصادقة المستخدم
  • يتم تنفيذ جميع العمليات خلال الجلسة الحالية
  • القدرة على تنفيذ إجراءات مختلفة مع نظام الملفات
  • يتم استخدام قناة منفصلة لكل اتصال

عميل FTP هو برنامج يسمح لك بالاتصال بخادم بعيد عبر FTP وكذلك تنفيذ الإجراءات اللازمة عليه باستخدام عناصر نظام الملفات. قد يكون العميل متصفحًا، حيث يجب عليك إدخال العنوان في شريط العناوين، وهو المسار إلى دليل أو ملف محدد على الخادم البعيد، وفقًا لمخطط كتلة URL العام:

ftp://user:pass@address:port/directory/file

ومع ذلك، فإن استخدام متصفح الويب في هذا السياق سيسمح لك فقط بعرض أو تنزيل الملفات التي تهمك. من أجل الاستفادة الكاملة من جميع مزايا FTP، يجب عليك استخدام برامج متخصصة كعميل.

تستخدم مصادقة FTP نظام اسم المستخدم/كلمة المرور لمنح الوصول. يتم إرسال اسم المستخدم إلى الخادم باستخدام أمر المستخدم، ويتم إرسال كلمة المرور باستخدام أمر PASS. إذا تم قبول المعلومات المقدمة من العميل من قبل الخادم، فسيقوم الخادم بإرسال دعوة إلى العميل وتبدأ الجلسة. يمكن للمستخدمين، إذا كان الخادم يدعم هذه الميزة، تسجيل الدخول دون تقديم بيانات الاعتماد، ولكن يمكن للخادم منح وصول محدود فقط لمثل هذه الجلسات.

يمكن للمضيف الذي يوفر خدمة FTP توفير وصول مجهول لـ FTP. عادةً ما يقوم المستخدمون بتسجيل الدخول باستخدام "مجهول" (قد يكون حساسًا لحالة الأحرف في بعض خوادم FTP) كاسم المستخدم الخاص بهم. على الرغم من أنه يُطلب من المستخدمين عادةً تقديم عنوان بريدهم الإلكتروني بدلاً من كلمة المرور، إلا أنه لا يتم إجراء أي تحقق فعليًا. يدعم العديد من مضيفي FTP الذين يوفرون تحديثات البرامج الوصول المجهول.

مخطط البروتوكول

يمكن تصور التفاعل بين العميل والخادم أثناء اتصال FTP على النحو التالي:

بروتوكولات SFTP وFTPS

تأمين بروتوكول نقل الملفات

لم يكن المقصود من بروتوكول نقل الملفات (FTP) في الأصل أن يكون آمنًا، حيث كان مخصصًا للاتصالات بين المنشآت والوكالات العسكرية المتعددة. ولكن مع تطور وانتشار الإنترنت، تزايد خطر الوصول غير المصرح به عدة مرات. كانت هناك حاجة لحماية الخوادم من أنواع مختلفة من الهجمات. في مايو 1999، قام مؤلفو RFC 2577 بتلخيص نقاط الضعف في قائمة المشكلات التالية:

  • الهجمات الخفية (الهجمات المرتدة)
  • هجمات وهمية
  • هجمات القوة الغاشمة
  • التقاط الحزمة، والاستنشاق
  • سرقة الموانئ

لا يتمتع بروتوكول FTP العادي بالقدرة على نقل البيانات في شكل مشفر، ونتيجة لذلك يمكن للمهاجمين اعتراض أسماء المستخدمين وكلمات المرور والأوامر والمعلومات الأخرى بسهولة ويسر. الحل المعتاد لهذه المشكلة هو استخدام إصدارات "آمنة" ومحمية بـ TLS من البروتوكول الضعيف (FTPS) أو بروتوكول آخر أكثر أمانًا، مثل SFTP/SCP، المتوفر مع معظم تطبيقات بروتوكول Secure Shell.

FTPS

FTPS (FTP + SSL) هو امتداد لبروتوكول نقل الملفات القياسي الذي يضيف إلى وظائفه الأساسية إنشاء جلسات مشفرة باستخدام بروتوكول SSL (طبقة المقابس الآمنة). اليوم، يتم توفير الحماية من خلال نظام TLS (Transport Layer Security) التناظري الأكثر تقدمًا.

SSL

تم اقتراح بروتوكول SSL بواسطة Netscape Communications في عام 1996 لضمان أمان وخصوصية اتصالات الإنترنت. يدعم البروتوكول مصادقة العميل والخادم، وهو تطبيق مستقل، وشفاف بالنسبة لبروتوكولات HTTP، وFTP، وTelnet.

يتكون بروتوكول SSL Handshake من مرحلتين: مصادقة الخادم ومصادقة العميل الاختيارية. في المرحلة الأولى، يستجيب الخادم لطلب العميل عن طريق إرسال الشهادة ومعلمات التشفير الخاصة به. يقوم العميل بعد ذلك بإنشاء مفتاح رئيسي، وتشفيره بالمفتاح العام للخادم، وإرساله إلى الخادم. يقوم الخادم بفك تشفير المفتاح الرئيسي باستخدام مفتاحه الخاص ويصادق نفسه على العميل عن طريق إرجاع رسالة تمت مصادقتها بواسطة المفتاح الرئيسي للعميل.

ويتم تشفير البيانات اللاحقة ومصادقتها باستخدام مفاتيح مشتقة من هذا المفتاح الرئيسي. في الخطوة الثانية، وهي اختيارية، يرسل الخادم طلبًا إلى العميل، ويقوم العميل بمصادقة نفسه على الخادم عن طريق إعادة الطلب بتوقيعه الرقمي الخاص وشهادة المفتاح العام.

يدعم SSL مجموعة متنوعة من خوارزميات التشفير. أثناء إنشاء الاتصال، يتم استخدام نظام تشفير المفتاح العام RSA. بعد تبادل المفاتيح، يتم استخدام العديد من الأصفار المختلفة: RC2، RC4، IDEA، DES، وTripleDES. يتم استخدام MD5 أيضًا - خوارزمية لإنشاء ملخص الرسالة. تم توضيح بناء جملة شهادات المفتاح العام في X.509.

إحدى المزايا المهمة لـ SSL هي استقلالها الكامل عن النظام الأساسي للبرامج. تم تطوير البروتوكول على مبادئ قابلية النقل، ولا تعتمد أيديولوجية بنائه على التطبيقات التي يتم استخدامه فيها. بالإضافة إلى ذلك، من المهم أيضًا أن يتم وضع البروتوكولات الأخرى بشفافية فوق بروتوكول SSL؛ إما لزيادة درجة حماية تدفقات المعلومات المستهدفة، أو لتكييف قدرات التشفير لـ SSL لبعض المهام الأخرى المحددة جيدًا.

اتصال SSL

بروتوكولات SFTP وFTPS

تحتوي القناة الآمنة التي توفرها SSL على ثلاث خصائص رئيسية:

  • القناة خاصة . يتم استخدام التشفير لجميع الرسائل بعد حوار بسيط يعمل على تحديد المفتاح السري.
  • القناة موثقة تتم دائمًا مصادقة جانب الخادم للمحادثة، بينما تتم مصادقة جانب العميل بشكل اختياري.
  • القناة موثوقة . يتضمن نقل الرسائل التحقق من السلامة (باستخدام MAC).

مميزات برنامج FTPS

هناك تطبيقان لـ FTPS، باستخدام طرق مختلفة لتوفير الأمان:

  • تتضمن الطريقة الضمنية استخدام بروتوكول SSL القياسي لإنشاء جلسة قبل إرسال البيانات، مما يؤدي بدوره إلى قطع التوافق مع عملاء وخوادم FTP العادية. للتوافق مع الإصدارات السابقة مع العملاء الذين لا يدعمون FTPS، يتم استخدام منفذ TCP 990 لاتصال التحكم ويتم استخدام 989 لنقل البيانات، ويحتفظ هذا بالمنفذ القياسي 21 لبروتوكول FTP. تعتبر هذه الطريقة عفا عليها الزمن.
  • يعد Explicit أكثر ملاءمة، لأنه يستخدم أوامر FTP القياسية، ولكنه يقوم بتشفير البيانات عند الاستجابة، مما يسمح لك باستخدام نفس اتصال التحكم لكل من FTP وFTPS. يجب على العميل أن يطلب بشكل صريح نقل البيانات بشكل آمن من الخادم، ثم يوافق على طريقة التشفير. إذا لم يطلب العميل نقلًا آمنًا، يحق لخادم FTPS إما الحفاظ على الاتصال غير الآمن أو إغلاقه. تمت إضافة آلية التفاوض بشأن المصادقة وأمن البيانات ضمن RFC 2228 والتي تتضمن أمر FTP AUTH الجديد. على الرغم من أن هذا المعيار لا يحدد آليات الأمان بشكل صريح، إلا أنه يحدد أنه يجب على العميل بدء اتصال آمن باستخدام الخوارزمية الموضحة أعلاه. إذا لم يكن الخادم يدعم الاتصالات الآمنة، فيجب إرجاع رمز الخطأ 504. يمكن لعملاء FTPS الحصول على معلومات حول بروتوكولات الأمان التي يدعمها الخادم باستخدام الأمر FEAT، ومع ذلك، لا يُطلب من الخادم الكشف عن مستويات الأمان التي يستخدمها يدعم. أوامر FTPS الأكثر شيوعًا هي AUTH TLS وAUTH SSL، والتي توفر أمان TLS وSSL، على التوالي.

SFTP

SFTP (بروتوكول نقل الملفات الآمن) هو بروتوكول نقل ملفات طبقة التطبيق الذي يتم تشغيله أعلى قناة آمنة. لا ينبغي الخلط بينه وبين (Simple File Transfer Protocol)، الذي يحمل نفس الاختصار. إذا كان FTPS مجرد امتداد لـ FTP، فإن SFTP هو بروتوكول منفصل وغير ذي صلة يستخدم SSH (Secure Shell) كأساس له.

تأمين شل

تم تطوير البروتوكول بواسطة إحدى مجموعات IETF التي تسمى Secsh. لم تصبح وثائق العمل الخاصة ببروتوكول SFTP الجديد معيارًا رسميًا، ولكن بدأ استخدامها بنشاط لتطوير التطبيقات. وفي وقت لاحق، تم إصدار ستة إصدارات من البروتوكول. ومع ذلك، فإن الزيادة التدريجية في الوظائف فيه أدت إلى أنه في 14 أغسطس 2006، تقرر التوقف عن العمل على تطوير البروتوكول بسبب الانتهاء من المهمة الرئيسية للمشروع (تطوير SSH) وعدم وجود بمستوى خبراء كافٍ للانتقال إلى تطوير بروتوكول كامل لنظام الملفات عن بعد.

SSH هو بروتوكول شبكة يسمح بالتحكم عن بعد في نظام التشغيل ونفق اتصالات TCP (على سبيل المثال، لنقل الملفات). يشبه في وظائفه بروتوكولات Telnet وrlogin، ولكنه، على عكسهما، يقوم بتشفير كل حركة المرور، بما في ذلك كلمات المرور المرسلة. يسمح SSH باختيار خوارزميات التشفير المختلفة. يتوفر عملاء SSH وخوادم SSH لمعظم أنظمة تشغيل الشبكات.

يسمح لك SSH بنقل أي بروتوكول شبكة آخر تقريبًا بشكل آمن في بيئة غير آمنة. وبالتالي، لا يمكنك العمل عن بعد على جهاز الكمبيوتر الخاص بك من خلال shell Command فحسب، بل يمكنك أيضًا إرسال دفق صوتي أو فيديو (على سبيل المثال، من كاميرا ويب) عبر قناة مشفرة. يمكن لـ SSH أيضًا استخدام ضغط البيانات المرسلة للتشفير اللاحق، وهو أمر مناسب، على سبيل المثال، لتشغيل عملاء X WindowSystem عن بعد.

تم تطوير النسخة الأولى من البروتوكول، SSH-1، في عام 1995 من قبل الباحث تاتو أولونين من جامعة هلسنكي للتكنولوجيا (فنلندا). تمت كتابة SSH-1 لتوفير خصوصية أكبر من بروتوكولات rlogin وtelnet وrsh. وفي عام 1996، تم تطوير نسخة أكثر أمانًا من البروتوكول، SSH-2، وهو غير متوافق مع SSH-1. اكتسب البروتوكول المزيد من الشعبية، وبحلول عام 2000 كان لديه ما يقرب من مليوني مستخدم. حاليًا، مصطلح "SSH" يعني عادةً SSH-2، لأنه لم يتم الآن استخدام الإصدار الأول من البروتوكول عمليًا بسبب عيوب كبيرة. وفي عام 2006، تمت الموافقة على البروتوكول من قبل مجموعة عمل IETF كمعيار للإنترنت.

هناك نوعان من التطبيقات الشائعة لـ SSH: المصدر التجاري الخاص والمجاني المفتوح. التنفيذ المجاني يسمى OpenSSH. بحلول عام 2006، 80% من أجهزة الكمبيوتر على الإنترنت تستخدم OpenSSH. تم تطوير تطبيق الملكية بواسطة SSH Communications Security، وهي شركة فرعية مملوكة بالكامل لشركة Tectia Corporation، وهي مجانية للاستخدام غير التجاري. تحتوي هذه التطبيقات تقريبًا على نفس مجموعة الأوامر.

بروتوكول SSH-2، على عكس بروتوكول telnet، مقاوم لهجمات التنصت على حركة المرور ("الاستنشاق")، ولكنه ليس مقاومًا لهجمات الوسيط. كما أن بروتوكول SSH-2 مقاوم أيضًا لهجمات اختطاف الجلسة، لأنه من المستحيل الانضمام إلى جلسة محددة بالفعل أو اختطافها.

لمنع هجمات الوسيط عند الاتصال بمضيف لم يعرف العميل مفتاحه بعد، يعرض برنامج العميل للمستخدم "بصمة مفتاح". يوصى بالتحقق بعناية من "لقطة المفتاح" التي يعرضها برنامج العميل مع لقطة مفتاح الخادم، ويفضل الحصول عليها من خلال قنوات اتصال موثوقة أو شخصيًا.

يتوفر دعم SSH على جميع الأنظمة المشابهة لـ UNIX، ومعظمها يحتوي على عميل وخادم ssh كأدوات مساعدة قياسية. هناك العديد من تطبيقات عملاء SSH لأنظمة تشغيل غير UNIX. اكتسب البروتوكول شعبية كبيرة بعد التطور الواسع النطاق لمحللات حركة المرور وطرق تعطيل تشغيل الشبكات المحلية، كحل بديل لبروتوكول Telnet غير الآمن لإدارة العقد المهمة.

التواصل باستخدام SSH

للعمل عبر SSH، تحتاج إلى خادم SSH وعميل SSH. يستمع الخادم للاتصالات من الأجهزة العميلة، وعندما يتم إنشاء اتصال، يقوم بإجراء المصادقة، وبعد ذلك يبدأ في خدمة العميل. يتم استخدام العميل لتسجيل الدخول إلى جهاز بعيد وتنفيذ الأوامر.

بروتوكولات SFTP وFTPS

مقارنة مع FTPS

الشيء الرئيسي الذي يميز SFTP عن FTP وFTPS القياسي هو أن SFTP يقوم بتشفير جميع الأوامر وأسماء المستخدمين وكلمات المرور والمعلومات السرية الأخرى تمامًا.

يستخدم كل من بروتوكولي FTPS وSFTP مجموعة من الخوارزميات غير المتماثلة (RSA، DSA)، والخوارزميات المتماثلة (DES/3DES، AES، Twhofish، وما إلى ذلك)، بالإضافة إلى خوارزمية تبادل المفاتيح. للمصادقة، يستخدم FTPS (أو بشكل أكثر دقة، SSL/TLS عبر FTP) شهادات X.509، بينما يستخدم SFTP (بروتوكول SSH) مفاتيح SSH.

تشتمل شهادات X.509 على مفتاح عام وبعض المعلومات حول شهادة المالك. ومن ناحية أخرى، تسمح هذه المعلومات بالتحقق من سلامة الشهادة نفسها وصحتها وصاحبها. تحتوي شهادات X.509 على مفتاح خاص مطابق، والذي يتم عادةً تخزينه بشكل منفصل عن الشهادة لأسباب أمنية.

يحتوي مفتاح SSH على المفتاح العام فقط (يتم تخزين المفتاح الخاص المقابل بشكل منفصل). ولا يحتوي على أي معلومات عن صاحب المفتاح. تستخدم بعض تطبيقات SSH شهادات X.509 للمصادقة، لكنها لا تتحقق فعليًا من سلسلة الشهادات بأكملها - يتم استخدام المفتاح العام فقط (مما يجعل هذه المصادقة غير مكتملة).

اختتام

مما لا شك فيه أن بروتوكول FTP لا يزال يلعب دورًا مهمًا في تخزين وتوزيع المعلومات على الشبكة على الرغم من عمره الجليل. وهو بروتوكول مناسب ومتعدد الوظائف وموحد. تم إنشاء العديد من أرشيفات الملفات على أساسها، والتي بدونها لن يكون العمل الفني فعالاً. بالإضافة إلى ذلك، من السهل إعداده، وتوجد برامج الخادم والعميل لجميع الأنظمة الأساسية الحالية وغير الحالية تقريبًا.

بدورها، تعمل إصداراتها المحمية على حل مشكلة سرية البيانات المخزنة والمرسلة في العالم الحديث. كلا البروتوكولين الجديدين لهما إيجابيات وسلبيات ويخدمان أدوارًا مختلفة قليلاً. في تلك المناطق التي تحتاج إلى أرشيف ملفات، من الأفضل استخدام FTPS، خاصة إذا تم استخدام FTP الكلاسيكي هناك من قبل. يعد SFTP أقل شيوعًا نظرًا لعدم توافقه مع البروتوكول القديم، ولكنه أكثر أمانًا ويحتوي على وظائف أكثر، لأنه جزء من نظام الإدارة عن بعد.

قائمة المصادر

المصدر: www.habr.com

إضافة تعليق