Opensourcetechブログ

OpensourcetechによるNGINX/Kubernetes/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

pam_tally2.soによるアカウントロックとSSHアクセスリトライ回数の関係


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

Opensourcetech by Takahiro Kujirai