零玖博客

HttpGuard(专注防 cc 攻击, 更强大的防御能力)

什么是 HttpGuard


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

开始部署 HttpGuard

一、安装 openresty 或者 nginx lua


在安装 HttpGuard 之前,需要先安装 openresty 或者 nginx lua,有三种方法:

二、安装 HttpGuard

假设我们把 HttpGuard 安装到/data/www/waf/,当然你可以选择安装在任意目录,nginx 运行的用户为 www 。
cd /data/www
wget --no-check-certificate https://github.com/centos-bz/HttpGuard/archive/master.zip
unzip master.zip
mv HttpGuard-master waf
chown www waf/logs

三、生成验证码图片 (可选)


为了支持验证码识别用户,我们需要先生成验证码图片。生成验证码图片需要系统安装有 php,以及 php-gd 模块。

以命令行执行 getImg.php 文件

cd /data/www/waf/captcha/
/usr/local/php/bin/php getImg.php

大概要生成一万个图片,可能需要花几分钟的时间。


四、修改 nginx.conf 配置文件

正文内容

向 http 区块输入如下代码:

lua_package_path "/data/www/waf/?.lua";
lua_shared_dict guard_dict 100m;
lua_shared_dict dict_captcha 70m;
init_by_lua_file '/data/www/waf/init.lua';
access_by_lua_file '/data/www/waf/runtime.lua';
lua_max_running_timers 1;

记得要修改相关的路径。

五、配置 HttpGuard


HttpGuard 全部的配置项都在 config.lua 文件中, 请根据以下文章修改配置文件。

https://vv1234.cn/archives/245.html

退出移动版