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

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

يجادل المستشارون في الغالب أنك لست مضطرًا لتذكر كلمة مرور. كم هذا غير آمن؟ لذا إذا اخترق شخص ما جهاز الكمبيوتر الخاص بي ، فلن يحصل فقط على جهاز الكمبيوتر الخاص بي ، ولكن الخادم الخاص بي أيضًا؟ إذا كنت أستخدم SSH من عملاء مختلفين ، يجب أن أقوم بتخزين المفاتيح العامة لكل واحد منهم ، مما يضاعف احتمالية وقوعها في أيدي مزيفة. يمكنني حفظها على عصا USB أحملها معي ، ولكن يمكن أن تضيع ويمكن للباحث الوصول إلى الخادم الخاص بي.

ربما يتم خدمتي بشكل أفضل مع المصادقة الثنائية.

هل هناك حجة مفقودة؟ ما هو افضل طريق بالنسبة لي؟

answer

if someone hacks into my computer, he doesn't just get my computer, but my server too?

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

لكن هناك 3 مزايا للمفاتيح:

1) مصادقة قابلة للتخزين المؤقت. أدخل عبارة مرورك مرة واحدة ، وقم بتنفيذ أوامر ssh المتعددة. يعد هذا مفيدًا جدًا إذا كنت تستخدم شيئًا يستخدم ssh كوسيلة نقل ، مثل scp أو rsync أو git.

2) مصادقة قابلة للتطوير. أدخل عبارة مرورك مرة واحدة ، وقم بتسجيل الدخول إلى أجهزة متعددة . كلما زاد عدد الأجهزة التي لديك ، كان هذا مفيدًا أكثر. إذا كان لديك 100 آلة ، فماذا تفعل؟ لا يمكنك استخدام نفس كلمة المرور (إلا إذا كانت مزرعة استنساخ) ، ولا يمكنك تذكر الكثير. لذلك سيتعين عليك استخدام مدير كلمات المرور ، وستعود إلى نقطة تسوية واحدة. على نحو فعال ، فإن عبارة المرور الرئيسية هي مدير كلمات المرور الخاصة بك.

2 ب) يتم قياسه بطريقة أخرى إذا كان لديك عدة مشرفين يستخدمون نفس الأنظمة ، لأنه يمكنك إبطال المفاتيح من المستخدم أ دون الحاجة إلى إخبار B ، C ، D ، E ، F ... أن كلمة المرور قد تغيرت.

(يمكن القيام بذلك أيضًا مع الحسابات الفردية و sudo ، ولكن بعد ذلك يتعين عليك توفير هذه الحسابات بطريقة ما)

3) الأتمتة والتفويض الجزئي. يمكنك إعداد SSH لتشغيل أمر معين عند توصيل مفتاح . يتيح ذلك عملية آلية على النظام A للقيام بشيء ما على النظام B دون وجود ثقة كاملة بدون كلمة مرور بين الاثنين.

(إنه بديل لـ rlogin / rsh ، والذي كان غير آمن بشكل مضحك)

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

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

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

هناك وظائف مماثلة:

  1. النشر من serverfault .
  2. إرسال من تبادل مكدس الأمن .
  3. مشاركة من مستخدم متميز .

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

(الأمر نفسه ينطبق عندما يتمكن المهاجم من السيطرة على الخادم ، وهناك خوادم أخرى تعمل فيها نفس بيانات الاعتماد.)

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

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

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

يمكن لـ OpenSSH الاحتفاظ بـ CA الخاص بها لإدارة مضيف SSH ومفاتيح العميل ويمكنها استخدام قوائم الإبطال عليها. يمكن أن يضيف هذا إلى الأمان الذي توفره المصادقة القائمة على المفتاح.

أنت محق بشأن مطالبة "لا تحتاج إلى كلمة مرور". هذا أمر غير آمن حقًا من جانب العميل.

ما يجعل السماح للمفاتيح العامة فقط لتسجيل الدخول أكثر أمانًا هو حقيقة أنه لا توجد طريقة لفرض الوصول إلى الخادم الخاص بك. كل ما يمكن للمهاجم تحقيقه هو وضع بعض العبء على الخادم الخاص بك - يمكنك استخدام fail2ban لإبقاء ذلك تحت السيطرة .

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

Possibly I am better served with Two-Factor Authentication.

أحد الاحتمالات لـ 2FA لـ SSH (والذي يتطلب إعدادًا / تعقيدًا قليلًا نسبيًا) هو في الواقع استخدام مفتاح عام وكلمة مرور.

أعتقد أن شيئًا ما على غرار ما AuthenticationMethods publickey,keyboard-interactiveيمكن إضافته /etc/ssh/sshd_configلإنجاح هذا العمل.

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

غالبًا ما تكون كلمة المرور أقل من 2048 بت ، وغالبًا لا يتم اشتقاقها من مصدر آمن مشفر.

يمكنك أيضًا تأمين مفاتيحك بكلمة مرور ، للحماية من المشكلات المتعلقة بفقدانها (على الرغم من أن شخصًا ما قد يحاول فرض كلمة المرور هذه).

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