[Time4VPS][CentOS] SSH ログインの失敗回数でアカウントロック

前回、root での SSH ログインを無効にする方法について書いた。

[Time4VPS][CentOS] root での SSH ログインを無効にする – with a Christian Wife
https://wacw.cf/2021/09/03/disable-root-ssh/

次は、SSH ログインでの失敗回数によって、アカウントをロックする設定をすることにした。

環境:
・Time4VPS「Linux 8」(CPU: 2 x 2.60 GHz、RAM: 8192 MB、Storage: 80 GB、Bandwidth: 8 TB、Port speed: 100 Mbps、Virtualization: KVM)、CentOS 7.8
・FileMaker Server for Linux 19.0.1.22(英語)
・macOS Catalina Version 10.15.6(英語環境) で SSH 接続
・Freenom のドメイン(サブドメイン)

(1)/etc/ssh/sshd_config を編集し以下のように設定する。私の環境ではデフォルトでこうなっていた。

UsePAM yes

設定を変更した場合は、sshd のサービスを再起動する。

# systemctl restart sshd.service

(2)/etc/pam.d/password-auth を編集し、以下を追記する。

1auth        [default=die] pam_faillock.so authfail audit deny=4 even_deny_root unlock_time=600
2account     required      pam_faillock.so

注:
・pam_faillock.so 〜 を pam_tally2.so とするのは、古いやり方みたい。
・deny= でアカウントをロックするまでの回数を指定する。
・unlock_time でロックが解除されるまでの時間を指定する(秒)。0 にすると、ロックされたままとなる。
・even_deny_root で root もロックできる。

(4)コンソールによるローカルログインでもログイン失敗でアカウントロックをするため、/etc/pam.d/system-auth も2同様に変更する(2と同一内容を追記)。

以上で設定が完了だ。以下のコマンドでログインの失敗のログを確認できる。

# faillock

ロック状態を解除するには以下のコマンドを実行する。

# faillock --user ユーザ名 --reset

参考:
パスワードポリシー · Redhat / CentOS 7 Procedure manual
https://mizuti69.gitbooks.io/centos7_config_manual/content/4.user/2.user_password.html

CentOS 7 : ログインの失敗回数を制限する : Server World
https://www.server-world.info/query?os=CentOS_7&p=pam_tally

SSH接続でログインの失敗回数によりアカウントをロックする方法 – Qiita
https://qiita.com/KEy2376/items/869ed670e9b627072a75