强化服务器安全!CentOS 7如何使用fail2ban防范SSH暴力破解攻击?

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在这里插入图片描述

前言

本文主要讲解centos7操作系统下如何使用fail2ban防范SSH暴力破解。

个人主页我是沐风晓月
个人简介大家好我是沐风晓月阿里云社区博客专家
座右铭 先努力成长自己再帮助更多的人 一起加油进步
欢迎大家这里是CSDN我总结知识的地方喜欢的话请三连有问题请私信

文章目录

一. 实验环境

本测试需要的环境

  • 系统 centos7.9

  • python 版本大于2.4

  • IP: 192.168.1.163

  • hostname: mufenggrow163

二. 实验思路及步骤

本次使用用的工具是 fail2ban这一款利用Python开发 的工具它使用定义规则和过滤器来监视服务器上正在运行的服务日志识别和封禁恶意的用户IP地址从而防止他们继续进行攻击。

最初设计用于保护SSH服务但现在已经扩展支持了其他服务如FTP、HTTP、SMTP、POP3等。它可以在IP列表中封锁或者释放IP地址支持系统日志、TCP Wrappers等多种方式存储禁止访问列表。

Fail2Ban还具有有用的其他功能比如电子邮件通知可以向管理员发送关于禁止IP列表的报告允许黑名单或白名单IP地址、进行自定义禁止时间以及支持客户端展示自定义页面等。

实验步骤

  1. 配置好实验环境上文已配好centos7的实验环境)
  2. 安装epel工具
  3. yum安装fail2ban
  4. 对配置文件进行设置
  5. 远程访问输错密码测试

三. 实验过程

3.1 用yum 安装 fail2ban

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

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

3.2 相关的配置文件介绍

/etc/fail2ban/action.d

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

/etc/fail2ban/fail2ban.conf

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

/etc/fail2ban/filter.d

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

/etc/fail2ban/jail.conf

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

3.3 修改配置文件

本次我们想要实现的是SSH远程登录5分钟内3次密码验证失败禁止用户IP访问主机1小时1小时该限制自动解除用户可重新登录。

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

[root@mufenggrow163 ~]# 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次密码验证失败。

3.4 重启服务

[root@mufenggrow163 ~]# systemctl start fail2ban

#启动fail2ban服务。

[root@mufenggrow163 ~]# systemctl enable fail2ban

#设置开机自动启动。

3.5 测试

  • 清空 日志
[root@mufenggrow163 ~]# > /var/log/secure  
  • 接下来故意输错三次密码
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).
  • 查看是否被屏蔽
#可以查看到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

  • 使用fail2ban-client命令查看
[root@mufenggrow163 ~]# fail2ban-client status             

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

Status

|- Number of jail:    1

`- Jail list:        sshd              

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

[root@mufenggrow163 ~]# 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


  • 查看fail2ban的日志
[root@mufenggrow163 ~]# fail2ban-client status             

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

Status

|- Number of jail:    1

`- Jail list:        sshd              

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

[root@mufenggrow163 ~]# 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

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

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

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

四. 总结

问题 如果你的同事一不小心输错三次密码被封IP如何解决
清空日志重启fail2ban
或者直接从黑名单中移除。

 fail2ban-client set ssh-iptables  unbanip 192.168.1.22

好啦这就是今天要分享给大家的全部内容了我们下期再见
本文由沐风晓月原创首发于CSDN博客 博客主页mufeng.blog.csdn.net
日拱一卒无尽有功不唐捐终入海
喜欢的话记得点赞收藏哦

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: centos服务器