centos7 pam mysql.so,centos7 ssh安全之三——ssh黑洞 pam_tally2

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 requiredpam_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 !

参考:

http://man7.org/linux/man-pages/man8/pam_tally2.8.html

https://www.tecmint.com/use-pam_tally2-to-lock-and-unlock-ssh-failed-login-attempts/

http://www.94ip.com/post/816.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值