CentOS7での2要素認証を機能させるのに行き詰まっています。具体的には、SSHとOTPを介した認証。
誰かがこれを手伝ってくれたらとてもありがたいです。 :)
編集:以下のログからわかるように、pamモジュールはRADIUS-Serverに認証を要求し、サーバーはコード11で応答するため、pam-moduleはユーザーにOTPを要求しますが、代わりにモジュールは「認証に失敗しました」とだけ表示します。だから、クライアントが問題になるはずですよね?
これは、アカウント「[email protected]」でSSH経由でログインしようとしたログです。
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-Server: Windows Server 2016 x64
Linux-クライアント/サーバー: CentOS 7.3 x64
構成 Linuxの-クライアント/サーバー:
/ 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
私は自分でこの問題を解決することができました。
どうやら変更するのは/etc/pam.d/sshd
のpam-modulesの順序だけだったようです。
行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