fail2ban 防止暴力破

本文介绍了如何在CentOS7系统上安装和配置Fail2ban来防范SSH服务的暴力破解。通过设置Fail2ban,当某个IP在5分钟内连续3次尝试登录失败,系统将自动禁止该IP访问SSH服务1小时。详细步骤包括安装Fail2ban、配置jail.conf文件、启动服务以及进行测试。同时,文章也提醒了在iptables重启或清空前需要重启Fail2ban,以及如何调整配置以监控更改后的SSH端口。
部署运行你感兴趣的模型镜像

本测试需要的环境:

1)系统: centos7

2) python 版本大于2.4

具体操作步骤:

1. 编译安装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

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 配置 Fail2Ban 的过程 在 Kali Linux 上配置 Fail2Ban 来增强 SSH 登录的安全性是一项重要的安全措施。以下是详细的配置方法: #### 更新软件包并安装 Fail2Ban 为了确保系统的安全性,建议先更新现有的软件包列表,并安装最新版本的 Fail2Ban。 ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install fail2ban -y ``` #### 启用服务 安装完成后,启用 Fail2Ban 以便开机自启动。 ```bash sudo systemctl enable fail2ban ``` #### 修改配置文件 Fail2Ban 主要通过 `/etc/fail2ban/jail.local` 文件来定制行为规则。创建或编辑此文件,在其中加入如下设置以适应大多数场景下的需求[^1]: ```ini [DEFAULT] bantime = 43200 # 封禁时间设为1小时 findtime = 600 # 时间窗口设定为10分钟内尝试次数过多则触发封禁 maxretry = 1 # 允许的最大失败登录次数为一次 banaction = iptables-multiport # 使用iptables作为防火墙动作执行者 [sshd] enabled = true # 开启SSH保护功能 ``` 上述配置意味着任何IP地址如果在一小时内连续两次未能成功登录,则会被自动阻止访问服务器长达一个小时的时间。 #### 检查配置文件权限 确认 Fail2Ban 的配置目录及其子项具有适当的读写权限,特别是 `action.d` 下的相关脚本应具备可执行属性[^3]。 ```bash ls -l /etc/fail2ban/action.d/ chmod +x /etc/fail2ban/action.d/*.conf ``` #### 重启服务使更改生效 完成所有修改之后,记得重新加载 Fail2Ban 让新的策略立即起效。 ```bash sudo systemctl restart fail2ban ``` #### 验证状态 最后可以查看当前运行状况以及特定服务(如SSHD)的状态信息。 ```bash fail2ban-client status fail2ban-client status sshd ``` 以上就是在 Kali Linux 中配置 Fail2Ban 的基本步骤,这有助于防止暴力解攻击和其他潜在威胁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值