الخلفية / السلوك هو: إذا قمت بـ ssh to box via ونجحت GSSAPI / Kerberos وكان لديك مستخدم محلي في / etc / passwd ، يمكنك تسجيل الدخول بشكل جيد وفقًا لتهيئة PAM أدناه. كل خير هناك.

ولكن إذا لم يكن لديك مستخدم محلي في / etc / passwd ولكن يمكنك الحصول على بطاقة خدمة مضيف / XXXXXX (يعمل GSSAPI) ، يفشل sshd في تسجيل الدخول ولا يتلقى مطلقًا مطالبات لـ SecurID (نقاط نصف قطر pam لدينا إلى SecurID). انا افهم ذلك. نظرًا لأن الخادم "تمت مصادقة" المستخدم و pam_unix يعرف أن المستخدم ليس في / etc / passwd ، فلا داعي لاستخدام أي طرق مصادقة أخرى.

ومع ذلك ، فإن سؤالي هو لماذا إذا قمت بتشغيل kdestroy لأول مرة (فشل GSSAPI عن قصد) ، (وما زلت غير موجود في / etc / passwd) ، فهل أحصل فجأة على موجه Securid (أي أن PAM مشغول)؟

تشغيل sshd مع عروض التصحيح: تأجيل تفاعلية لوحة المفاتيح لمستخدم غير صالح "مستخدم". أولاً ، لماذا لا تفشل ببساطة؟ ثانيا لماذا التأخير؟ pam_radius هو "مطلوب" وليس "مطلوب".

أتوقع أيضًا أن أفشل ببساطة لأنه على الرغم من أنني لم أقم بالمصادقة ، لن أتجاوز pam_unix أبدًا.

الملفات:

/ etc / ssh / sshd_config

....  
ChallengeResponseAuthentication yes  
GSSAPIAuthentication            yes  
HostbasedAuthentication         no  
KerberosAuthentication          no  
PasswordAuthentication          no  
PubkeyAuthentication            yes  
RhostsRSAAuthentication         no  
RSAAuthentication               yes  
UsePAM                          yes      
....

/etc/pam.d/sshd

auth       requisite        pam_radius_auth.so conf=pam_radius_auth.conf debug retry=3  
auth       required     pam_nologin.so  
auth     required     pam_krb5.so.1  
account  sufficient      pam_radius_auth.so conf=pam_radius_auth.conf  
account    required     pam_stack.so service=system-auth  
password   required     pam_stack.so service=system-auth  
session    required     pam_stack.so service=system-auth  
session    required     pam_limits.so  
session    optional     pam_console.so  

/etc/pam.d/system-auth

auth        required      pam_env.so  
auth        sufficient    pam_krb5.so.1  
auth        sufficient    pam_unix.so  
auth        required      pam_deny.so  
account     required      pam_unix.so  
password    required      pam_cracklib.so retry=3  
password    sufficient    pam_unix.so use_authtok md5 shadow  
password    required      pam_deny.so  
session     required      pam_limits.so  
session     required      pam_unix.so  
answer

لا يتم التعامل مع مصادقة GSSAPI بواسطة PAM. تُستخدم وحدة PAM الخاصة بـ kerberos لمصادقة كلمة المرور للمستخدم ، باستخدام بروتوكول kerberos للحصول على بطاقة صالحة.

هناك 3 نتائج لمصادقة GSSAPI.

  1. فشلت المصادقة لأنه تم إرسال بيانات الاعتماد ولكن أوراق الاعتماد كانت غير صالحة.
  2. نجحت المصادقة باستخدام بيانات الاعتماد المقدمة.
  3. تم تجاهل المصادقة بسبب عدم توفير بيانات اعتماد.

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

إذا كانت النتيجة 3 ، sshdفستحاول بعد ذلك طرق المصادقة الأخرى ، والتي تتضمن authقسم PAM .

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

بالنسبة للخيار "المطلوب" ، في إعداد المكدس المعطى "مطلوب" و "مطلوب" يكون لهما نفس التأثير. pam_krbلا يمكن طلب تذكرة بدون مستخدم صالح على أي حال ، لذا سينتهي الأمر بالفشل على الفور.

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