RedHat Enterprise Linuxでパスワードを複数回間違えたらロックをかける、ということをさせる場合、RHEL5,RHEL6の情報だとpam_tally2を使う、というのが出てくる。
RHEL7だとpam_faillockを使う、という話も出てくる。
サポートサイト情報「How to lock out a user to login a system after a set number of failed attempts in Red Hat Enterprise Linux using pam_tally/pam_tally2」
RHEL7の関連ドキュメント「第4章 ツールとサービスを使用したシステム強化」
でも、RHEL7にはpam_tally2も入っていて使えそうな感じがする・・・
使えるのかなぁ?と思って試したところ、とりあえずつかえはしました。
ただ・・・こういう動作は普通なんだろうか?という動きをしているところがいくつか・・・
- pam_tally2のFailuresカウントはpam_tally2 -rでリセットするか、該当ユーザがログインに成功するかでカウントが0になる
- unlock_timeを過ぎてもpam_tally2のFailuresカウントは自動リセットされず継続する
- 「passwd -S ユーザ」でロックされているかの確認ができない
なお、「passwd -S ユーザ」によるロック状態のチェックは、pam_faillockを使った場合でも使えません。
実際の動作について
とりあえず、pam_tally2設定を行い、パスワード入力を規定回数以上間違えます。
このようなpam_tally2によりロックされている場合、コンソールログインをしようとすると下記のような表示となります。
ホスト名 login: <ユーザ名>
Account locked due to <カウント> failed logins
Password:
システムのログとしては /var/log/secure に対して下記のような出力があります。
Nov 22 18:35:21 linuxtest <authpriv.notice> login:pam_tally2(login:auth): user <ユーザ名>(<UID>) tally 7, deny 5
ここで、さらに間違うとカウントは増加していきます。
unlock_timeが設定されている場合、 unlock_timeの時間が経過した後、1回目の試行でログインに成功すると、カウントが0に戻ります。
しかし、ここでさらにパスワードを間違えてしまうと、 前回のFailuresカウントがリセットされず、カウントが継続して増えていきます。
そして、失敗回数超過がすぐに適用されてしまうため、再度ロックされてしまいます。