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
パスワードの有効期限プロンプトを生成する作業の順序は次のとおりです。
account
SSHは、アカウントが存在し有効であることを確認する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-account
。common-account
このペアを含むファイルがあるようですpam_unix.so
。これは期限切れのパスワードを確認するための行です。
common-account
ファイル自体は他のログイン方法に使用されるため、触れたくありません。代わりinclude
にファイルから削除しようとしていますpam.d/sshd
。common-account
この他に他の機能があれば に直接pam_unix.so
入れることもできますpam.d/sshd
。
最後に、これはシステムセキュリティに対する修正であり、私は良いアドバイスを提供すると盲目的に信頼してはいけません。 PAMの仕組みについてよくわからない場合は、お読みください。いくつかの開始位置はman 7 PAM
、man 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を次のように設定できます。
- SSHキーを使用してSSH経由で認証する場合、警告は引き続き表示されますが、期限切れのパスワードを変更する必要はありません。
- pam_unix.soのログイン/パスワードを使用してSSH経由で認証する場合は、期限切れのパスワードを変更する必要があります。
- 他の認証シーケンス(ログインサービスなど)には影響しません。
たとえば、上記のタスクを実行するように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