【感谢广川来稿】
近日测试服务器被爆破成功 心情非常的郁闷,
不行,捺不住自己体内的洪荒之力了......哈撒king~
于是乎写出了这个防范措施。防暴力破解服务器ssh登入次数,账号锁定,IP拉黑,日志查看。
一、Centos 7账号锁定教程
1、修改配置文件
代码语言:javascript复制vi /etc/pam.d/sshd
# 在文末增加以下内容
代码语言:javascript复制Centos 7
auth required pam_tally2.so deny=3 unlock_time=60 even_deny_root root_unlock_time=60
文件参数说明:
代码语言:javascript复制even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
保存退出
解除锁定方法
代码语言:javascript复制在服务器端以root用户登录
执行命令:
pam_tally2 -u root -r
或者
pam_tally2 --user 用户名 --reset
清空指定用户的错误登录次数
二、Centos7和Centos8 设置ssh端口、登入次数
修改SSH的端口号
代码语言:javascript复制vi /etc/ssh/sshd_config
Port 22 修改为 5795 // 就是把端口22改为5795,去掉前面的#号
限制登入次数
代码语言:javascript复制vi /etc/ssh/sshd_config
MaxAuthTries=6 修改为 MaxAuthTries=3 // 就是把登入6次改为登入3次就断开 ,去掉前面的#号
三、Centos8账号锁定教程
pam_tally2模块在centos8后已淘汰掉,centos8用pam_faillock 模块替换
1、修改配置文件
代码语言:javascript复制vi /etc/pam.d/system-auth
添加如下代码到指定行数,必须按顺序添加
auth required pam_faillock.so even_deny_root preauth silent audit deny=3 unlock_time=300 //even_deny_root这个参数是代表root用户数错3次也会被锁定
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so even_deny_root authfail audit deny=3 unlock_time=300 //even_deny_root这个参数是代表root用户数错3次也会被锁定
account required pam_faillock.so
代码语言:javascript复制vi /etc/pam.d/password-auth
添加如下代码到指定行数,必须按顺序添加
auth required pam_faillock.so even_deny_root preauth silent audit deny=3 unlock_time=300 //even_deny_root这个参数是代表root用户数错3次也会被锁定
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so even_deny_root authfail audit deny=3 unlock_time=300 //even_deny_root这个参数是代表root用户数错3次也会被锁定
account required pam_faillock.so
查看所有用户的尝试失败登录次数
代码语言:javascript复制faillock
主要看faillock命令,显示的valid值,v表示有效,i表示无效。
只查看admin用户
代码语言:javascript复制faillock --user admin
解锁一个用户账户
代码语言:javascript复制faillock --user 用户名 --reset
解锁所有用户
代码语言:javascript复制 faillock --reset
四、防火墙拉黑攻击IP地址
查看登入成功的用户日志:last -f /var/run/utmp 或者 last
查看登入失败的用户日志:last -f /var/log/btmp 或者 lastb
IP 封禁 (这个是我们平时用得最多的)
代码语言:javascript复制# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.222' reject" 单个IP
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.0/24' reject" IP段
# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.2 port port=80 protocol=tcp accept" 单个IP的某个端口
这个是我们用得最多的。封一个IP,和一个端口 reject 拒绝 accept 允许
重新载入以生效
代码语言:javascript复制firewall-cmd --reload
查看封禁IP
代码语言:javascript复制firewall-cmd --list-rich-rules
使用 last -f /var/log/btmp 查看登入失败的IP 拦截效果,拦截了20w 的密码爆破
查到这些IP后使用IP封禁命令进行封禁