نحن نصف إجراءً للوصول في حالات الطوارئ إلى مضيفي SSH باستخدام مفاتيح الأجهزة

نحن نصف إجراءً للوصول في حالات الطوارئ إلى مضيفي SSH باستخدام مفاتيح الأجهزة

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

لماذا كل هذا؟ حسنًا، هذا هو خيار الملاذ الأخير. هذا هو الباب الخلفي الذي سيسمح لك بالوصول إلى الخادم الخاص بك عندما لا يعمل أي شيء آخر لسبب ما.

لماذا تستخدم الشهادات بدلاً من المفاتيح العامة/الخاصة للوصول في حالات الطوارئ؟

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

ماذا تحتاج

  • مفاتيح أمان الأجهزة التي تدعم المفاتيح المقيمة.
    المفاتيح المقيمة هي مفاتيح تشفير يتم تخزينها بالكامل داخل مفتاح الأمان. في بعض الأحيان تكون محمية بواسطة رمز PIN أبجدي رقمي. يمكن تصدير الجزء العام من المفتاح المقيم من مفتاح الأمان، بشكل اختياري مع مقبض المفتاح الخاص. على سبيل المثال، تدعم مفاتيح USB من سلسلة Yubikey 5 المفاتيح المقيمة. ومن المستحسن أن تكون مخصصة فقط للوصول في حالات الطوارئ إلى المضيف. في هذا المنشور، سأستخدم مفتاحًا واحدًا فقط، ولكن يجب أن يكون لديك مفتاح إضافي للنسخ الاحتياطي.
  • مكان آمن لتخزين تلك المفاتيح.
  • OpenSSH الإصدار 8.2 أو أعلى على جهاز الكمبيوتر المحلي الخاص بك وعلى الخوادم التي تريد الوصول إليها في حالات الطوارئ. يأتي Ubuntu 20.04 مزودًا بـ OpenSSH 8.2.
  • (اختياري، لكن موصى به) أداة CLI للتحقق من الشهادات.

تدريب

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

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

كتعليق (-C) أشرت [البريد الإلكتروني محمي]حتى لا تنسى مفتاح الأمان الذي ينتمي إليه المرجع المصدق.

بالإضافة إلى إضافة المفتاح إلى Yubikey، سيتم إنشاء ملفين محليًا:

  1. sk-user-ca، وهو مقبض مفتاح يشير إلى المفتاح الخاص المخزن في مفتاح الأمان،
  2. sk-user-ca.pub، والذي سيكون المفتاح العام لمرجع الشهادة الخاص بك.

لكن لا تقلق، يقوم Yubikey بتخزين مفتاح خاص آخر لا يمكن استرجاعه. لذلك، كل شيء موثوق به هنا.

على الأجهزة المضيفة، كجذر، أضف (إذا لم تكن قد قمت بذلك بالفعل) ما يلي إلى تكوين SSHD الخاص بك (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

ثم على المضيف، أضف المفتاح العام (sk-user-ca.pub) إلى /etc/ssh/ca.pub

أعد تشغيل البرنامج الخفي:

# /etc/init.d/ssh restart

الآن يمكننا محاولة الوصول إلى المضيف. ولكن أولا نحتاج إلى شهادة. قم بإنشاء زوج مفاتيح مرتبط بالشهادة:

$ ssh-keygen -t ecdsa -f emergency

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

لذا فإن تبادل المفاتيح العامة لا يزال حيًا وبصحة جيدة. وهذا يعمل حتى مع الشهادات. تلغي الشهادات ببساطة الحاجة إلى قيام الخادم بتخزين المفاتيح العامة.

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

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

سيُطلب منك التوقيع على الشهادة باستخدام بصمة إصبعك. يمكنك إضافة أسماء مستخدمين إضافية مفصولة بفواصل، على سبيل المثال -n ubuntu,carl,ec2-user

هذا كل شيء، الآن لديك شهادة! بعد ذلك تحتاج إلى تحديد الأذونات الصحيحة:

$ chmod 600 emergency-cert.pub

بعد ذلك، يمكنك عرض محتويات شهادتك:

$ step ssh inspect emergency-cert.pub

هذا هو ما يبدو لي:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

هنا المفتاح العام هو مفتاح الطوارئ الذي أنشأناه، ويرتبط sk-user-ca بالمرجع المصدق.

أخيرًا نحن جاهزون لتشغيل أمر SSH:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. يمكنك الآن إنشاء شهادات لأي مستخدم على مضيف يثق في المرجع المصدق الخاص بك.
  2. يمكنك إزالة الطوارئ. يمكنك حفظ sk-user-ca، لكنك لست بحاجة إلى ذلك لأنه موجود أيضًا على مفتاح الأمان. قد ترغب أيضًا في إزالة مفتاح PEM العام الأصلي من مضيفيك (على سبيل المثال في ~/.ssh/authorized_keys لمستخدم ubuntu) إذا كنت تستخدمه للوصول في حالات الطوارئ.

الوصول في حالات الطوارئ: خطة العمل

الصق مفتاح الأمان وقم بتشغيل الأمر:

$ ssh-add -K

سيؤدي هذا إلى إضافة المفتاح العام للمرجع المصدق واصف المفتاح إلى وكيل SSH.

الآن قم بتصدير المفتاح العام لعمل شهادة:

$ ssh-add -L | tail -1 > sk-user-ca.pub

قم بإنشاء شهادة يكون تاريخ انتهاء صلاحيتها مثلاً لا يزيد عن ساعة:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

والآن SSH مرة أخرى:

$ ssh -i emergency username@host

إذا كان ملف .ssh/config الخاص بك يسبب بعض المشاكل عند الاتصال، فيمكنك تشغيل ssh باستخدام خيار -F none لتجاوزه. إذا كنت بحاجة إلى إرسال شهادة إلى زميل، فإن الخيار الأسهل والأكثر أمانًا هو الثقب الدودي السحري. للقيام بذلك، تحتاج فقط إلى ملفين - في حالتنا، الطوارئ و Emergency-cert.pub.

ما يعجبني في هذا النهج هو دعم الأجهزة. يمكنك وضع مفاتيح الأمان الخاصة بك في خزنة ولن تذهب إلى أي مكان.

كإعلان

خوادم ملحمية - هو خوادم افتراضية خاصة رخيصة مع معالجات قوية من AMD، وتردد وحدة المعالجة المركزية الأساسية يصل إلى 3.4 جيجا هرتز. يتيح لك الحد الأقصى للتكوين حل أي مشكلة تقريبًا - 128 نواة لوحدة المعالجة المركزية، و512 جيجابايت من ذاكرة الوصول العشوائي، و4000 جيجابايت من NVMe. انضم إلينا!

نحن نصف إجراءً للوصول في حالات الطوارئ إلى مضيفي SSH باستخدام مفاتيح الأجهزة

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

إضافة تعليق