使用fail2ban+iptables防止sshd被暴力破解

Centos6或Centos7 使用fail2ban防止sshd被暴力破解

        fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!

        工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。

注:重启iptables服务的话,所有DORP将重置。

一、下载安装软件包: 

官方地址:http://www.fail2ban.org

下载地址:http://www.fail2ban.org/wiki/index.php/Downloads

请下载 fail2ban-0.8.14 版本配合CentOS6中的iptables防火墙进行防护

查看解压压缩包中README.md配置说明文件:

环境要求:fail2ban-0.8.14   Python >= 2.4

查看当前python版本命令:python -V 。默认是安装的,yum命令就依赖于Python

解压与安装

tar xvfj  fail2ban-0.8.14.tar.bz2

cd fail2ban-0.8.14

python setup.py install

相关主要文件说明:

/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置

/etc/fail2ban/fail2ban.conf    #定义了fai2ban日志级别、日志位置及sock文件位置

/etc/fail2ban/filter.d       #条件文件夹,内含默认文件。过滤日志关键内容设置

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

二、启动服务设置开机启动

生成服务启动脚本:

[root@xuegod63 fail2ban-0.8.14]# pwd

/root/fail2ban-0.8.14

[root@CentOS7-63 fail2ban-0.8.14]# cp ./files/redhat-initd /etc/rc.d/init.d/fail2ban 

[root@CentOS7-63 fail2ban-0.8.14]# chkconfig --add fail2ban      #开机自动启动,或者使用 /sbin/chkconfig fail2ban on 也可

互动: 你怎么知道要复制这个文件? 一个新的软件包,后期怎么可以知道哪个文件是启动脚本文件?

这就要找服务器启动脚本文件中有什么特点,然后过滤出来对应的文件名。

[root@xuegod63 fail2ban-0.8.14]# grep chkconfig ./* -R --color

./files/redhat-initd:# chkconfig: - 92 08

启动脚本里都包含chkconfig 字段

三、配置参数详解(fail2ban+iptables组合 )

通过一个应用实例来了解用法:应用实例

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

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

主配置文件设定:vi /etc/fail2ban/fail2ban.conf

[Definition] 

loglevel =3 

logtarget = SYSLOG     #我们需要做的就是把这行改成/var/log/fail2ban.log,方便用来记录日志信息 

socket =/var/run/fail2ban/fail2ban.sock

规则文件/etc/fail2ban/jail.conf修改及说明如下:

[DEFAULT]               #全局设置

ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制

bantime  = 3600             #屏蔽时间,单位:秒

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

maxretry = 3                #最大尝试次数

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

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

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, [email protected], [email protected]

om, sendername="Fail2Ban"]#触发报警的收件人

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

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

bantime  = 3600   #单位:秒 禁止用户IP访问主机1小时

findtime  = 300    #单位:秒 在5分钟内内出现规定次数就开始工作

maxretry = 3    #3次密码验证失败

修改完成后如图所示:

image.png

启动服务:无报错说明配置正常,但需要确定状态是否启用

[root@xuegod63 fail2ban-0.8.14]#service fail2ban  start

[root@xuegod63 fail2ban-0.8.14]#service fail2ban  status

查看被限制的IP

[root@CentOS7-63 fail2ban-0.8.14]# fail2ban-client status            #配置好之后我们检测下fail2ban是否工作。

[root@CentOS7-63 fail2ban-0.8.14]# fail2ban-client status ssh-iptables

image.png

解除fail2ban绑定的IP 

方法一:删除iptables对应规则

[root@CentOS7-63 fail2ban-0.8.14]# iptables -L --line-numbers

image.png         

在根据序号解除对应限制

[root@CentOS7-63 fail2ban-0.8.14]#  iptables -D fail2ban-SSH 1

方法二:清除日志进行解除IP封锁

[root@CentOS7-63 fail2ban-0.8.14]# > /var/log/secure  #清日志。 从现在开始

[root@xuegod63 fail2ban]#service  fail2ban restart

Stopping fail2ban:                                         [  OK  ]

Starting fail2ban:                                         [  OK  ]

[root@xuegod63 fail2ban]# iptables -L -n

补充说明:

如果修改ssh默认端口22为222后 ,配置fail2ban来监控sshd服务如何修改?

需要修改两个地方:

1、/etc/fail2ban/jail.conf的 [ssh-iptables]部分

image.png

2、/etc/fail2ban/action.d/iptables.conf  定义的ssh监听的端口号

image.png

修改完成后,重启fail2ban服务即可。

版权声明:
作者:WaterBear
链接:https://l-t.top/477.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>