LinuCエヴァンジェリストの鯨井貴博@opensourcetechです。
pam_tally2.soによるアカウントロックとSSHアクセスリトライ回数の関係をちょっと調べてみました。
はじめに
実施した内容は、以下の通り。
sshクライアントの設定(ssh_configのNumberOfPasswordPrompts)、sshサーバ(sshd)の設定(ssh_configのNumberOfPasswordPrompts)とpam_tally2.soを使ったアカウントロックです。
※NumberOfPasswordPromptsは、何回パスワード失敗によるリトライを許容するかというパラメータ。
ssh_config、及びsshd_configの変更内容適用には、デーモン(ssh/sshd)の再起動が必要なのでお忘れなく。
kubeuser@kubenewmaster1:~$ sudo cat /etc/ssh/ssh_config . . . NumberOfPasswordPrompts 7 . . .
[root@localhost ~]# cat /etc/ssh/sshd_config . . . NumberOfPasswordPrompts 20 . . . [root@localhost ~]# cat /etc/pam.d/sshd #%PAM-1.0 auth required pam_tally2.so deny=5 unlock_time=120 auth required pam_sepermit.so auth substack password-auth auth include postlogin # Used with polkit to reauthorize users in remote sessions -auth optional pam_reauthorize.so prepare account required pam_nologin.so account required pam_tally2.so account include password-auth password include password-auth . . .
結果
結果は、以下のようになりました。
それぞれのパラメータが独立してカウントしているので少しわかりづらいですが、
・pam_tally2.soで指定した回数(deny=5)でアカウントロックされる
・アカウントロック後は、パスワードがあっていても指定時間(unlock_time=120秒)が経過するまで認証失敗となる
となります。
手動でアカウントロックを解除する場合は、以下のようにします。
[root@localhost ~]# pam_tally2 -u don --reset Login Failures Latest failure From don 0
おわりに
実施する前は、sshdのpam_tally2.soでdeny=3(3回でアカウントロック)と思っていたけどなんでSSHクライアントはその後もパスワードプロンプトを出し続けるんだろうって思っていたのですが、それぞれの設定は独立して動いているからなんですね。
やっぱり何事もやってみなきゃわからないw
Appendix
sshの設定については、以下を参照
https://manpages.ubuntu.com/manpages/jammy/man5/ssh_config.5.html
sshdの設定については、以下を参照
https://manpages.ubuntu.com/manpages/jammy/man5/sshd_config.5.html
pam_tally2については、以下を参照
https://manpages.ubuntu.com/manpages/xenial/man8/pam_tally2.8.html