لقد اتبعت التعليمات حول redhat حول كيفية تقوية المصادقة على خادم Linux ، لكننا نستخدم SSH فقط مع مصادقة المفتاح العام. وفقًا لهذه التعليمات: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-hardening_your_system_with_tools_and_services

إليك ملفي /etc/pam.d/system-auth و /etc/pam.d/password-auth ، كلاهما متماثلان في الواقع:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=60
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=60
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_faillock.so
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

باستخدام هذا التكوين ، كنت آمل في تحقيق نوع من رسائل القفل إذا حاول المستخدم المصادقة باستخدام مفتاح خاطئ بعد 3 محاولات على سبيل المثال. ولكن لا تظهر أي رسالة حول الإغلاق ، وليس لدي طريقة لمعرفة ما إذا كانت سياسة الإغلاق تعمل أم لا. هناك أيضًا وحدة pam_tally2 ، لكنني لا أرى الفرق الذي ستحدثه مقابل وحدة pam_faillock.

لا تظهر السجلات شيئًا سوى رفض إذن الجذر هذا:

[[email protected] ~]$ cat /var/run/faillock/some_user
[[email protected] ~]$ cat /var/run/faillock/root 
cat: /var/run/faillock/root: Permission denied

وقد حاولت استخدام المفتاح الخاطئ لـ ssh من أجله some_user، ولا يبدو أنه يغلقني لأنني لا أرى أي شيء في سجلات faillock أو أي رسالة ssh من حيث أحاول ssh.

answer

تكمن المشكلة في أنك تحاول فرض هذه السياسات داخل حزمة المصادقة.

auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=60
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=60
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_faillock.so
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

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

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

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

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

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

في حالة كلمة المرور المطلوبة لمصادقة مفتاح ssh ، فهذه هي كلمة المرور للمفتاح الخاص. لا يؤدي عدم المصادقة على المفتاح الخاص إلى أي فشل في المصادقة على الخادم.