本文最后更新于 2963 天前,其中的信息可能已经有所发展或是发生改变。
前言
之前有写过两篇 利用 NGINX 和 LuaJIT 构建简单的 WAF 和 Openstar – 基于 OpenResty 的高性能 WAF 拓展,不过两者其实都蛮复杂的,很多情况下像一些管理员的正常操作可能也会被误判,所以今天讲一个简单点的 WAF。
介绍
Nginx Lua Redis 防止CC攻击实现原理:同一个外网IP、同一个网址(ngx.var.request_uri)、同一个客户端(http_user_agent)在某一段时间(CCseconds)内访问某个网址(ngx.var.request_uri)超过指定次数(CCcount),则禁止这个外网IP+同一个客户端(md5(IP+ngx.var.http_user_agent)访问这个网址(ngx.var.request_uri)一段时间(blackseconds)。
设置
Nginx Lua Redis 依赖 Lua,推荐使用 OpenResty,因为这货就是 OpenResty 的作者写的,而且 Nginx 安装 Lua 还麻烦。
教程,假设 OpenResty 安装在 /usr/local/openresty
,Nginx 配置文件在 /usr/local/openresty/nginx/conf/nginx.conf
加载 Redis
cd /usr/local/openresty/lualib/redis
wget https://github.com/openresty/lua-resty-redis/raw/master/lib/resty/redis.lua
在 /usr/local/openresty/nginx/conf/nginx.conf
的 http{}
块中添加(就是 server{}块的上一层):
lua_package_path "/usr/local/openresty/lualib/redis/redis.lua;;";
配置 WAF
/usr/local/openresty/lualib/redis/
https://gist.github.com/ivmm/231e974afba1edcde6776e1e827e238a/raw/4eef07d2c7d42695c1abcba3876c437c4f4cb0b7/waf.lua
如果 Redis 不是 6379 端口或者不在本机记得改一下
加载WAF
在虚拟主机配置文件中加入:
access_by_lua_file "/usr/local/openresty/lualib/redis/waf.lua";
然后重启 Nginx/OpenResty 即可。
感谢博主分享
感谢博主分享,不知道这个可否做前端负载均衡的WAF
可以的,只要是通过本机 nginx 实现的均衡负载就可以
从百度进来的,博客不错哦!
多谢~
我现在也不管了,攻击就攻击了,宕机了再重启。
我服务器管的比较少
厉害了我的哥
厉害了,大佬
推荐 verynginx lua插件。