pam_tally2计数器在每次sudo时都增加的BUG
背景
客户要求用pam_tally2来限制输入密码多次错误后锁定
在/etc/pam.d/common-auth中增加下面选项进行限制
auth required pam_tally2.so deny=6 onerr=fail no_magic_root unlock_time=120
配置完后手使用ssh进行测试,输入密码错误6次后会锁定120秒,解锁后输入正确密码,pam_tally2计数器清零
查看计数器的命令如下:
pam_tally2 -u maintain
显示结果
Login Failures Latest failure From
maintain 0
问题
配置完成后通过ansible远程执行命令使用sudo提权的时候,一直提示密码错误,排查问题中发现只要使用SUDO就会增加密码错误次数(密码正确时也一样),当密码正确也不会清零
只能使用手动清零
pam_tally2 -u admin --reset
通过网上查资料发现,这个问题是sudo的一个bug,ubuntu,redhat都有人碰到过
pam_tally2的文档这样解释:
Account phase resets attempts counter if the user is not magic root.This phase can be used optionally for services which don't call pam_setcred(3) correctly or if the reset should be done regardless of the failure of the account phase of other modules."
这个问题一个可能的原因是sudo模块在执行具体动作之前关闭了pam的session,没有正确调用pam_setcred(),导致返回失败的错误码,pam_tally2计数器累加。
解决办法
有一个临时解决办法就是
在auth required pam_tally2.so deny=6 onerr=fail no_magic_root unlock_time=120
行后面增加
account required pam_tally2.so