أنا عالق في الحصول على المصادقة الثنائية في CentOS 7 للعمل ؛ على وجه التحديد المصادقة عبر SSH و OTP.

سأكون ممتنًا للغاية إذا كان بإمكان أي شخص مساعدتي في هذا الأمر. :)

تحرير: كما أفهمها من السجل أدناه ، تطلب وحدة pam من RADIUS-Server المصادقة ، ويستجيب الخادم بالرمز 11 بحيث تتحدى وحدة pam المستخدم لمرة واحدة ولكن بدلاً من ذلك تقول الوحدة "فشلت المصادقة" . إذن يجب أن يكون العميل هو المشكلة ، أليس كذلك؟

فيما يلي سجل لمحاولة تسجيل الدخول عبر SSH بالحساب " [email protected] ":

sshd[3652]: pam_radius_auth: Got user name [email protected]
sshd[3652]: pam_radius_auth: ignore last_pass, force_prompt set
sshd[3652]: pam_radius_auth: Sending RADIUS request code 1
sshd[3652]: pam_radius_auth: DEBUG: getservbyname(radius, udp) returned 0x7fa56490e1c0.
sshd[3652]: pam_radius_auth: Got RADIUS response code 11
sshd[3652]: pam_radius_auth: authentication failed
sshd[3652]: pam_sepermit(sshd:auth): Parsing config file:     /etc/security/sepermit.conf
sshd[3652]: pam_sepermit(sshd:auth): Enforcing mode, access will be allowed on match
sshd[3652]: pam_sepermit(sshd:auth): sepermit_match returned: -1
sshd[3652]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.31 [email protected]
sshd[3652]: Failed password for [email protected] from 10.0.0.31 port 57962 ssh2
sshd[3652]: Connection closed by 10.0.0.31 [preauth]

اتبع أدناه معلومات التكوين والإعداد

يتم توفير بيئة الاختبار من خلال البنية التحتية لشركتي ؛ نحن نستخدم بشكل أساسي عملاء Windows ونفس الحصة تقريبًا من خوادم Windows و Linux.

خادم Win: Windows Server 2016 x64

  • الدليل النشط: Test.local
  • مصادقة ESET الآمنة (خادم RADIUS)
    • السر المشترك مع العميل: test345
    • تم تمكين الخيار "استخدام ميزة تحدي الوصول لـ RADIUS"

عميل / خادم Linux: CentOS 7.3 x64

  • انضم إلى المجال Test.local عبر المجال
  • تسجيل الدخول المحلي باستخدام حسابات AD و OTP-2FA في جميع الأوقات الممكنة
  • تسجيل الدخول عبر SSH بأي حساب ممكن فقط إذا لم يتم تعيين pam_radius_auth.so على المطلوب في /etc/pam.d/sshd (مما يعني عدم وجود 2FA)

تكوين Linux-Client / Server:

  • تمت إضافة RADIUS-Server و Shared-Secret في / etc / raddb / server
  • pam_radius_auth.so موجود في / usr / lib64 / security /
  • المصادقة المطلوبة تمت إضافة pam_radius_auth.so إلى /etc/pam.d/sshd و /etc/pam.d/login

/etc/pam.d/login

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
auth       sufficient   pam_radius_auth.so
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_radius_auth.so    debug
auth       required pam_sepermit.so      debug
auth       substack     password-auth      debug
auth       include      postlogin     debug
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

/ etc / raddb / server

# server[:port] shared_secret      timeout (s)
10.0.0.1        test345            5
answer

تمكنت من حل هذه المشكلة بنفسي.

من الواضح أن الشيء الوحيد الذي تغير هو ترتيب وحدات بام /etc/pam.d/sshd.

auth sufficient pam_radius_auth.soيجب أن يكون الخط أدناه pam_sepermit.soوما فوق password-auth.

في الواقع ترتيب الوحدات في /etc/pam.d/loginلم يكن صحيحًا أيضًا.

هناك auth sufficient pam_radius_auth.soيجب أن يكون الخط أدناه pam_securetty.soوما فوق system-auth.

إذن هكذا تبدو الملفات الآن:

/etc/pam.d/login

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       sufficient   pam_radius_auth.so
auth       substack     system-auth
auth       include      postlogin
# auth       sufficient   pam_radius_auth.so
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

/etc/pam.d/sshd

#%PAM-1.0
auth       required pam_sepermit.so
auth       sufficient   pam_radius_auth.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare