Nginx安装WAF
本文安装的WAF已不推荐,请移步Zhongkui-WAF,功能更多、更高效。
WAF简介
Web应用防火墙(英文:Web Application Firewall,简称: WAF)。
WAF用来防止Sql注入、XSS、SSRF、CC攻击、IP黑白名单、URL拦截访问等,从而保护我们的应用安全。
安装lua模块
因为使用的WAF模块是基于lua
的,所以要先安装lua模块
,让Nginx
支持lua
。
安装lua
的库:
yum install -y lua lua-devel
下载lua即时编译器LuaJIT:
wget -P /usr/local/src http://luajit.org/download/LuaJIT-2.0.5.tar.gz
这里有个坑,安装官网版本的LuaJIT,在后面安装lua-nginx-module
模块时会报错,所以改成openresty版本的:
wget -O /usr/local/src/LuaJIT-2.1-20220411.tar.gz https://github.com/openresty/luajit2/archive/v2.1-20220411.tar.gz
解压:
cd /usr/local/src
tar -zxvf LuaJIT-2.1-20220411.tar.gz
安装LuaJIT:
cd /usr/local/src/LuaJIT-2.1-20220411
make && make install PREFIX=/usr/local/luajit2-2.1
编辑/etc/profile文件,添加LuaJIT
环境变量:
export LUAJIT_LIB=/usr/local/luajit2-2.1/lib
export LUAJIT_INC=/usr/local/luajit2-2.1/include/luajit-2.1
加载lua库到ld.so.conf文件:
echo "/usr/local/LuaJIT/lib" >> /etc/ld.so.conf
执行动态链接库管理命令,让动态链接库为系统所共享:
ldconfig
下载Nginx模块,ngx_devel_kit
和lua-nginx-module
:
wget -O /usr/local/src/ngx_devel_kit-0.3.1.tar.gz https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1.tar.gzwget -O /usr/local/src/lua-nginx-module-0.10.14.tar.gz https://github.com/openresty/lua-nginx-module/archive/v0.10.14.tar.gz
这里还有个坑,lua-nginx-module
模块要下载v0.10.14
版本,之后的版本在启动Nginx时会报错。
分别解压两个模块到/usr/local/nginx-modules/
目录:
tar -zxvf ngx_devel_kit-0.3.1.tar.gz -C /usr/local/nginx-modules/
tar -zxvf lua-nginx-module-0.10.14.tar.gz -C /usr/local/nginx-modules/
安装Nginx时,通过configure
命令添加上面这两个模块:
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_secure_link_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module --without-http_fastcgi_module \
--without-select_module \
--without-poll_module \
--add-module=/usr/local/nginx-modules/ngx_devel_kit-0.3.1 \
--add-module=/usr/local/nginx-modules/lua-nginx-module-0.10.14 \
--with-ld-opt=-Wl,-rpath,/usr/local/luajit2-2.1/lib
在Nginx配置文件中添加配置:
location /lua { default_type 'text/html'; content_by_lua 'ngx.say("hello lua")'; }
浏览器访问项目地址/lua
,如果可以看到hello lua
,说明lua模块安装成功。
安装WAF
本文安装的是GitHub上一款开源的、基于lua-nginx-module
的WAF,GitHub地址。
wget -O /usr/local/src/ngx_lua_waf-master.zip https://github.com/loveshell/ngx_lua_waf/archive/refs/heads/master.zip
将WAF压缩包解压到Nginx目录下并命名为waf:
unzip -d /usr/local/nginx /usr/local/src/ngx_lua_waf-master.zip
mv /usr/local/nginx/ngx_lua_waf-master /usr/local/nginx/waf
修改nginx.conf,在http模块下添加waf相关配置:
lua_package_path "/usr/local/nginx/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/nginx/waf/init.lua;
access_by_lua_file /usr/local/nginx/waf/waf.lua;
waf目录下的config.lua
是配置文件,修改下waf配置文件所在的目录:
RulePath = "/usr/local/nginx/waf/wafconf/"
根据作者文档:
ngx_lua如果是0.9.2以上版本,建议正则过滤函数改为ngx.re.find,匹配效率会提高三倍左右。
修改init.lua
和waf.lua
两个文件,把ngx.re.match
替换为ngx.re.find
。
这里给一个已经修改好了的:
链接: https://pan.baidu.com/s/1qeI9lbnhphThXelIrsLvPA
提取码: 2vgf
重载Nginx配置文件:
nginx -s reload
浏览器访问测试:
http://xxxx/test?id=../etc/passwd
如果出现如下提示,说明waf配置生效:
配置文件说明:
RulePath = "/usr/local/nginx/conf/waf/wafconf/"--规则存放目录attacklog = "off"--是否开启攻击信息记录,需要配置logdirlogdir = "/usr/local/nginx/logs/hack/"--log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限UrlDeny="on"--是否拦截url访问Redirect="on"--是否拦截后重定向CookieMatch = "on"--是否拦截cookie攻击postMatch = "on" --是否拦截post攻击whiteModule = "on" --是否开启URL白名单black_fileExt={"php","jsp"}--填写不允许上传文件后缀类型ipWhitelist={"127.0.0.1"}--ip白名单,多个ip用逗号分隔ipBlocklist={"1.0.0.1"}--ip黑名单,多个ip用逗号分隔CCDeny="on"--是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)CCrate = "100/60"--设置cc攻击频率,单位为秒.--默认1分钟同一个IP只能请求同一个地址100次html=[[Please go away~~]]--警告内容,可在中括号内自定义备注:不要乱动双引号,区分大小写
Nginx安装WAF相关推荐
- Linux搭建waf防火墙,Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖...
Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖 Naxsi 是第三方 nginx 模块 ,它和 Modsecurity 都是开源 WAF ,但是它 ...
- 负载均衡—nginx实现waf
Nginx实现WAF 这个我们说下,基于Nginx的WAF,基本上分两大类,一种是基于第三方插件来实现,一种是使用lua语言通过Nginx-Lua整合到一起,就性能而言,我们推荐选择轻量级的lua来实 ...
- nginx openresty waf动态黑名单 白名单 、centos 、windows下部署
1.WAF 使用Nginx+Lua实现自定义WAF(Web application firewall) 参考网址https://github.com/unixhot/waf 功能列表: 支持IP白名单 ...
- nginx安装及安全配置和转发代理
Nginx安装 1. 新建用户和组 ngxuser:ngxuser groupadd ngxuser useradd -m -g ngxuser ngxuser #-m自动建立家目录,-g指定组 2 ...
- 使用阿里云服务器,nginx安装第三方ssl证书
使用阿里云服务器,nginx安装第三方ssl证书 环境 服务器:阿里云ECS 系统:Centos 7 ssl证书:DigiCert 1.准备好证书的证书私钥.证书文件 2.上传至服务器 3. ngin ...
- 基于 NGINX 的 WAF 配置方法之ModSecurity
基于Nginx的第7层应用防火墙(Web Application Firewall) 一.前言 Web applications – yours, mine, everyone's – are ter ...
- nginx安装、配置文件
认识Nginx: 1.nginx基本概念: 1.nginx是什么? a: Nginx 是一个高性能的http和反向代理的服务器,特点是占有内存较少,并发能力强,事实上nginx的并发能力确实在同类型的 ...
- 一、nginx 安装
添加官方 yum 源 1 vim /etc/yum.repos.d/nginx.rep 输入以下内容(OS为你的系统,OSRELEASE 系统版本) 1 [nginx] 2 name=nginx re ...
- Linux环境Nginx安装多版本PHP
关于Linux环境Nginx安装与调试以及PHP安装参考此文即可:http://blog.csdn.net/unix21/article/details/8544922 linux版本:64位Cent ...
最新文章
- 一句话总结等距映射(流形学习)
- mysql用户权限管理和增删改查操作
- IT人员需要获得的6个顶级的数据中心教育和认证
- iOS - 获取安装所有App的Bundle ID
- mysql索引优化实际例子_MySQL索引优化的实际案例分析
- 博客杂志CMS模板,wpdx3.6破解版源码WordPress主题
- Android Butterknife
- Python项目实践:BMI 身体质量指数
- powerdesigner中生成数据库脚本时出现长度限制问题的解决方法
- 图解deconvolution(transpose convolution)
- Matlab 中三角函数
- CodeForces 1389G Directing Edges 边联通分量缩点+树形dp+rerooting technique
- 我的微信公众号开通了!
- Python PrettyTable 模块(美化库)
- 计算机数制转换操作方法,计算机基础 数制及其相互转换
- 视觉传导通路,光能转化为神经电能后,神经电冲动如何传导?|小白心理-312/347考研答疑
- Android中的加密方法
- 关于电脑怎么连接隐藏的无线WiFi信号
- ADC芯片3421驱动程序
- VSCode中安装live server插件时出现Open a folder or workspace... (File -> Open Folder)错误
热门文章
- 机房志 | 一篇中二的文章
- ORACLE数据库中HAVING用法笔记
- 孩子厌学逃课怎么办,家长要从这3个方面入手,引导孩子爱上学习
- el表达式string强制转换成long报错
- 关于数据可视化Chartjs,Highcharts用法
- mysql revoke_MySQL REVOKE:删除用户权限
- Python实践:画个动图玩玩,Python绘制GIF图总结
- 《CoCoNuT: Combining Context-Aware Neural Translation Models using Ensemble for Program Repair》论文笔记
- 飞机大战(wsad上下左右,空格发射子弹,击中敌机加一分,分数达到10,20,30难度增加,敌机飞出显示屏幕游戏失败)
- OSChina 娱乐弹弹弹——人怕出名猪怕壮,红薯出名会怎样?