nginx+lua实现灰度发布/waf防火墙

nginx+lua 实现灰度发布 waf防火墙

课程链接:【课程】Nginx 与 Lua 实现灰度发布与 WAF 防火墙(完)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

参考博客

Nginx基础 - Nginx+Lua实现灰度发布与WAF - 暗香流行风缥缈 - 博客园

Nginx+Lua实现WAF引用防火墙_李在奋斗的博客-CSDN博客

1-nginx加载lua环境

安装luajit解释器

重新编译nginx #或者选择openrestry

luajit 环境

模块:ngx_devel_kit 和lua-nginx-module

#安装lua
yum install lua #下载最新luajit和编译安装nginx模块ngx_devel_kit 和lua-nginx-module
#给luajit库加上软连接 #加载lua的lib库到/etc/ld.so.conf #$?判断编译安装是否成功

nginx配置文件

注意location里写的

default_type text/html;

content_by_lua_block{

}

nginx+lua实现灰度发布/waf防火墙

部署春哥的开源项目openresty

简单

nginx+lua实现灰度发布/waf防火墙

灰度发布架构

nginx+lua实现灰度发布/waf防火墙

3台服务器

①nginx+lua+memcache

②java-生产

③java-测试

nginx+lua实现灰度发布/waf防火墙

lua语法

nginx+lua实现灰度发布/waf防火墙

lua功能

nginx+lua实现灰度发布/waf防火墙

lua注释语法

数字0和空字符串 = true
布尔类型只有nil和false 脚本以.lua结尾 ~=是不对等于
字符串拼接 .. 为+
io对象可以根据用户输入读取,输入,类似read

灰度发布

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

部署tomcat,java环境

创建jsp文件,当访问tomcat时返回html页面。

(11 封私信 / 67 条消息) 什么是JSP技术? - 知乎

nginx+lua实现灰度发布/waf防火墙

配置memcached

除了安装memcache,还需要配置memcached支持lua

nginx+lua实现灰度发布/waf防火墙

配置负载均衡到tomcat-test/prod

nginx配置include conf.d/*.conf;

配置在nginx/conf.d/lua.conf中

#必须在http层
lua_package_path "/etc/nginx/lua/memcached.lua";
upstream java_prod {
server 192.168.56.12:8080;
}
upstream java_test {
server 192.168.56.13:9090;
}
server {
listen 80;
server_name 47.104.250.169;
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello ,lua scripts")';
}
location /myip {
default_type 'text/plain';
content_by_lua '
clientIP = ngx.req.get_headers()["x_forwarded_for"]
ngx.say("Forwarded_IP:",clientIP)
if clientIP == nli then
clientIP = ngx.var.remote_addr
ngx.say("Remote_IP:",clientIP)
end
';
}
location / {
default_type 'text/plain';
content_by_lua_file /etc/nginx/lua/dep.lua;
}
location @java_prod {
proxy_pass http://java_prod;
include proxy_params;
}
location @java_test {
proxy_pass http://java_test;
include proxy_params;
}
} #这是在/etc/nginx/目录下
//nginx反向代理理tomcat,必须配置头部信息否则返回400错误
[root@nginx-lua conf.d]# cat ../proxy_params
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;

#编写nginx调用灰度发布lua脚本

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

往memcache写入ip

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现waf 应用防火墙

nginx+lua实现灰度发布/waf防火墙

防护代码

nginx+lua实现灰度发布/waf防火墙

攻击手段

nginx+lua实现灰度发布/waf防火墙

在这里插入图片描述

解决办法

nginx+lua实现灰度发布/waf防火墙

安装lnmp

创建一张info表写入账户密码信息,测试

网站登陆页面

nginx+lua实现灰度发布/waf防火墙

提交表单时,php连接数据库

nginx+lua实现灰度发布/waf防火墙

sql登陆注入

” 空格 or 1=1 #

号把后面注释掉,1=1为true,or条件判断为真

nginx+lua实现灰度发布/waf防火墙

lua解决的安全问题

nginx+lua实现灰度发布/waf防火墙

部署waf防护代码

nginx+lua实现灰度发布/waf防火墙

如果服务器没有git命令,使用yum安装

git clone==下载代码

配置config.lua 中的waf规则目录

nginx+lua实现灰度发布/waf防火墙

修改规则目录下post文件

nginx+lua实现灰度发布/waf防火墙

html=就是阻止访问后的访问页面

cc貌似是针对域名,ddos是针对ip

ccrate=100/60 #一个域名,60秒最多访问100次,超过将封掉

nginx+lua实现灰度发布/waf防火墙

nginx+lua实现灰度发布/waf防火墙

上一篇:Nginx + Lua 搭建网站WAF防火墙


下一篇:使用Nginx+Lua实现自定义WAF