重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章给大家介绍什么是ssh黑洞 pam_tally2,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
10年积累的成都做网站、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有莒县免费网站建设让你可以放心的选择与我们合作。
1、修改sshd本身配置:默认端口 、尝试密码次数、禁止root、客户端连接时间、取消DNS解析
2、系统级别 host allow deny
3、pam级别
4、其他工具辅助
本文介绍pam pam_tally2 模块的用法。
前提:
/etc/ssh/sshd_config 里设置 UsePAM yes ,一般默认允许PAM。
主要功能:
限制用户M次密码错误后锁定该用户N秒
/etc/pam.d 下有很多文件:
/etc/pam.d/login 中配置只在本地文本终端上做限制;
/etc/pam.d/kde 在配置时在kde图形界面调用时限制;
/etc/pam.d/sshd 中配置时在通过ssh连接时做限制;
/etc/pam.d/system-auth 中配置凡是调用 system-auth 文件的服务,都会生效。
预警:
因为pam_tally没有自动解锁的功能,所以,在设置限制时,要多加注意,万一全做了限制,而 root用户又被锁定了,就只能够进单用户模式解锁了,当然,也可以添加crontab任务,达到定时自动解锁的功能,但需要注意的是,如果在/etc /pam.d/system-auth 文件中添加了pam_tally的话,当root被锁定后,crontab任务会失效,所以,最好不要在system-auth 文件中添加pam_tally。
现在只针对sshd :
锁定所有用户(包括root)2次密码错误后锁定2分钟。
修改 /etc/pam.d/sshd 文件,添加2处文件(网上很多文件只添加第一处,误人误己)
1、必须在 #%PAM-1.0 下添加 : auth required pam_tally2.so deny=2 unlock_time=120 even_deny_root root_unlock_time=120 # 添加 1
2、-auth 段下 添加 account required pam_tally2.so # 添加 2
$ cat /etc/pam.d/sshd #%PAM-1.0 auth required pam_tally2.so deny=2 unlock_time=120 even_deny_root root_unlock_time=120 # 添加 1 auth required pam_sepermit.so auth substack password-auth auth include postlogin # Used with polkit to reauthorize users in remote sessions -auth optional pam_reauthorize.so prepare account required pam_tally2.so # 添加 2 account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session include password-auth session include postlogin # Used with polkit to reauthorize users in remote sessions -session optional pam_reauthorize.so prepare
如果不限制root用户,则可以写成 auth required pam_tally2.so deny=M unlock_time=N*60
解释:
配置格式:
pam_tally2.so [file=/path/to/counter] [onerr=[fail|succeed]] [magic_root] [even_deny_root] [deny=n] [lock_time=n] [unlock_time=n] [root_unlock_time=n] [serialize] [audit] [silent] [no_log_info]
参数相关:
1、全局参数
file 用于指定统计次数存放的位置,默认保存在/var/log/tallylog文件中;
onerr 当意外发生时,返加PAM_SUCCESS或pam错误代码,一般该项不进行配置;
audit 如果登录的用户不存在,则将访问信息写入系统日志;
silent 静默模式,不输出任何日志信息;
no_log_info 不打印日志信息通过syslog
上面的五项全局参数,一般在使用中都不需要单独配置。
2、认证选项
deny 指定最大几次认证错误,如果超出此错误,将执行后面的策略。如锁定N秒,如果后面没有其他策略指定时,默认永远锁定,除非手动解锁。
lock_time 一次失败,锁定多长时间,按秒为单位;
unlock_time 指定认证deny次数被锁后,多长时间自动解锁用户;
magic_root 如果用户uid=0(即root账户或相当于root的帐户)在帐户认证时调用该模块发现失败时,不计入统计;
no_lock_time 不使用.fail_locktime项在/var/log/faillog 中记录用户 ---按英文直译不太明白,个人理解即不进行用户锁定;
even_deny_root root用户在认证出错时,一样被锁定(该功能慎用,搞不好就要单用户时解锁了)
root_unlock_time root用户在失败时,锁定多长时间。该选项一般是配合even_deny_root 一起使用的。
命令行管理:
pam_tally2 查看所有用户失败状态
pam_tally2 --user=root 指定查看该用户失败状态 简写 pam_tally2 -u root
pam_tally2 --user=root --reset 解除用户限制 简写 pam_tally2 -r -u root
试验:
请使用终端ssh命令去尝试,xshell貌似不会显示错误,只会一直要求输入。
输入账号密码后才会去验证,不是说锁定了都不用输入密码就直接报错。
➜ ~ ssh root@xxxx.com -p 5000 Password: Account locked due to 5 failed logins Password: Account locked due to 6 failed logins Password: $ pam_tally2 -u root Login Failures Latest failure From root 6 09/14/19 12:46:33 47.93.185.255 # 重置 # root @ web-devops-01 in /home/hlnmroot [12:46:40] $ pam_tally2 -r -u root Login Failures Latest failure From root 6 09/14/19 12:46:33 47.93.185.255 # root @ web-devops-01 in /home/hlnmroot [12:47:28] $ pam_tally2 -u root Login Failures Latest failure From root 0 再登陆 ➜ ~ ssh root@xxxx.com -p 5000 Password: Last failed login: Sat Sep 14 12:46:33 CST 2019 from 47.93.185.255 on ssh:notty There were 5 failed login attempts since the last successful login. Last login: Sat Sep 14 11:59:40 2019 from 47.94.129.79 Welcome to Alibaba Cloud Elastic Compute Service !
关于什么是ssh黑洞 pam_tally2就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。