fail2ban自定义log和filter

时间:5年前   阅读:5712

站点上不时存在大量的恶意请求,最开始的做法是跑脚本把IP加入iptables黑名单。慢慢发现这个方案的的弊端是IP将被永久封杀,处于动态分配IP的用户有可能被误杀,并且一直无法访问。

解决的方案是添加时效性:恶意IP封杀一段时间后自动解除。要实现这个方案,需要一个守护进程,收集客户端提交的IP和时间,将IP拉入黑名单一段时间后,又自动移除。为了防止系统重启失效,一些数据还应该被持久化到硬盘上。

实现这样一个c/s模式的防护脚本不难,但已有现成方案,无需自己实现:fail2ban。

以下是利用fail2ban的解决方案:

  1. 应用程序将log写入到指定文件,最重要的两项是时间和IP,格式任意。例如: 2016-6-20 12:32:12 114.114.114.114 too many connections;

  2. 添加fail2ban filter。例如:

    # APP guide
    [Definition]
    failregex = ^.* 
       
         .*$$
    ignoreregex = 
    
       

    过滤器主要是匹配失败的记录,用failregex表达式进行正则匹配。 是fail2ban内置的变量,代表主机IP。

  3. 启用规则。编辑 /etc/fail2ban/jail.conf。添加类似下面的行数:

    [app guide]
    filter = app-guide
    enabled = true
    logpath = /path/to/log
    maxretry = 3
    findtime = 300
    bantime = 7200
    return type = DROP
    
  4. 重启fail2ban:service fail2ban restart

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

上一篇:怎么用最低的价格买入期权合约?

下一篇:telnet命令Win7下如何使用

网友评论

请先 登录 再评论,若不是会员请先 注册