背景:
- 有时候机器的SSH端口暴露在公网上,也没做啥安全加固,为了防止暴力破解,我们可以尝试密码错误超过设定的次数后,就会锁定该账户多长时间(自定义),时间过后即可自行解锁,这样可以增加攻击者的成本 。
- linux中可以使用pam的pam_tally2.so模块来实现 。
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bakcp /etc/pam.d/sshd /etc/pam.d/sshd.bakcp /etc/pam.d/login /etc/pam.d/login.bak
二、确定使用pam_tally2.so模块还是pam_tally.so模块来实现使用下面命令,查看系统是否含有pam_tally2.so模块,如果没有就需要使用pam_tally.so模块,两个模块的使用方法不太一样,需要区分开来 。# find / -name pam_tally2.so/usr/lib64/security/pam_tally2.so
三、su 多次切换失败后锁定用户__登录失败处理功能策略编辑系统/etc/pam.d/system-auth 文件,一定要在pam_env.so后面添加如下策略参数:#%PAM-1.0# This file is auto-generated.# User changes will be destroyed the next time authconfig is run.authrequiredpam_env.so#限制su 多次切换失败后锁定用户auth required pam_tally2.so onerr=fail deny=3 unlock_time=40 even_deny_root root_unlock_time=40............................
注意:添加的位置顺序不要错,在#%PAM-1.0的下面,一定要在pam_env.so(authrequiredpam_env.so)后面onerr=fail表示定义了当出现错误时的缺省返回值;even_deny_root表示也限制root用户;deny表示设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;unlock_time表示设定普通用户锁定后,多少时间后解锁,单位是秒;root_unlock_time表示设定root用户锁定后,多少时间后自动解锁否则手动,单位是秒;
- 以上策略表示:普通账户和root的帐户登录连续3次失败,普通用户统一锁定时间40秒,root用户锁定40秒,40秒后可以解锁 。
- 如果不想限制root帐户,可以把even_deny_root root_unlock_time这两个参数去掉,root_unlock_time表示root帐户的锁定时间,onerr=fail表示连续失败,deny=3,表示超过3次登录失败即锁定 。
- 用户锁定期间,无论在输入正确还是错误的密码,都将视为错误密码,并以最后一次登录为锁定起始时间,若果用户解锁后输入密码的第一次依然为错误密码,则再次重新锁定 。
su错误示例:---------------------------------------------------[test1@localhost ~]$ su - root密码:su: 鉴定故障[test1@localhost ~]$ su - root密码:su: 鉴定故障[test1@localhost ~]$ su - root密码:su: 鉴定故障[test1@localhost ~]$ su - root因为 4 失败登录而锁定帐户su用户切换锁定后查看:# pam_tally2 --user test2LoginFailures Latest failureFromtest2406/06/20 02:14:21pts/0
四、ssh远程连接登录__登录失败处理功能策略【服务器安全加固_Linux配置账户锁定策略】上面只是限制了从终端su登陆,如果想限制ssh远程的话,要改的是/etc/pam.d/sshd这个文件,添加的内容跟上面一样!编辑系统/etc/pam.d/sshd文件,注意添加地点在#%PAM-1.0下一行,即第二行添加内容
#%PAM-1.0auth required pam_tally2.so onerr=fail deny=3 unlock_time=600 even_deny_root root_unlock_time=600......................
ssh锁定用户后查看:# pam_tally2 --user test1LoginFailuresLatestfailureFromtest1606/06/2002:18:46192.168.2.2
五、限制用户从tty登录__登录失败处理功能策略编辑系统 /etc/pam.d/login 文件,注意添加地点在#%PAM-1.0的下面,即第二行,添加内容#%PAM-1.0auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=600......................
tty登录锁定后查看:# pam_tally2 --user rootLoginFailures LatestfailureFromroot1706/06/20 02:10:14tty1
六、TELNET用户限制编辑 /etc/pam.d/remote文件,注意添加地点在pam_env.so后面,参数和ssh一致auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=600
七、查看用户失败次数# pam_tally2#查看所有用户登录失败次数(有会显示,没有锁定用户无信息)# pam_tally2 --user root#查看指定登录失败的用户次数
八、手动解锁指定用户# pam_tally2-r -u root#清除失败登录记录,且后面可以输入正确的账户密码登录
推荐阅读
- 12 个优化 Docker 镜像安全性的技巧
- 如何使用 .NET Core 安全地加/解密文件
- 阿里云服务器进黑洞了,高防IP能解决吗?
- Windows 文件审核 – 如何保护服务器上的文件
- 七大常见的企业级安全架构模型
- 多图 服务器的常用配置方法,简单总结
- 4种典型安全漏洞是怎么来的?如何解决
- 2022 年保护 Linux 服务器的 10 种流行开源工具
- Zabbix监控腾讯云服务器CVM
- 基于frp实现将安卓手机变成代理服务器