任务背景:
真实场景中的企业服务器,有时需要限制远程用户的登录次数,避免恶意用户多次尝试输入不同的密码,进行碰运气的撞库攻击,这个功能可以通过PAM认证模块的pam_tally2.so动态库来实现
操作步骤:
1)对Linux的进行基本网络配置,使得win7和Linux能互相ping通对方的Ip地址,确保win7和Linux网络是联通的
2)启动远程登录工具Xshell,新建SSH协议的远程连接,远程主机填写Linux的IP地址,点连接后按照提示,依次输入用户名和正确的密码,可以成功地用ssh协议远程登录Linux;
3)然后断开远程连接并重新登录,先输入正确用户名,再无论多次输入错误的密码后,只要再次输入正确的密码,发现仍然可以成功的登录
4)修改PAM认证模块针对ssh协议的配置文件/etc/pam.d/sshd,方法是输入gedit /etc/pam.d/sshd,打开gedit文本编辑器,在第一行后插入一行配置(红色字体)后存盘退出:
#%PAM-1.0
auth required pam_tally2.so even_deny_root deny=3 unlock_time=60
参数说明:
even_deny_root:甚至会拒绝超级用户root
unlock_time=60:设定解锁时长为60秒,超过60秒这个解锁时长不进行任何登录尝试后,重新输入正确密码又可以重新登录了
deny=3:设定拒绝次数deny为3次,连续deny次输入错误密码后,即使第deny+1次输入正确密码,仍然会被拒绝登录(既用户被锁定)
5)首先用超级用户root进行ssh远程登录,输入3次错误密码后,即使第4次输入正确的密码,仍然被拒绝登录(既root用户被锁定),even_deny_root参数生效;除非执行了命令pam_tally2 --user root --reset重置登录失败次数为0后(即root用户被解锁),输入正确密码又可以成功登录;
6)用普通用户redhat执行登录测试,超过deny=3设定的拒绝次数后看,即使用户输入正确的密码仍然无法登录成功(既redhat用户被锁定),除非执行了命令pam_tally2 --user redhat --reset重置登录失败次数为0后(即redhat用户被解锁),输入正确密码又可以成功登录
7)修改配置文件/etc/pam.d/sshd,在第一行添加以下配置:
auth required pam_tally2.so deny=3 unlock_time=60
去掉even_deny_root,意思是不对超级用户进行限制
8)重复执行第4)步和第5)步,发现root连续输入超过3次错误密码后,输入正确密码仍可以登录成功,但是redhat连续输入超过3次错误密码后,输入正确密码仍然被拒绝登录
说明:
1)在终端执行pam_tally2命令可以查看当前用户登录情况
2)ssh是secure shell协议的简称,sshd是ssh的服务器端的守护进程,为远程客户端提供使用ssh协议远程连接并登录Linux的服务
3)终端输入ps -aux | grep ssh,可以查看到sshd守护进程正在运行,如果执行kill -9 sshd强行杀掉sshd进程后,会发现用Xshell客户端无法再用ssh协议连接到Linux服务器了
4)终端输入netstat -anp | grep ssh 可以查看到sshd守护进程正在侦听22端口,如果客户端已经成功连接,会看到establish了一个TCP连接
课后思考:本次实训是三个Linux知识点的层层递进,第一个是Linux服务,必须sshd服务已经启动,第二是Linux网络基本配置,必须确保网络连通,前两个条件满足,客户端才能用ssh协议成功远程登录Linux服务器;第三个是PAM认证,加了PAM认证配置才能实现对SSH远程登录次数的限定