PAM で認証試行を制御するにはどうすればよいでしょうか?

PAM で認証試行を制御するにはどうすればよいでしょうか?

セッションをドロップする前に、ログイン時にユーザーがパスワードの入力を求められる回数 (認証試行回数) を設定したいと思います。PAM はこのケースをサポートしていますか? サポートしている場合は、このために必要な設定についてサポートしてもらえますか?

答え1

PAM用のログインカウンターモジュールがあります。pam_tallyこれを使用すると、ログイン試行回数のカウントを維持し、一定数のログイン試行が失敗した場合にそれ以上の試行をブロックできます。

例:

/etc/pam.d/common-authDebian では、アカウントがロックされる前にユーザーに 3 回のログイン試行を許可するように次の行を追加できます。

auth required pam_tally.so onerr=fail deny=3 no_magic_root

これにより、no_magic_rootルート ユーザーがロックアウトされるのを防ぎます。

としてピーター指摘したように、unlock_timeオプションを使用すると、ロックアウトされたアカウントが自動的にロック解除されるまでの秒数を指定できます。 このオプションを に設定して1、アカウントを 1 秒間ロックすると、ログイン試行は指定された回数後に中止されますが、ユーザーは (ほぼ) すぐに再試行できます。

次の行を追加すると、/etc/pam.d/common-accountログイン成功時にログイン回数がリセットされます。

account required pam_tally.so reset no_magic_root

Fedora では、両方の行を に追加できます/etc/pam.d/system-auth

ロックアウトされたアカウントへのアクセスは、付属のユーティリティを使用して次のようにuser復元できます。pam_tally

$ pam_tally --user user --reset=0

答え2

認証に失敗する回数ではなく、プロンプトが表示される回数を制御しようとする場合、PAM でこれを管理するのは難しいかもしれません。たとえば、ssh にはこれに対する独自の設定があります。

     NumberOfPasswordPrompts
         Specifies the number of password prompts before giving up.  The
         argument to this keyword must be an integer.  The default is 3.

関連情報