Centos下fail2ban安装与配置使用

/ 0评 / 0

1.fail2ban简介

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

2.fail2ban的功能和特性

1、支持大量服务。如sshd,apache,qmail,proftpd,sasl等等
2、支持多种动作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等。
3、在logpath选项中支持通配符
4、需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具)
5、需要安装python,iptables,tcp-wrapper,shorewall,Gamin。如果想要发邮件,那必需安装postfix/sendmail

3.fail2ban安装说明

从源网站下载安装:https://github.com/fail2ban/fail2ban

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件

4.修改配置文件

vi /etc/fail2ban/fail2ban.conf

vi jail.conf

5.添加启动脚本

查看状态

验证是否正常运行

解锁特定的IP

同理,封禁特定的IP

 

6.下面是利用fail2ban+Firewalld来防CC攻击和SSH爆破。

准备工作

1、检查Firewalld是否启用

启用Firewalld后会禁止所有端口连接,因此请务必放行常用的端口,以免被阻挡在外,以下是放行SSH端口(22)示例,供参考:

2、安装fail2ban

参考前面安装步骤

3、配置规则

新建jail.local来覆盖fail2ban的一些默认规则:

参数说明:

  1. ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔
  2. bantime:屏蔽时间,单位默认为秒(s),可以用h(小时),-1为永久屏蔽
  3. findtime:时间范围
  4. maxretry:最大次数
  5. banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口

继续修改jail.local这个配置文件,在后面追加如下内容:

参数说明:

  1. [sshd]:名称,可以随便填写
  2. filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
  3. port:对应的端口
  4. action:采取的行动
  5. logpath:需要监视的日志路径

到这一步,我们jail.local的规则看起来可能像下面这样子:

4、防止CC攻击

这里仅以Nginx为例,使用fail2ban来监视nginx日志,匹配短时间内频繁请求的IP,并使用firewalld将其IP屏蔽,达到CC防护的作用。

继续修改jail.local追加如下内容:

上面的配置意思是如果在60s内,同一IP达到20次请求,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。

5、防止Wordpress爆破

如果您经常分析日志会发现有大量机器人在扫描wordpress登录页面wp-login.php,虽然对方可能没成功,但是为了避免万一还是将他IP干掉为好。

继续修改jail.local追加如下内容:

当然,别忘记输入systemctl restart fail2ban重启fail2ban使其生效。

常用命令

总结
fail2ban已经内置很多匹配规则,位于filter.d目录下,包含了常见的SSH/FTP/Nginx/Apache等日志匹配,如果都还无法满足您的需求,您也可以自行新建规则来匹配异常IP。使用fail2ban+Firewalld来阻止恶意IP是行之有效的办法,可极大提高服务器安全。

注意:

centos 6配置与centos7不同主要是为banaction 不一致

同时,对于 iptables 版本为1.4.20之前的(centos6默认为1.4.7),还应用修改/etc/fail2ban/action.d/iptables-common.conf的如下行:

 

发表评论

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