期限切れのパスワードとSSHキーに基づくログインにUsePAMを使用する

期限切れのパスワードとSSHキーに基づくログインにUsePAMを使用する

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 # 

答え1

パスワードの有効期限プロンプトを生成する作業の順序は次のとおりです。

  • accountSSHは、アカウントが存在し有効であることを確認するPAMステップを実行します。このaccount段階では、パスワードが期限切れになったことを通知し、SSHに通知します。
  • SSH はキーベース認証を実行します。これにはPAMは必要ないため、その手順は実行されませんauth。次に、SSHログインセッションを確立し、PAMsessionステップを実行します。
  • 次に、SSH は、PAM がパスワードの有効期限が切れたことを通知し、警告メッセージを印刷し、PAM にユーザーがパスワードを変更できるように要求します。その後、SSH 接続が切断されます。

これはすべてSSHを介して実行され、この動作を構成するSSHオプションは表示されません。したがって、SSHおよび/またはPAMのカスタムバージョンを構築する必要がない限り、私が見ることができる唯一のオプションは、PAMが期限切れのパスワードをSSHに報告しないようにすることです。これにより、SSHによる有効期限切れのパスワード検証を完全に無効にします。、ユーザーがパスワードを使用してSSH経由でログインしている場合も同様です。その他(SSHではない)ログイン方法は、引き続きパスワードの有効期限を確認します。

現在pam.d/sshdファイルにエントリがありますaccount include common-accountcommon-accountこのペアを含むファイルがあるようですpam_unix.so。これは期限切れのパスワードを確認するための行です。

common-accountファイル自体は他のログイン方法に使用されるため、触れたくありません。代わりincludeにファイルから削除しようとしていますpam.d/sshdcommon-accountこの他に他の機能があれば に直接pam_unix.so入れることもできますpam.d/sshd

最後に、これはシステムセキュリティに対する修正であり、私は良いアドバイスを提供すると盲目的に信頼してはいけません。 PAMの仕組みについてよくわからない場合は、お読みください。いくつかの開始位置はman 7 PAMman 5 pam.confとすることができますman 8 pam_unix

答え2

no_pass_expiryというオプションがpam_unix.soに追加されました(2016年2月頃)。ここで修正されたソースコードまたはマニュアルページはこちら)。デフォルトでは、認証に pam_unix 以外のものを使用する場合 (例: sshd が認証を実行する場合)、pam_unix は期限切れのパスワードを無視するように指示します。

したがって、このオプションを含むpam_unix.soバージョンがある場合は、PAMを次のように設定できます。

  1. SSHキーを使用してSSH経由で認証する場合、警告は引き続き表示されますが、期限切れのパスワードを変更する必要はありません。
  2. pam_unix.soのログイン/パスワードを使用してSSH経由で認証する場合は、期限切れのパスワードを変更する必要があります。
  3. 他の認証シーケンス(ログインサービスなど)には影響しません。

たとえば、上記のタスクを実行するように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

答え3

  • コンプライアンスの理由でPAMまたはsshd_configを変更しないことがあります。
  • 使用している可能性がありますパスワードを確認するかどうかsshd_configから
  • 任意のパスワードがあります。
  • CIS 準拠を実装した可能性があります。
  • ユーザーは引き続きメッセージを受け取ります。

その後、ルートはパスワード変更日を調整できます。

for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done

関連情報