كيفية تمكين خاصية Two Factor لتسجيل الدخول عبر SSH

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




هل هذا ضروري حقا؟

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

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


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

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

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


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

كيفية تمكين خاصية Two Factor لـ SSH

للتعامل مع طلبات العاملين، سنستخدم وحدة المصادقة القابلة للتوصيل (PAM) من Google، والتي تعمل مع Authy وGoogle Authenticator. قم بتثبيتها من مدير الحزم في توزيعك:

sudo apt-get install libpam-google-authenticator

بعد ذلك، قم بتشغيل أمر التهيئة هذا:

google-authenticator

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

رمز الاستجابة السريعة العملاق.


افتح تطبيق المصادقة الخاص بك، وامسح الرمز الخاص بك (وليس لقطة الشاشة). يجب أن يتزامن تطبيقك ويبدأ في إخراج رموز مكونة من ستة أرقام تتغير كل 30 ثانية.

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

بالنسبة للأسئلة التالية، أجب على ما يلي:

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


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

تكوين SSH للعمل مع Google PAM

افتح ملف تكوين PAM في /etc/pam.d/sshd في محرر النصوص المفضل لديك، وأضف السطر التالي في الأسفل:

auth required pam_google_authenticator.so nullok

ال nullok تعني التوجيهات أن هذا مؤقت، لذا سيكون العاملان اختياريين حتى تغير هذا. اترك الأمر على هذا النحو للاختبار. ستحتاج أيضًا إلى العثور على السطر الذي يحتوي على @include common-auth، وعلق على ذلك بـ #:

# Standard Un*x authentication. 

#@include common-auth

يؤدي هذا إلى إيقاف تشغيل المصادقة المستندة إلى كلمة المرور، وهو ما لا تريده.

بعد ذلك، افتح إعدادات SSH في /etc/ssh/sshd_config. ابحث عن ChallengeResponseAuthentication الخيار، وقم بتشغيله:


# Change to yes to enable challenge-response passwords (beware issues with 

# some PAM modules and threads)

ChallengeResponseAuthentication yes

يؤدي هذا إلى تمكين 2FA، ومع ذلك، فإن مفاتيح SSH تحل محل 2FA بشكل افتراضي، لذا سيتعين عليك إصلاح ذلك عن طريق إضافة السطر التالي إلى نهاية sshd_config:

AuthenticationMethods publickey,keyboard-interactive

يتطلب هذا مفتاحًا عامًا و”تفاعلًا مع لوحة المفاتيح”، وهو الموجه الذي يطلب منك رمز العاملين الخاص بك.

تم تكوين SSH الآن، لذا يمكنك إعادة التشغيل sshd لتشغيله، اتبع هذه الإعدادات الجديدة:

sudo systemctl restart sshd.service

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


إذا كان كل شيء يعمل بشكل صحيح، وتأكدت من عدم وجود مشكلات في تسجيل الدخول، فيمكنك إزالة “nullok“التوجيه في /etc/pam.d/sshd لجعل 2FA إلزاميا.

إذا فقدت الوصول، فلا يزال بإمكانك تسجيل الدخول باستخدام رموز الطوارئ المقدمة لك عند تكوين PAM، ويجب أن يسمح لك المفتاح السري بإعادة ربط تطبيق TOTP في حالة إلغاء ربط التطبيق الخاص بك لأي سبب.

إضافة إمكانية الوصول إلى حسابات الخدمة

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

sudo groupadd service

ثم قم بإضافة المستخدم إلى تلك المجموعة:

sudo useradd  

sudo usermod -a -G service

بعد ذلك، افتح تكوين PAM في /etc/pam.d/sshdوأضف السطر التالي:

auth (success=done default=ignore) pam_succeed_if.so user ingroup service


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

أضف تعليق