Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rwx------/nginx_waf
使用nginx和lua构建的waf
https://github.com/rwx------/nginx_waf
Last synced: 21 days ago
JSON representation
使用nginx和lua构建的waf
- Host: GitHub
- URL: https://github.com/rwx------/nginx_waf
- Owner: rwx------
- Created: 2017-04-13T08:07:20.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-05-06T10:02:56.000Z (over 7 years ago)
- Last Synced: 2024-08-05T17:29:33.400Z (4 months ago)
- Language: Lua
- Homepage:
- Size: 41 KB
- Stars: 12
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-hacking-lists - rwx------/nginx_waf - 使用nginx和lua构建的waf (Lua)
README
# nginx_waf
nginx\_waf是基于ngx\_lua,以lua脚本语言开发的防cc攻击软件。继承了nginx高并发,高性能的特点,可以以非常小的性能损耗来防范大规模的cc攻击。
下面介绍nginx\_waf防cc的一些特性:
1. 限制单个IP或IP段或UA在一定时间内的请求次数
2. 支持向访客发送带有验证码的页面,来进一步识别,以免误伤
3. 支持直接断开恶意访客的连接
4. 支持白名单/黑名单功能## 部署nginx_waf
### 安装ngx_lua按照ngx_lua官网手动安装
### 安装nginx_waf
假设我们把nginx_waf安装到/data/www/waf/,当然你可以选择安装在任意目录。
```
cd /data/www
git clone https://github.com/rwx------/nginx_waf.git
mv nginx_waf waf
```### 生成验证码图片
为了支持验证码识别用户,我们需要先生成验证码图片。生成验证码图片需要系统安装有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;
```### todo
- 优化: iptonumber的计算,在init就进行预加载和计算
- 新增: redis支持,多机器共享黑/白/灰名单
- ~~优化: 无ua情况下的处理~~
- ~~优化: 关于封禁时以ip还是ip+ua的形式的选择开关~~
- ~~新增: log only 模式,不真正进行封禁操作,只记录日志。~~### 感谢
该产品参考并大量借鉴了https://github.com/love_shell/ngx_lua_waf 和 https://github.com/centos-bz/HttpGuard ,感谢他们的工作.
相较于这两个模块
增加了ip段的黑名单白名单精确控制。
精简了部分功能。
可进行ua过滤