Fail2ban 安装配置

Fail2ban安装和配置

安装前提

为了使Fail2ban与iptables联动,需禁用自带的firewalld服务,同时安装iptables服务

关于Fail2ban

  • 监视日志,根据日志进行正则匹配,然后执行相应的匹配动作(一般都是调用系统防火墙进行屏蔽)
  • 使用Fail2ban 配合iptables 实现动态防火墙

安装

wget https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.8.14

tar -xf 0.8.14.tar.gz
cd fail2ban-0.8.14
python setup.py install
    
# 手动生成系统启动脚本
cp files/redhat-initd /etc/init.d/fail2ban
    
# 添加系统自启动
chkconfig --add fail2ban
   
#复制,复制文件后可以在jail.local中进行修改,并且jail.local中相同配置会覆盖jail.conf 中的配置
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local



jail.conf和jail.local的区别

配置文件目录区别

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

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

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

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

配置举例

配置过来文件中特定的url接口

[root@iZuf660s6hZ filter.d]# pwd
/etc/fail2ban/filter.d
[root@iZuf660s6hZ filter.d]# cat ipofinancing.conf 
[Definition]
failregex = .*remote_addr=<HOST>.*create.*ipofinancing.*$
ignoreregex =
[root@iZuf6Z filter.d]# cat ipofinancing.conf 
[Definition]
failregex = .*remote_addr=<HOST>.*create.*ipofinancing.*$
ignoreregex =

jail.local 中配置

[ipofinancing]
enabled = true
port = http,https
filter = ipofinancing
logpath = /data/logs/nginx/qian.log*
maxretry = 3
findtime = 10
bantime = 60
action = iptables-multiport[name=HTTP, port="http,https", protocol=tcp]
ignoreip = xxxxx

#解释: 10s内最大允许访问3次,否则则被禁止登陆60s;返回503

参数介绍

maxretry: 时间内的最大尝试次数

findtime: 设置允许访问的时间限制

bantime:屏蔽时间(单位秒)

常用命令

#测试正则有效

fail2ban-regex /path/to/nginx/access.log /etc/fail2ban/filter.d/nginx-dir-scan.conf

systemctl start fail2ban

systemctl stop fail2ban

systemctl enable fail2ban

查看被ban的IP
fail2ban-client status [name]

添加白名单
fail2ban-client set ssh-iptables addignoreip IP地址 

删除白名单
fail2ban-client set ssh-iptables delignoreip IP地址

查看被禁IP
iptables -L -n




上一篇:Crowdsec:一款面向Linux的现代化协作式大型多人防火墙


下一篇:ssh