通过限制用户登录次数,在一定程度上可以减少登录口令被爆破的风险。
使用 PAM 模块限定用户登陆失败的次数
Linux 有一个 pam_tally2.so 的 PAM 模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁定用户。
1vim /etc/pam.d/login
在最上方(即 \#%PAM-1.0 的下一行)添加规则
1auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
各参数解释
even_deny_root 指也限制 root 用户;
deny 设置普通用户和 root 用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定 root 用户锁定后,多少时间后解锁,单位是秒。
此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的 pam 版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。
限制远程登录
以上的修改只是限制了用户从 tty 登录,而没有限制远程登录,如果想限制远程登录,需要改 SSHD 文件
1vim /etc/pam.d/sshd
修改位置同上
1auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
查看用户登录失败的次数1cd /etc/pam.d/
1pam_tally2 --user root
解锁指定用户1cd /etc/pam.d/
1pam_tally2 -r -u root
查看用户登录日志
/var/run/utmp – database of currently logged-in users
/var/log/wtmp – database of past user logins
以上两个文件都是二进制文件,需要使用 who、w、users、last 和 ac 来使用这两个文件包含的信息。
常用的查询登录日志的命令
1who #Who的缺省输出包括用户名、终端类型、登录日期及远程主机
1who /var/log/wtmp #查看所有登陆记录
1last #搜索显示自wtmp文件第一次创建以来登录过的用户