لقد قمت بتثبيت وتكوين PAM على خادم Ubuntu الذي يعمل بشكل صحيح. لتسجيل الدخول ، أرغب في طلب تثبيت مفتاح SSH ، وتوفير كلمة مرور ورمز صالح من تطبيق المصادقة.

المشكلة التي لدي هي أنني أرغب في إضافة استثناءات لهذه المتطلبات على أساس كل مستخدم.

على سبيل المثال ، أرغب في فرض جميع طرق المصادقة هذه على حساب المستخدم الخاص بي ، ولكن حدد مستخدمًا آخر (git - لتثبيت GitLab الخاص بي) ليتم الوصول إليه عن طريق مفتاح SSH فقط (لا يلزم إدخال كلمة مرور أو رمز 2FA) لذا فإن سلوك الدفع والسحب يعمل.

الطريقة الوحيدة التي وجدتها auth required pam_google_authenticator.so nullokللتغلب على هذا في الوقت الحالي هي التعيين في ملف /etc/pam.d/sshd ، لذا فإن جزء 2FA اختياري ، بالإضافة إلى التعليق على @include common-authالسطر. ومع ذلك ، يعني هذا أنه بينما يعمل جزء 2FA ، لم يعد يُطلب مني كلمة المرور الخاصة بي في حسابي الرئيسي.

لقد حاولت القيام بما يلي:

auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth

لكن هذا لا يبدو أنه يعمل.

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

answer

دعونا نفصل هذه المتطلبات قليلاً.

تكوين SSH

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

AuthenticationMethods publickey,keyboard-interactive

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

لعمل استثناءات ، استخدم Matchالكتلة. على سبيل المثال ، لنفترض أن المستخدمين غير المقيدين موجودون في come-as-pleaseالمجموعة. ثم أضف هذه السطر في نهاية sshd_configالملف:

Match Group come-as-please
    AuthenticationMethods publickey keyboard-interactive

لاحظ عدم وجود الفاصلة ، مما يعني أنه يجوز لأعضاء المجموعة استخدام مصادقة المفتاح العام أو المصادقة التفاعلية باستخدام لوحة المفاتيح (كلمة المرور).

تكوين Google-Authenticator

لاستخدام وحدة المصادقة من Google ، تحتاج إلى تعديل /etc/pam.d/sshdالملف. بعد

@include common-auth

سطر ، أضف هذا:

auth    required        pam_google_authenticator.so nullok

أيضًا ، لتمكين المصادقة الثنائية ، تحتاج إلى تعديل ملفك /etc/ssh/sshd_config، بإضافة هذا السطر:

ChallengeResponseAuthentication yes

بعد ذلك ، أعد تشغيل برنامج SSH الخفي.

تحديد وصول المستخدم

بعد التعديلات المذكورة أعلاه ، لديك إعدادات الوصول التالية:

  • يجب أن يكون لدى كل مستخدم مفتاح عام مثبت ، ويجب عليه توفير كلمة مرور.
  • إذا كان هناك .google_authenticatorملف في الدليل الرئيسي للمستخدم، وبعد ذلك يجب توفير رمز الموثق المقابلة كذلك.
  • كل من هو عضو في come-as-pleaseالمجموعة:
    • إذا كان لديهم مفتاح عام مثبتًا ، فلن يحتاجوا إلى توفير كلمة مرور أو رمز المصدق ، سواء كان لديهم .google_authenticatorالملف في منزلهم أم لا ،
    • إذا لم يكن لديهم مفتاح عمومي مثبت ، فعليهم تحديد كلمة مرور. يحتاجون إلى توفير كود المصدق إذا كان .google_authenticatorالملف موجودًا في دليلهم الرئيسي.