سؤال

لقد قمت بإنشاء تطبيق Delphi 2010. يستخدمه العديد من الشركات في المنطقة من المستخدمين الموثوق بهم إلى المستخدمين غير الموثوق بهم. يقوم التطبيق المصادقة على المستخدمين مع MySQL خلف كلمة المرور المشفرة MD5. بعد ذلك ، يحتاج التطبيق إلى تحميل وتنزيل العديد من الملفات FTP.

والحقيقة هي: أي شبكة sniffer (مثل الأثير المعروفة أيضًا باسم Wireshark) يمكنها الحصول على مستخدمي وكلمة مرور عادي من جزء FTP من طلبي. يمكن أن تكون كلمة المرور المشفرة أيضًا إمساكًا ويمكن لأي شخص تسجيل الدخول مع أي تطبيق FTP على الخادم الخاص بي وجعل الأشياء غير المرغوب فيها.

Tindyftp يستخدم لإدارة Connexion FTP نفسه. هذا الكائن الذين لا يدعمون SFTP التي طلبتها والتي يمكن أن تكون نهاية مشكلتي.

TMYMAC من Devart يستخدم لإدارة Connexion MySQL.

ما هي وجهة نظري الآن: إنها طريقة جيدة لاستخدام نفق SSH للتحكم في معالج IO لكل من نوع المعاملة (FTP و MySQL) على طلبي؟ أقوم ببعض الاختبارات الآن مع SecureBridge من Devart المتوافق مع مكون MyDac و Tindy.

هل أنا ببساطة بحاجة للاتصال نفق SSH وانتقل إلى MySQL و FTP؟ هل أحتاج أيضًا إلى تشفير كلمة مرور FTP أثناء استخدام SSH Tunnel؟ بالنسبة لجزء MySQL ، يبدو أن كلمة المرور مشفرة أو مشفرة عندما أحاول اعتراضها مع Wireshark.

بفضل إخباري بفكرتك من تلك النقطة دون تغيير كل بنية برنامجي الذي تم الانتهاء منه بنسبة 99 ٪ :)

شكرا ، جوناثان

هل كانت مفيدة؟

المحلول

أولاً ، تحتاج إلى تحديد ، ما هو البروتوكول الذي يجب عليك / استخدامه بالضبط. FTP ليس SFTP ، و FTP على SSH لا معنى له أيضًا (على الرغم من أنه ممكن). دعنا نراجع الخيارات:

  1. استخدم FTPs (FTP-Over-SSL). يتطلب أن يكون لخادم FTP الخاص بك شهادة SSL ، وإلا فهو خيار Vialbe. CON: لا تأمين اتصال MySQL.
  2. استخدم FTP على نفق SSH. لا ترى لماذا يفعل ذلك إذا كان بإمكانه استخدام SFTP. FTP عبر SSH ممكن مع Indy ونا SecureBlackBox المنتج.
  3. استخدم SFTP (بروتوكول نقل ملف SSH) لنقل الملفات واستخدام إعادة توجيه منفذ SSH لتأمين اتصال MySQL. من الناحية الفنية ، من الممكن تشغيل كل من نظام SFTP الفرعي وإعادة توجيه المنفذ عبر جلسة SSH التي تم إنشاؤها ، و SecureBlackBox يدعم هذا. لا أعرف عن أشياء Devart ، لأن عميل SSH/SFTP الخاص بهم صغير جدًا ويمكن أن يكون له قيود معينة.

إذا كان لديك خادم Linux (يقترح MySQL أن تفعل ذلك) ، فسيكون ذلك OpenSsh كخادم SSH ، ويحتوي OpenSsh على خادم SFTP مدمج. إذا قمت بتشغيل MySQL على Windows ، فستواجه صعوبة في استخدام منافذ OpenSsh على Windows ، وسيكون Bitvise SSH Server خيارًا أفضل (نستخدمه على خادمنا الداخلي).

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

إذا قررت الذهاب إلى مسار FTP-Over-Ssh (على الرغم من أنني لا أرى لماذا ستحتاج إلى هذا) ، فلا تحتاج إلى تأمين كلمة مرور FTP حيث ستقوم بتشغيل FTP عبر نفق SSH الآمن.

نصائح أخرى

Tidftp في Indy 10 يفعل الدعم تشفير ، سواء على مستوى الاتصال (SSL/TLS) ومستوى اعتماد تسجيل الدخول (SASL).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top