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





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



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



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



  • , . , 1 5 . . .
  • ​​ «» .




  • , .

    — , . - 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-9-512-742@smallstep.com حتى لا أنسى مفتاح الأمان الذي تنتمي إليه هذه المرجع المصدق.



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



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


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



على المضيفين كجذر ، أضف (إذا لم تتم إضافته بالفعل) إلى تكوين 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

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



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


بعد ذلك ، قم بإنشاء الشهادة نفسها. أحتاج إلى إذن مستخدم ubuntu في فاصل زمني 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: ecdsa-sha2-nistp256-cert-v01@openssh.com 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. يمكنك الآن إنشاء شهادات لأي مستخدم على المضيف الذي يثق CA الخاص بك.
  2. يمكنك إزالة الطوارئ. يمكنك الاحتفاظ بـ sk-user-ca ، ولكنك لست بحاجة إلى ذلك لأنه موجود أيضًا على مفتاح الأمان. قد ترغب أيضًا في إزالة المفتاح العام PEM الأصلي من المضيفين (على سبيل المثال ، في ~ / .ssh / certified_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 للاستغناء عنه. إذا كنت بحاجة إلى إرسال شهادة إلى زميل ، فإن الخيار الأسهل والأكثر أمانًا هو Magic Wormhole . يتطلب هذا ملفين فقط - في حالتنا ، هذه ملفات الطوارئ و الطوارئ.



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






إعلان



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






All Articles