HttpGuard — 基于Web的高性能CC攻击防火墙

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

  • 限制访客在一定时间内的请求次数
  • 向访客发送302转向响应头来识别是否是恶意用户,并阻止其再次访问
  • 向访客发送带有跳转功能的js代码来识别是否是恶意用户,并阻止其再次访问
  • 支持向访客发送带有验证码的页面,来进一步识别,以免误伤
  • 支持直接断开恶意访客的连接
  • 支持结合iptables来阻止恶意访客再次连接
  • 支持白名单功能
  • 支持根据统计特定端口的连接数来自动开启或关闭防cc模式

github项目地址:https://github.com/centos-bz/HttpGuard
联系作者: admin#centos.bz

下载地址:https://github.com/centos-bz/http-guard

安装方法
代码下载回来后,执行install.sh脚本开始安装。

使用方法
复制conf目录下的lua文件到/usr/local/nginx/conf下,在nginx.conf配置文件中的http代码段加入如下代码:

lua_shared_dict http_guard 10m;
init_by_lua_file 'conf/init.lua';
header_filter_by_lua_file 'conf/send_cookie.lua';
access_by_lua_file 'conf/http_guard.lua';

注:
1、一些初始参数可以在init.lua文件修改
2、修改lua文件后,需要重载配置文件,如/usr/local/nginx/sbin/nginx -s reload
3、此http-guard已经包含nginx,不需要再安装新的nginx
4、nginx会安装在/usr/local/nginx位置
5、如果你使用了CDN,可在config.lua设置realip header为cdn传过来的包含客户ip的请求头,否则拦截的IP会是你的CND地址,导致失效。