HttpGuard介绍

有运维或运维开发方面的需求,可以联系博主QQ 452336092或Email:admin#centos.bz(收费)

文章目录
[隐藏]

HttpGuard是基于openresty,以lua脚本语言开发的防cc攻击软件。而openresty是集成了高性能web服务器Nginx,以及一系列的Nginx模块,这其中最重要的,也是我们主要用到的nginx lua模块。HttpGuard基于nginx lua开发,继承了nginx高并发,高性能的特点,可以以非常小的性能损耗来防范大规模的cc攻击。

术语说明和原理

术语

  • 匹配器: 用来匹配用户的请求,可以匹配用户IP,Host,req_uri(带参数),uri(不带参数),user_agent和referer。一个匹配器可以有多个匹配项,添加多个匹配项时,此匹配器所有的匹配项都满足时,这个匹配器才为真。
  • 过滤器: 用来过滤用户请求,过滤器类型有req_rate(限制请求速率),js_jump(返回js跳转代码验证),temp_redirect(返回302跳转验证),cookie(返回cookie验证),captcha(返回验证码验证),slide(返回滑动条验证)。
  • 动作: 当请求无法通过过滤器时,执行相应的动作。动作包括iptables(使用iptables封锁请求),captcha(返回验证码验证,如果多次验证失败,则使用iptables封锁),slide(返回滑动条验证,当多次验证失败,则使用iptables封锁),exit_code(返回如403状态码)。
  • 规则组: 包含多个规则,按顺序应用规则,当请求应用了一个规则后,不再应用余下的规则。
  • 规则: 包含匹配器,过滤器和动作。

原理

用户预置了多个规则组,其中一个规则组设置为默认。规则组有多条规则。
执行流程
– httpguard首先查看用户是否有设置rule_name变量,如果有,则使用此变量指向的规则组名称,否则使用默认的规则组
– 遍历此规则组的规则。取出一条规则,使用此规则中的匹配器匹配请求,如果匹配失败,继续取下一条规则
– 如果匹配器匹配成功,检查此IP是否在黑名单,如果在,执行此规则中的动作。否则,使用此规则的过滤器验证一次请求,当验证失败达到一定次数时,把此IP加入到黑名单。

应用场景

静态资源与动态资源分别设置不同的请求速率限制

  1. 添加一个名称为static_file_matcher的匹配器,并为此匹配器添加一个匹配项,用来匹配静态资源,如:
  2. 添加一个名称为match_all的匹配器,不添加匹配项,如:
  3. 分别添加过滤器req_rate_filter_50和req_rate_filter_100,用来过滤动态请求和静态请求。
  4. 找到默认的规则组common,添加两条规则,一条匹配静态资源请求,另一个匹配其余的请求,如:

安装和演示

安装:https://www.centos.bz/2017/06/httpguard-installation/
演示:http://httpguard-demo.centos.bz/guard/login.html(admin/httpguard)

更多httpguard文档

https://www.centos.bz/tag/httpguard/

转载请保留原文链接:Linux运维日志 » HttpGuard介绍

打赏

如果此文对你有所帮助,请随意打赏鼓励作者^_^

评论 9

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. cesc.w很高兴看到您的博客,但只找到了最新提问的RSS,请问博客内容如何订阅回复
    • 朱 茂海@cesc.w https://www.centos.bz/feed/回复
  2. 哇哦请问下这个模块配置了验证码,有时候提交会出错 直接提交到图片页面然后导致404 xxx.xx/verify-captcha.jpg 就404了回复
  3. 快播电影一直没更新了?回复
  4. 面朝大海一直关注您的博客!!!! :razz:回复
  5. aunox看到这个HttpGuard非常感谢,不过我们网站在前面使用了CDN,在网站上使用时拦截的IP都会是CDN的IP,导致功能失效了?回复
    • 朱 茂海cdn会把客户端的ip通过请求头传给你们后端服务器的吧,可以在config.lua设置realip header为cdn传过来的包含客户ip的请求头。回复
  6. Bandwagonhost这个我在用,非常感谢。 期待增加白名单功能,最好白名单支持IP/掩码位格式。 期待作者的更新。回复
  7. hostus这个可以直接用于所有的环境吗?比如非EZHTTP网站环境回复