东莞营销型网站建设找火速,网络规划设计师难考吗,海南映客交友软件,做网站会员金字塔系统一、基本概念
什么是waf#xff1f;
Web应用防火墙#xff08;waf#xff09;是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品#xff0c;WAF是一种工作在应用层的、通过特定的安全策略来专门为Web应用提供安全防护的产品。
什么是ngx_lua_…一、基本概念
什么是waf
Web应用防火墙waf是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品WAF是一种工作在应用层的、通过特定的安全策略来专门为Web应用提供安全防护的产品。
什么是ngx_lua_waf
ngx_lua_waf是一个基于ngx_lua的web应用防火墙Nginx支持开启waf模块主要功能有 支持IP白名单和黑名单功能直接将黑名单的IP访问拒绝新增cdip功能支持ip段 支持URL白名单将不需要过滤的URL进行定义 支持User-Agent的过滤匹配自定义规则中的条目然后进行处理 支持CC攻击防护单个URL指定时间的访问次数超过设定值新增针对不同域名 支持Cookie过滤匹配自定义规则中的条目然后进行处理 支持URL过滤匹配自定义规则中的条目如果用户请求的URL包含这些 支持URL参数过滤原理同上 支持日志记录将所有拒绝的操作记录到日志中去 新增支持拉黑缓存默认600秒 二、为啥要做NGWAF
原有网络架构中硬件waf是侧挂在防火墙上,在现网防护过程中请求中https解析,攻击防护等操作会经常出现大量的占用cpu的使用情况,导致waf的cpu利用率居高不下,严重时甚至会影响正常业务的使用。
Nginx加载waf插件后客户端流量先经防火墙再到LVS四层负载均衡分发到应用层Nginx上 然后将请求流量先传到WAFWAF通过检测后再允许Web节点的响应返回 。Nginx还可根据地址端口配置分发到不同的WAF上不同Nginx流量也可以分发到同一个WAF。如果WAF发生故障超时后Nginx直接响应不会造成业务中断 。
三、安装加载ngx_lua_waf模块
1、安装系统依赖软件包
yum -y install gcc gcc-c autoconf automake make unzip yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
2、下载ng支持模块
安装过程中需要的LuaJIT、lua-nginx-module和ngx_dev_kit模块、以及nginx和waf模块放在资源中可下载离线安装。
https://download.csdn.net/download/vincent0920/88752133
3、将下载的离线包拷贝至/usr/local/src目录中
4、安装LuaJIT2.0 LuaJIT是Lua的即时编译器简单来说LuaJIT是一个高效的Lua虚拟机。 # 进入目录 cd /usr/local/src/ # 解压 tar xf LuaJIT-2.0.5.tar.gz cd LuaJIT-2.0.5 # 编译 make # 安装 make install PREFIX/usr/local/lj2 # 建立软连接 ln -s /usr/local/lj2/lib/libluajit-5.1.so.2 /lib64/ # 添加环境变量 export LUAJIT_LIB/usr/local/lj2/lib/ export LUAJIT_INC/usr/local/lj2/include/luajit-2.0/ 5、安装ngx_devel_kit kit模块是一个拓展nginx服务器核心功能的模块第三方模块开发可以基于它来快速实现。 # 进入目录 cd /user/local/src/ # 解压 unzip xf ngx_devel_kit.gz 6、安装lua-nginx-module ngx_lua_module 是一个nginx http模块它把 lua 解析器内嵌到 nginx用来解析并执行lua 语言编写的网页后台脚本。 安装 # 进入目录 cd /user/local/src/ # 解压 unzip lua-nginx-module.gz 7、 安装Nginx # 进入目录 cd /user/local/src/ # 解压 tar xf nginx-1.21.0.tar.gz # 进入nginx目录 cd nginx-1.21.0 # 编译 ./configure --prefix/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-pcre --add-module/usr/local/src/lua-nginx-module --add-module/usr/local/src/ngx_devel_kit --with-stream # 安装 make make install # 添加nginx配置在server块里添加下面内容 # vim /usr/local/nginx/conf/nginx.conf location /lua { default_type text/plain; content_by_lua ngx.say(hello, lua); } # 检查语法 # /usr/local/nginx/sbin/nginx -t # 启动 # nginx # 测试 curl 127.0.0.1:80/lua 8、安装ngx_lua_waf # 进入目录 cd /user/local/src/ #解压目录 unzip master.zip -d /usr/local/nginx/conf/ # 更改目录名 mv /usr/local/nginx/conf/ngx_lua_waf-master /usr/local/nginx/conf/waf # 在nginx.conf的http段添加 lua_package_path /usr/local/nginx/conf/waf/?.lua; lua_shared_dict limit 10m; init_by_lua_file /usr/local/nginx/conf/waf/init.lua; access_by_lua_file /usr/local/nginx/conf/waf/waf.lua; # 在nginx.conf最外层添加用户运行user www;
#操作系统新增www用户
#useradd www # 创建日志目录 mkdir /usr/local/nginx/logs/hack chown www /usr/local/nginx/logs/hack
9、waf规则文件介绍
/usr/local/nginx/conf/waf/wafconf args里面的规则get参数进行过滤的 cookie是对请求过滤的cookie过滤 url是只在get请求url过滤的规则 post是只在post请求过滤的规则 whiteurl是白名单里面的url匹配到不做过滤 user-agent是对user-agent的过滤规则
/usr/local/nginx/conf/waf/ config.lua # 规则存放路径 RulePath /usr/local/nginx/conf/waf/wafconf/ # 是否开启攻击信息记录需要配置logdir attacklog on # log存储目录该目录需要用户自己新建切需要nginx用户的可写权限 logdir /usr/local/nginx/logs/hack/ # 是否拦截url访问 UrlDenyon # 是否拦截后重定向 Redirecton # 是否拦截cookie攻击 CookieMatchon # 是否拦截post攻击 postMatchon # 是否开启URL白名单 whiteModuleon # 填写不允许上传文件后缀类型 black_fileExt{php,jsp} # ip白名单多个ip用逗号分隔 ipWhitelist{127.0.0.1} # ip黑名单多个ip用逗号分隔 ipBlocklist{192.168.10.1} # 是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;) CCDenyoff # 设置cc攻击频率单位为秒. # 默认1分钟同一个IP只能请求同一个地址100次 CCrate100/60 # 告警内容 html [] 10、启动测试验证
# 加载Nginx # nginx -s reload
#访问带有参数的URL 四、经验总结
在NGWAF使用过程中,可以做到接收方向的流量全检测,但是响应方向的流量暂不支持检测,也不支持防篡改功能, http flood功能无法做反向探测。改造后的架构对性能影响较小,默认1秒超时,若超时waf依然没有响应,nginx自动转发.对nginx的压力暂时未达到瓶颈,且在当前架构中nginx支持横向扩容,所以不会影响nginx的并发。 同时nginx和waf之间的交互对http/1.1流量利用率有了提高,且所有的流量解析工作都是nginx完成,大大降低了waf的工作量。另外通过XXF头来记录源地址,保证了溯源的顺利进行。 There are many things that can not be broken 如果觉得本文对你有帮助欢迎点赞、收藏、评论