首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维教程系统服务使用fail2ban解决暴力破解问题

使用fail2ban解决暴力破解问题

本测试需要的环境:

1)系统: centos7

2) python 版本大于2.4

具体操作步骤:

1.编译安装fail2ban需要从官网下载包,解压安装即可

fail2ban官网下载包链接

2.使用yum安装fail2ban

[root@zmedu63 ~]# yum -y install epel-release

[root@zmedu63 ~]# yum -y install fail2ban

3.相关主要文件说明

/etc/fail2ban/action.d           

#动作文件夹,内含默认文件。iptables以及mail等动作配置。

/etc/fail2ban/fail2ban.conf    

#定义了fai2ban日志级别、日志位置及sock文件位置。

/etc/fail2ban/filter.d               

#条件文件夹,内含默认文件。过滤日志关键内容设置。

/etc/fail2ban/jail.conf          

#主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值。

4.fail2ban测试

一般情况下对于10分钟内120次单个IP对服务器密码登录验证失败,我们就认为是机器所谓,也就是暴力破解。

但为了测试方便,我们按照下面的测试条件来进行测试:

设置条件:SSH远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。

因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用SSHD服务的日志分析,指定动作阀值即可。

实例文件/etc/fail2ban/jail.conf及说明如下:

[root@zmedu63 ~]# vim /etc/fail2ban/jail.conf

[DEFAULT]               

#全局设置。

ignoreip = 127.0.0.1/8       

#忽略的IP列表,不受设置限制。

bantime  = 600             

#屏蔽时间,单位:秒。

findtime  = 600             

#这个时间段内超过规定次数会被ban掉。

maxretry = 60                

#最大尝试次数。

backend = auto            

#日志修改检测机制(gamin、polling和auto这三种)。

[sshd]               

#单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。

port    = ssh

logpath = %(sshd_log)s

backend = %(sshd_backend)s

#加入如下内容

enabled  = true             

#是否激活此项(true/false)修改成 true。

filter = sshd                   

#过滤规则filter的名字,对应filter.d目录下的sshd.conf。

action = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件。

sendmail-whois[name=SSH, 

dest=you@example.com, 

sender=fail2ban@example.com, sendername=”Fail2Ban”]                    

#触发报警的收件人。

logpath = /var/log/secure          

#检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath = /var/log/sshd.log 。

#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下。

bantime = 3600   

#禁止用户IP访问主机1小时。

findtime = 300    

#在5分钟内内出现规定次数就开始工作。

maxretry = 3       

#3次密码验证失败。

5.启动服务

[root@zmedu63 ~]# systemctl start fail2ban           

#启动fail2ban服务。

[root@zmedu63 ~]# systemctl enable fail2ban  

#设置开机自动启动。

6.测试

[root@zmedu63 ~]# > /var/log/secure            

#清空日志内容。

[root@zmedu63 fail2ban]# systemctl restart fail2ban                    

#重启fail2ban服务。

[root@zmedu63 ~]# iptables -L –n    

#在fail2ban服务启动后,iptables会多生成一个规则链

7.测试:故意输入错误密码3次,再进行登录时,会拒绝登录。

[root@zmedu64 ~]# ssh 192.168.1.63

root@192.168.1.63’s password:                

#故意输入错误密码。

Permission denied, please try again.

root@192.168.1.63’s password:                

#故意输入错误密码。

Permission denied, please try again.

root@192.168.1.63’s password:                

#故意输入错误密码。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@zmedu64 ~]# ssh 192.168.1.63

ssh: connect to host 192.168.1.63 port 22: Connection refused

[root@zmedu63 ~]#  iptables -L |tail -4           

#可以查看到192.168.1.64该IP被iptables禁止所有访问。

Chain fail2ban-SSH (1 references)

target     prot opt source               destination

REJECT      all  —  192.168.1.64        anywhere

RETURN     all  —  anywhere           anywhere

[root@zmedu63 ~]# fail2ban-client status             

 #配置好之后我们检测下fail2ban是否工作。

Status

|- Number of jail:    1

`- Jail list:        sshd              

#具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。

[root@zmedu63 ~]# fail2ban-client status sshd

Status for the jail: sshd

|- Filter

|  |- Currently failed:    0

|  |- Total failed:    0

|  `- Journal matches:   _SYSTEMD_UNIT=sshd.service + _COMM=sshd

`- Actions

|- Currently banned: 1

|- Total banned: 1

`- Banned IP list:       192.168.1.64

8.查看fail2ban的日志能够看到相关的信息。

[root@zmedu63 ~]# tail /var/log/fail2ban.log

2019-4-07 16:11:01,476 fail2ban.actions        [27932]: NOTICE  [sshd] Ban 192.168.1.64

需要注意的2点:

(1)另外如果后期需要把iptables清空后或iptables重启后,也需要把fail2ban重启一下。

(2)如果修改ssh默认端口22为2015后,配置fail2ban来监控SSHD服务需要修改配置文件

例:

[root@zmedu63 ~]# vim /etc/ssh/sshd_config

改 17 #Port 22

为 17 Port 2015

[root@zmedu63 ~]# systemctl restart sshd

[root@zmedu63 ~]# vim /etc/fail2ban/jail.conf

#修改iptables动作中的端口号,默认为SSH,如图 1-11 所示。

改:port=ssh

为 port=2015

修改fail2ban监听SSH端口

重启服务即可

[root@zmedu63 ~]# systemctl restart fail2ban

本文链接:http://www.geekyunwei.com/799.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部