【实用】防暴力破解服务器ssh登入次数

2022-10-27 19:20:20 浏览数 (1)

感谢广川来稿

近日测试服务器被爆破成功 心情非常的郁闷,

不行,捺不住自己体内的洪荒之力了......哈撒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封禁命令进行封禁

0 人点赞