SLES 11マシンがあります。ユーザーはSSHとpubkeyを介してログインします(混合、一部のユーザーはパスワードを使用、一部はsshキーを使用)
Sshd_configには以下が含まれます。
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
問題:pubkeyログインを使用するユーザーのパスワードの有効期限が切れると、ユーザーはパスワードを変更するように求められます。
質問:ユーザーが有効なSSHキーを持ち、パスワードの有効期限が切れている場合にユーザーがログインできるように、PAMまたはsshd構成を設定するにはどうすればよいですか? -なしポップアップ「パスワードの変更」。
更新#1:ソリューションは「UsePAM no」にすることはできません
SERVER:~ # cat /etc/pam.d/sshd
#%PAM-1.0
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
SERVER:~ #
更新#2:解決策はできません:ユーザーのパスワードを無期限に設定する
アップデート#3:
SERVER:/etc/pam.d # cat common-account
#%PAM-1.0
...
account required pam_unix2.so
account required pam_tally.so
SERVER:/etc/pam.d #
パスワードプロンプトが期限切れになる原因となる操作の順序は次のとおりです。
account
ステージを実行し、アカウントが存在し、有効であることを確認します。 account
ステージは、パスワードの有効期限が切れたことを通知し、SSHに通知します。auth
ステージは実行されません。次に、SSHログインセッションをセットアップし、PAM session
ステージを実行します。これはすべてSSHが行っていることであり、この動作を構成するためのSSHオプションはありません。したがって、SSHやPAMのカスタムバージョンを構築したくない場合を除いて、私が見る唯一のオプションは、PAMが期限切れのパスワードをSSHに報告しないようにすることです。これを行うと、ユーザーがパスワードを使用してSSH経由でログインしている場合でも、SSH経由での期限切れのパスワードチェックが完全に無効になります。他の(SSH以外の)ログイン方法でも、パスワードの有効期限がチェックされます。
現在のpam.d/sshd
ファイルにはaccount include common-account
エントリがあります。 common-account
への参照を含むpam_unix.so
ファイルがあると思います。これは、期限切れのパスワードをチェックする行です。
common-account
ファイル自体は他のログイン方法で使用されるため、触れたくないでしょう。代わりに、pam.d/sshd
ファイルからinclude
を削除します。 common-account
の他にpam_unix.so
に他の関数がある場合は、それらをpam.d/sshd
に直接配置することをお勧めします。
最後に、これはシステムのセキュリティの変更であり、私に盲目的に信頼して良いアドバイスを与えるべきではないことを忘れないでください。 PAMに慣れていない場合にPAMがどのように機能するかを読んでください。開始場所には、man 7 PAM
、man 5 pam.conf
、man 8 pam_unix
などがあります。
No_pass_expiryと呼ばれるオプションがpam_unix.so(2016年2月頃)に追加されました( ソースコードの変更はこちら または manページはこちら )。基本的には、pam_unix以外のものが認証に使用された場合、期限切れのパスワードを無視するようにpam_unixに指示します。 sshdが認証を実行した場合。
その結果、そのオプションを含むpam_unix.soのバージョンがある場合、PAMを次のように構成できるはずです。
たとえば、RHEL 7サーバーを上記のように構成するには、/ etc/pam.d/sshdを更新し、pam_unix.so no_pass_expiryをアカウントとパスワードの両方のタイプに追加します。
account required pam_nologin.so
account sufficient pam_unix.so no_pass_expiry
account include password-auth
password sufficient pam_unix.so no_pass_expiry
password include password-auth
次に、rootはパスワードの変更日を微調整できます。
for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done