PAM模块介绍
Linux-PAM(即linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式。换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制,这种方式下,就算升级本地认证机制,也不用修改程序。
PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在/lib/security下,以加载动态库的形式进,像我们使用su命令时,系统会提示你输入root用户的密码.这就是su命令通过调用PAM模块实现的,之前有文章介绍过。
本文主要实现
在centos8.2 和Ubuntu20.04环境下设置,登录输入密码错误5次,锁定用户2小时。
实验环境
centos8.2,RHEL可做参考。centos7配置和centos8不一样,请注意。
Ubuntu20.04,Ubuntu其他版本类似
说明
1、pam_tally2模块在centos8后已淘汰掉,centos8用pam_faillock 模块替换。
2、设置的是密码错误5次就锁住2小时,不管5次是不是连续输入,只要在一段时间内错误5次就锁住(系统默认好像15分钟内,另外尽管有的博客说是要连续输入,但在centos8.2系统不管是不是连续输入,只要达到5次就会锁住,除非写的认证语句不一样这个自己去研究)。
3、Ubuntu的PAM配置里,分了好多个文件,我们这次只设置其中常用的两个,设置方式也有所不同 。
4、锁住一次后,等解锁了,5次会清0。
5、时间单位是秒,可根据喜好自定义。
操作文件
centos8.2:
/etc/pam.d/system-auth
/etc/pam.d/password-auth
Ubuntu20.04:
/etc/pam.d/common-auth
/etc/pam.d/common-password
操作
通过 pam_faillock 模块,将登录尝试失败的数据储存在 /var/run/faillock 目录下每位用户的独立文件中
1,配置
添加以下命令行到 /etc/pam.d/system-auth 文件和/etc/pam.d/password-auth 文件中的对应区段:
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=7200
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=7200
account required pam_faillock.so
注意: auth required pam_faillock.so preauth silent audit deny=3 必须在最前面。 注意上面命令行写在文件的顺序,没配置正确有可能root都无法登录。 如果想锁住root用户,在pam_faillock 条目里添加 even_deny_root 选项
2,/etc/pam.d/password-auth添加后文件如下:
(这里说明一下: 如果只配置password-auth文件,输入密码错误5次后,通过tty终端登录的时候是没问题,可以限制住;但是如果通过其它普通用户用:su - admin2切换过来,则没有限制住; 如果只配置system-auth文件,则不会锁住,也不会生成登录失败日志/var/run/faillock,执行命令faillock也不会有登录失败日志。)
/etc/pam.d/system-auth添加后文件如下:
查看所有用户的尝试失败登录次数 [root@linux ~]# faillock
只查看admin用户(就不测试了)
faillock --user admin
解锁一个用户账户(就不测试了)
faillock --user lt --reset
[root@linux ~]#
解锁所有用户
faillock --reset
faillock其它用法:
info faillock
参考:
https://www.digitalocean.com/community/tutorials/how-to-use-pam-to-configure-authentication-on-an-ubuntu-12-04-vps
本文链接:http://nix.pub/article/configure-pam/